PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : setInterval stoppen


burnout
24.01.2007, 08:04
hi,


on(rollOver)
{

var MillSec:Number = 50;
var ID_Downbreak:Number;
var sliderYposMax:Number = 115;

function callDown():Void
{
mytext_mc._y = mytext_mc._y -= 1.6;
slider_mc._y = slider_mc._y += 1;
var momSliderPos = getProperty ("slider_mc",_y);


if( momSliderPos == sliderYposMax)
{
clearInterval (ID_Downbreak);

}

}
ID_Downbreak = setInterval(this,"callDown",MillSec);
}


on(rollOut)
{
clearInterval (ID_Downbreak);
}

bei erreichter posi soppt die funktion zwar,aber nach erneuten rollover ,scroll diese weiter.was muss ich tun damit es beim erneuten rollover ,wenn maximale posi erreicht ist stehen bleibt?!kann ich das überhaupt mit setinterval errreichen oder rechnet die funktion bei erneuten rollover immer die momentane _y posi von neuem und scrollt daher weiter?

thx


mnemonic
24.01.2007, 10:24
Generell macht der Code natürlich immer was Du programmiert hast. Wenn was nicht funktioniert liegt das wahrscheinlich nicht an setInterval, sondern eher an einem Logikfehler bei der Implementierung der Funktion.

Du solltest Dir veranschaulichen, was konkret passiert wenn Deine Funktion aufgerufen wird.
Betrachten wir einfach mal den Punkt, an dem die Bedingung wahr ist, also "momSliderPos == sliderYposMax" ist.
Wird das Interval jetzt erneut gesetzt, wird zuerst auf slider_mc._y addiert was dazu führt, dass die Bedingung nicht mehr wahr ist, da jetzt plötzlich gilt, dass "momSliderPos > sliderYposMax" ist und die gestellte Bedingung nie wieder wahr wird.

Du solltest also noch einmal die Struktur und Anordnung innerhalb Deiner Funktion durchdenken.

burnout
25.01.2007, 09:14
ich habs jetzt so gelöst..


on(rollOver)
{

var MillSec:Number = 50;
var ID_Downbreak:Number;
var sliderYposMax:Number = 115;



function callDown():Void
{
var momSliderPos = getProperty ("slider_mc",_y);
trace (momSliderPos);
if( momSliderPos < sliderYposMax)
{
mytext_mc._y = mytext_mc._y -= 1.6;
slider_mc._y = slider_mc._y += 1;
}
else if(momSliderPos > sliderYposMax)
{
clearInterval (ID_Downbreak);
}

}
ID_Downbreak = setInterval(this,"callDown",MillSec);
}


on(rollOut)
{
clearInterval (ID_Downbreak);
}


danke für die gedächtnisstütze ;)