Results 1 to 3 of 3

Thread: Contain Flying Planes Script to a certain area

  1. #1
    Join Date
    Feb 2007
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Contain Flying Planes Script to a certain area

    1) Script Title:
    Flying Planes Script

    2) Script URL (on DD):
    http://dynamicdrive.com/dynamicindex4/plane.htm

    3) Describe problem:
    I need help modifying this script so that the planes only fly within a certain area of my page. Depending on the users resolution this area can be in a different spot. Right now the area is simply a table cell but I can use <div>'s too.


    I've tried changing some numbers but can't seem to narrow it down and am not confident it will work in other browsers/resolutions.

    Thanks in advance

  2. #2
    Join Date
    Sep 2006
    Location
    St. George, UT
    Posts
    2,769
    Thanks
    3
    Thanked 157 Times in 155 Posts

    Default

    Try these changes in the script (changes in red):

    Code:
    <script language="JavaScript1.2">
    
    //Flying planes - by John Ely
    //Modified from: Autumn leaves script- by Kurt Grigg (kurt.grigg@virgin.net)
    //Modified by Dynamic Drive for NS6 functionality
    //visit http://www.dynamicdrive.com for this script
    
    //Pre-load your image below!
    //CHANGE 5 to the number of images listed below
    grphcs=new Array(5) 
    
    //PRELOAD the involved images (extend or contract variables according to # of images used)
    Image0=new Image();
    Image0.src=grphcs[0]="plane0.gif"
    Image1=new Image();
    Image1.src=grphcs[1]="plane1.gif"
    Image2=new Image();
    Image2.src=grphcs[2]="plane2.gif"
    Image3=new Image();
    Image3.src=grphcs[3]="plane3.gif"
    Image4=new Image();
    Image4.src=grphcs[4]="plane4.gif"
    
    //SPECIFY number of images to randomly display concurrently from list above. Less the more efficient
    Amount=3; 
    Ypos=new Array();
    Xpos=new Array();
    Speed=new Array();
    Step=new Array();
    Cstep=new Array();
    ns=(document.layers)?1:0;
    ns6=(document.getElementById&&!document.all)?1:0;
    ie=document.all
    
    if (ns){
    for (i = 0; i < Amount; i++){
    var P=Math.floor(Math.random()*grphcs.length);
    rndPic=grphcs[P];
    document.write("<LAYER NAME='sn"+i+"' LEFT=0 TOP=0 WIDTH=150><img src="+rndPic+"></LAYER>");
    }
    }
    else{
    document.write('<div style="position:absolute;top:0px;left:0px;width:150;"><div style="position:relative">');
    for (i = 0; i < Amount; i++){
    var P=Math.floor(Math.random()*grphcs.length);
    rndPic=grphcs[P];
    document.write('<img id="si'+i+'" src="'+rndPic+'" style="position:absolute;top:0px;left:0px">');
    }
    document.write('</div></div>');
    }
    WinHeight=(ns||ns6)?window.innerHeight-70:window.document.body.clientHeight;
    WinWidth=(ns||ns6)?window.innerWidth:window.document.body.clientWidth;
    for (i=0; i < Amount; i++){                                                                
     Ypos[i] = Math.round(Math.random()*WinHeight);
     Xpos[i] = Math.round(Math.random()*WinWidth);
     Speed[i]= Math.random()*5+1;
     Cstep[i]=0;
     Step[i]=Math.random()*0.1+0.05;
    }
    function fly(){
    var WinHeight=(ns||ns6)?window.innerHeight:window.document.body.clientHeight;
    var WinWidth=(ns||ns6)?window.innerWidth-70:window.document.body.clientWidth;
    var hscrll=(ns||ns6)?window.pageYOffset:document.body.scrollTop;
    var wscrll=(ns||ns6)?window.pageXOffset:document.body.scrollLeft;
    
    for (i=0; i < Amount; i++){
    sy = Speed[i]*Math.sin(Cstep[i]);
    sx = Speed[i]*2;
    Ypos[i]+=sy;
    Xpos[i]+=sx; 
    if (Xpos[i] > WinWidth){
    Ypos[i]=Math.round(Math.random()*WinHeight);
    Xpos[i]=-60;
    Speed[i]=Math.random()*5+1;
    }
    
    if (ns){
    document.layers['sn'+i].left=Xpos[i]+wscrll;
    document.layers['sn'+i].top=Ypos[i];
    }
    
    else if (ns6){
    document.getElementById("si"+i).style.left=Xpos[i]+wscrll;
    document.getElementById("si"+i).style.top=Math.min(WinHeight,Ypos[i]);
    }
    
    else{
    eval("document.all.si"+i).style.left=Xpos[i]+wscrll;
    eval("document.all.si"+i).style.top=Ypos[i];
    } 
    Cstep[i]+=Step[i];
    }
    setTimeout('fly()',20);
    }
    
    if (ie||ns||ns6)
    window.onload=fly
    //-->
    </script>
    Hope this helps.
    "Computer games don't affect kids; I mean if Pac-Man affected us as kids, we'd all be running around in darkened rooms, munching magic pills and listening to repetitive electronic music." - Kristian Wilson, Nintendo, Inc, 1989
    TheUnlimitedHost | The Testing Site | Southern Utah Web Hosting and Design

  3. #3
    Join Date
    Feb 2007
    Posts
    5
    Thanks
    0
    Thanked 0 Times in 0 Posts

    Default Thanks

    Thanks, that was what I started out with and ended up with several more changes. I made it good for one image only and set it so the image moves in a straight line (no sine wave). I still don't like how it just cuts off at the edges of my layer/div and want to implement a customizable delay before it flies over again and maybe put in a variable to set the number of flyovers there will be. The layer/div code was moved inside my table.

    More work and little time. Being that this is just an enhancement I am moving on with the site and will come back to this later.

    PHP Code:
    <script language="JavaScript1.2">
            
    //Flying planes - by John Ely
            //Modified from: Autumn leaves script- by Kurt Grigg (kurt.grigg@virgin.net)
            //Modified by Dynamic Drive for NS6 functionality
            //Modified by Jason Wagner for containment & quantity
            //visit http://www.dynamicdrive.com for this script

            
    ns=(document.layers)?1:0;
            
    ns6=(document.getElementById&&!document.all)?1:0;
            
    ie=document.all;
            
    delay 3;    //delay between loops in seconds
            
    dismissafter=3;
            
            
    WinHeight=1;
            
    WinWidth=500;        
            
            
    Ypos Math.round(Math.random()*WinHeight);
            
    Xpos Math.round(Math.random()*WinWidth);
            
    SpeedMath.random()*2+1;    
            
    Step=Math.random()*0.1+0.05;

            function 
    fly(){        
                
    sy Speed*Math.sin(Step);
                
    sx Speed*2;
                
    Ypos+=sy;
                
    Xpos+=sx;
                
                
    //wrap the animation back to the left side
                
    if (Xpos WinWidth){
                    
    //setTimeout('reset()',delay*1000);
                    
    reset();
                } else {        
                    
    //position the image element
                    
    if (ns){
                        
    document.layers['sn'].left=Xpos;
                        
    document.layers['sn'].top=Ypos;
                    } 
                    else if (
    ns6) {
                        
    document.getElementById("si").style.left=Xpos;
                        
    document.getElementById("si").style.top=Math.min(WinHeight,Ypos);
                    } 
                    else {
                        eval(
    "document.all.si").style.left=Xpos;
                        eval(
    "document.all.si").style.top=Ypos;
                    } 
                    
    Step++;            
                }            
                
                
    //keep the animation going
                
    setTimeout('fly()',100); //execute the script after waiting 1/10 of a second
            
    }

            function 
    reset(){
                
    Ypos=Math.round(Math.random()*WinHeight);        //reset the y-coordinate
                
    Xpos=-10;                                        //reset the x-coorinate, use - so it flys in
                
    Speed=Math.random()*5+1;                        //reset the speed            
            
    }
            
            
    //start the animation
            
    if (ie||ns||ns6)
                
    //window.onload=fly
        //-->
        
    </script> 

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •