Jump to content
  • 0

Два скрипта с разным отображением.


Roldo
 Share

Question

Проблема! Есть два скрипта, один - плавающая по экрану рыбка, другой - птицы, пролетающие с левого края страницы на правый. Вот коды:

Рыбка:

var speed=50;						 // SPEED OF ANIMATION IN MILLISECONDS.
var change=5000; // MAX TIME BETWEEN DIRECTION CHANGES IN MILLISECONDS.
var xmax=3; // MAX NUMBER OF PIXEL STEPS LEFT OR RIGHT.
var ymax=5; // MAX NUMBER OF PIXEL STEPS UP OR DOWN.
var fishRurl="fishr.gif"; // THE URL OF THE RIGHT-FACING FISH
var fishLurl="fishl.gif"; // THE URL OF THE LEFT-FACING FISH

var w3c=(document.getElementById)?true:false;
var ns4=(document.layers)?true:false;
var ie4=(document.all && !w3c)?true:false;
var ie5=(document.all && w3c)?true:false;
var ns6=(w3c && navigator.appName.indexOf("Netscape")>=0)?true:false;
var w_x, w_y, bothfish,pich,picw;
var incrx=Math.floor(Math.random()*xmax);
var incry=Math.floor(Math.random()*ymax);
var xdir=true;
var ydir=true;
var imagex=new Image(); imagex.src=fishLurl;
var t=(ns4)? '<layer name="bothfish" top="-100" left="0">' : '<div id="bothfish" style="position:absolute; top:0px; left;0px; width:1px; height:1px">';
t+='<img src="'+fishRurl+'" border="0" name="fishpic">';
t+=(ns4)?'</layer>':'</div>';
document.write(t);

function getid(id){
if(ns4) return document.layers[id];
else if(ie4)return document.all[id];
else return document.getElementById(id);
}

function moveidto(id,x,y){
if(ns4)id.moveTo(x,y);
else{
id.style.left=x+'px';
id.style.top=y+'px';
}}

function moveidby(id,x,y){
if(ns4)id.moveBy(x,y);
else{
id.style.left=parseInt(id.style.left)+x+'px';
id.style.top=parseInt(id.style.top)+y+'px';
}}

function getwindowsize(){
if(ie4||ie5){
w_x=document.body.clientWidth;
w_y=document.body.clientHeight-200;
}else{
w_x=window.innerWidth-15;
w_y=window.innerHeight-205;
}}

function changedirs(){
if(Math.floor(Math.random()*5)>2)xdir=(Math.floor(Math.random()*2)==0);
if(Math.floor(Math.random()*5)>2)ydir=(Math.floor(Math.random()*2)==0);
if(Math.floor(Math.random()*5)>2)incrx=Math.floor(Math.random()*xmax);
if(Math.floor(Math.random()*5)>2)incry=Math.floor(Math.random()*ymax);
checkdirs();
setTimeout('changedirs()',Math.ceil(Math.random()*change));
}

function checkdirs(){
if(xdir) (ns4)? bothfish.document.images["fishpic"].src=fishRurl:document.images["fishpic"].src=fishRurl;
else (ns4)? bothfish.document.images["fishpic"].src=fishLurl:document.images["fishpic"].src=fishLurl;
}

function animate(){
tx=(ns4)?bothfish.left:parseInt(bothfish.style.left);
ty=(ns4)?bothfish.top:parseInt(bothfish.style.top);
if(ie4||ie5){
xo=document.body.scrollLeft;
yo=document.body.scrollTop+200;
}else{
xo=window.pageXOffset;
yo=window.pageYOffset;
}
if(ydir) if((ty+incry+pich)>(w_y+yo)){ydir=false; checkdirs(); moveidby(bothfish,0,-incry);}else{ moveidby(bothfish,0,incry); }
else if((ty-incry)<yo){ ydir=true; checkdirs(); moveidby(bothfish,0,incry); }else{ moveidby(bothfish,0,-incry); }
if(xdir) if((tx+incrx+picw)>(w_x+xo)){ xdir=false; checkdirs(); moveidby(bothfish,-incrx,0); }else{ moveidby(bothfish,incrx,0); }
else if((tx-incrx)<xo){ xdir=true; checkdirs(); moveidby(bothfish,incrx,0); }else{ moveidby(bothfish,-incrx,0); }
}

window.onresize=function(){
if(ns4)setTimeout('history.go(0)',400);
else getwindowsize();
}

window.onload=function(){
bothfish=getid('bothfish');
if(ns4){
picw=bothfish.document.images['fishpic'].width;
pich=bothfish.document.images['fishpic'].height;
}else{
picw=document.images['fishpic'].width;
pich=document.images['fishpic'].height;
}
getwindowsize();
moveidto(bothfish,(w_x-picw)/2,(w_y-pich)/2);
setInterval('animate()',speed);
changedirs();
}

Птицы:

var xoff = 0;
var xoff2 = 0;
var yoff = 70;
var yoff2 = 25;
var inc2 = 3
var inc = 5;
function move() {
xoff += inc;
if (xoff>document.body.clientWidth) {xoff=0;}
ball.top = yoff;
ball.left = xoff;
setTimeout("move()", 50);}

function move2() {
xoff2 += inc2;
if (xoff2>document.body.clientWidth) {xoff2=0;}
bird2.top = yoff2;
bird2.left = xoff2;
setTimeout("move2()", 50);}

var NN = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4);
var ball = (NN) ? document.ball : document.all.ball.style;
move();

var NN2 = (navigator.appName == "Netscape" && parseInt(navigator.appVersion) >= 4);
var bird2 = (NN2) ? document.bird2 : document.all.bird2.style;
move2();

Отображаются они на этой странице - http://roldotech.jino-net.ru , можете посмотреть. Так вот, они все по разному работают в браузерах - ИЕ, опере и ФФ, причем в опере 9.24 работает не так, как в Опере 9.5! Птицы в одном браузере торчат внизу экрана, в другом - нормально летают. Рыба в одном браузере не может выплыть за поверхность, потому что стоит ограничитель положения, в другом браузере выплывает к верхнему краю экрана. Может кто-нибудь обьяснить, почему так происходит, и подсказать, как сделать везде одинаково? Я сам в этих скриптах не силен, переделал готовые, и вот такая фигня.

Link to comment
Share on other sites

1 answer to this question

Recommended Posts

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy