Newsgroup: it.comp.lang.javascript
Titolo: animazione

in passato affrontai questo problema, ed ora che sono finite le vacanze
l'ho ripreso per risolverlo solo che le due animazioni da sole
funzionano, mentre quando me unisco facendo chiamare una dalla prima, le
cose non fungono!
ho visto che nessuno di voi ha risolto l'animazione.
era forse che non sono riuscito a spiegarmi o perche il problema e' di
ardua soluzione?
cerco di rispiegare gli obbiettivi e sotto metto il codice completo per
chi vuole testarlo direttamente.
da considerare che:
parte lo shapeA e continua la sua corsa scomparendo sul lato destro
dello screen
quando lo shapeA raggiunge la posizione di 200px da lato sin dello
screen, parte lo shapeB
lo shapeB arrivato al centro dello screen si ferma e resta li.
questo il codice completo:
<html>
<head>
<title>animazione</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<META content="MSHTML 5.00.2614.3500" name=GENERATOR>
<META content="" name=Author>
<META content="" name=KeyWords>
<META content="" name=Description>
<SCRIPT LANGUAGE=javascript>
<!--
function Is() {
    var agent = navigator.userAgent.toLowerCase();
    this.major = parseInt(navigator.appVersion);
    this.minor = parseFloat(navigator.appVersion);
    this.ns  = ((agent.indexOf('mozilla')!=-1) &&
((agent.indexOf('spoofer')==-1) && (agent.indexOf('compatible') ==
-1)));
    this.ns2 = (this.ns && (this.major == 2));
    this.ns3 = (this.ns && (this.major == 3));
    this.ns4b = (this.ns && (this.major == 4) && (this.minor <= 4.03));
    this.ns4 = (this.ns && (this.major >= 4));
 
this.ie
   = (agent.indexOf("msie") != -1);
    this.ie3  = (
this.ie
 && (this.major == 2));
    this.ie4  = (
this.ie
 && (this.major >= 4));
    this.op3 = (agent.indexOf("opera") != -1);
}
var is = new Is()
if(is.ns4) {
    doc = "document";
    sty = "";
    htm = ".document"
} else if(is.ie4) {
    doc = "document.all";
    sty = ".style";
    htm = ""
}
function init() {
  if(is.ns4) {
	available_width=innerWidth;
    available_height=innerHeight;
  } else if(is.ie4) {
    available_width=document.body.clientWidth;
    available_height=document.body.clientHeight;
  }
 
 
	shapeAObj = eval(doc + '["shapeA"]' + sty);
    shapeAObj.left = 0;
    shapeAObj.top = 0;
 
	shapeBObj = eval(doc + '["shapeB"]' + sty);
    shapeBObj.left = 200;
    shapeBObj.top = 0;
 
    startAnimazione()
}
var x_posA=new Array();
var x_posB=new Array();
var x_posC=new Array(); 
function startAnimazione(){
	//qui indicizzo le variabili
 	var x_posA = parseInt(shapeAObj.left);
 	var x_posB = x_posA+200
 
   //fino a che lo shapeA non ha raggiunto la 
  // posizione 200px oltre il lato destro dello screen
    if(x_posA < available_width+200) {
  //fai avanzare di 8px per volta lo shapeA
        shapeAObj.left = x_posA+8;
// se la posizione dello shapeA e' uguale o magg. della posizione di
200px
       if(x_posA => x_posB){
//passa alla seconda animazione
	   animashapeB()
	   return
	}
}
//se mettessi invece che a 1 ad es. a 1000 millisec. lo shape si
muoverebbe
// di 8 px ogni 1 secondo!
        setTimeout("startAnimazione()", 1);
 
}
function animashapeB(){
	var x_posC = parseInt(shapeBObj.left); 
	//fino a che la posizione dello shapeB non 
              // raggiunge il centro dello screen
	if(x_posC < (available_width)/2 {
 	//fallo avanzare di 8px per volta
        shapeAObj.left = x_posC+8;
 
		setTimeout("animashapeB()", 1);
	}
}
// -->
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" onLoad="init()" scroll=no
onResize="history.go(0)"  >
<div id="shapeA" style="position:absolute;  width:57px; height:47px;
z-index:2; left: 28px; top: 9px; visibility: hidden; background-color:
#0000FF; layer-background-color: #0000FF; border: 1px none
#000000"></div>
<div id="shapeB" style="position:absolute;  width:51px; height:49px;
z-index:2; left: 28px; top: 9px; visibility: hidden; background-color:
#FF0000; layer-background-color: #FF0000; border: 1px none
#000000"></div>
</body>
</html>
ciao 
Ivo
-- 
Posted from 
rm6-922.dialup.tiscalinet.it
 [62.11.143.218] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

lo shapeB arrivato al centro dello screen si ferma e resta li.
Ho modificato una cosa di qualche tempo fa,
cosi' funziona con quasi tutti i browser IE NS NN OP.
Dovrebbe essere quello che cercavi.
<html>
<head>
<title>animazione</title>
<SCRIPT LANGUAGE=javascript>
function gfC_brDom() {
this.gfC_op5=(navigator.appName=="Opera"&&parseInt(navigator.appVersion)>=5)
this.gfC_ns4=(navigator.appName=="Netscape"&&parseInt(navigator.appVersion)=
=4)
this.gfC_ns5=(navigator.appName=="Netscape"&&parseInt(navigator.appVersion)=
=5)
    this.gfC_ie4=(navigator.appName=="Microsoft Internet
Explorer"&&parseInt(navigator.appVersion)>=4&&parseInt(navigator.appVersion)
<5)
    this.gfC_ie5=(navigator.appName=="Microsoft Internet
Explorer"&&parseInt(navigator.appVersion)>=5)
    this.gfC_all=(this.gfC_ie4)
 this.gfC_elm=(this.gfC_ns5||this.gfC_ie5||this.gfC_op5)
 this.gfC_lay=(this.gfC_ns4)
}
gfC_bV = new gfC_brDom();
var gfC_dcA=false,gfC_dcE=false,gfC_dcL=false;
gfC_bV.gfC_elm?gfC_dcE=true:gfC_bV.gfC_all?gfC_dcA=true:gfC_bV.gfC_lay?gfC_d
cL=true:false;
function init() {
available_width=(gfC_dcA||gfC_bV.gfC_ie5?document.body.offsetWidth-document.
body.scrollLeft:innerWidth-pageXOffset);
available_height=(gfC_dcA||gfC_bV.gfC_ie5?document.body.offsetHeight-documen
t.body.scrollTop:innerHeight-pageYOffset);
shapeAObj=eval((gfC_dcL?"document.layers":gfC_dcA?"document.all":"document.g
etElementById")+(!gfC_dcE?"['shapeA']":"('shapeA')")+(gfC_dcL?"":".style"));
shapeBObj=eval((gfC_dcL?"document.layers":gfC_dcA?"document.all":"document.g
etElementById")+(!gfC_dcE?"['shapeB']":"('shapeB')")+(gfC_dcL?"":".style"));
    parteBObj=200;
    passo=10
    attesa=1
    startAnimazione()
}
function
rtAnimazione(){ 
    parseInt(shapeAObj.left)< (available_width+50)?shapeAObj.left=(parseInt(shapeAObj.left)+passo):clearTimeout(document.sTan);
    parseInt(shapeAObj.left)>=parteBObj?parseInt(shapeBObj.left)< (available_width/2-30)?shapeBObj.left=(parseInt(shapeBObj.left)+passo):null:null;
    document.sTan=setTimeout("startAnimazione()",attesa);
}
</SCRIPT>
</head>
<body bgcolor="#FFFFFF" onLoad="init()" scroll=no onResize="history.go(0)"  >
<div id="shapeA" style="position:absolute;  width:60px; height:47px;
z-index:2; left: 0; top: 0; visibility: visible; background-color:
red; layer-background-color: red; border: 1px none
#000000"></div>
<div id="shapeB" style="position:absolute;  width:60px; height:49px;
z-index:2; left: 0; top: 0; visibility: visible; background-color:
green; layer-background-color: green; border: 1px none
#000000"></div>
</body>
</html>
--
Ciao
  [[web].
www.gfcarlotti.it
]
  [[mail].
fra...@gfcarlotti.it
]