Volledige versie bekijken : CS3/AS2.0 browser kan script niet aan?
Freek
%Europe/Berlin %558 %2008, 13:24
Ziet iemand waarom dit script de browser stoort? Het lijkt alsof de ene interval door blijft gaan, als de andere al gestart is.
import mx.transitions.Tween;
import mx.transitions.easing.*;
setit = function(){
var myVerTween:Tween = new Tween(_level0.ref_mc.refTXTmc.refTXT, "_y", Regular.easeOut, _level0.ref_mc.refTXTmc.refTXT._y, _level0.ref_mc.refTXTmc.refTXT._y-26.5, 1, true);
scrollY = _level0.ref_mc.refTXTmc.refTXT._height*-1
if(_level0.ref_mc.refTXTmc.refTXT._y <= scrollY){
clearInterval(iv);
delete iv
var bv = setInterval(setitback,3000);
}
}
setitback = function(){
var myVerTween:Tween = new Tween(_level0.ref_mc.refTXTmc.refTXT, "_y", Regular.easeOut, _level0.ref_mc.refTXTmc.refTXT._y, _level0.ref_mc.refTXTmc.refTXT._y+26.5, 1, true);
if(_level0.ref_mc.refTXTmc.refTXT._y >= 0){
clearInterval(bv);
delete bv
var iv = setInterval(setit,3000);
}
}
var iv = setInterval(setit,3000);
Jan
%Europe/Berlin %605 %2008, 14:31
Ik begrijp eerlijk gezegd weinig van wat je daar allemaal hebt staan. Ook die _level0, delete, clearInterval etc ... :S
En ook je if statement daar moet je eens over nadenken:
scrollY = _level0.ref_mc.refTXTmc.refTXT._height*-1
if(_level0.ref_mc.refTXTmc.refTXT._y <= scrollY)
//da's dus hetzelfde als vragen:
if(_level0.ref_mc.refTXTmc.refTXT._y <= _level0.ref_mc.refTXTmc.refTXT._height*-1)
//of: if(a<=a*-1)
Dat staat ook nog eens in een interval dus da's om de 3 seconden waar en dan waar niet waar. :S
Misschien eens uitleggen wat hier allemaal de bedoeling van is. [?]
Misschien ook eens googlen op onMotionChanged() (eventhandler van de Tween class)
Groeten,
Jan
Freek
%Europe/Berlin %629 %2008, 15:06
Even een uitleg dus:
import mx.transitions.Tween;
import mx.transitions.easing.*;
// importeren van de tween en easing class
// functie om een movieClip met text onder een masker naar boven te bewegen.
setit = function(){
var myVerTween:Tween = new Tween(_level0.ref_mc.refTXTmc.refTXT, "_y", Regular.easeOut, _level0.ref_mc.refTXTmc.refTXT._y, _level0.ref_mc.refTXTmc.refTXT._y-26.5, 1, true);
// scrollY = _level0.ref_mc.refTXTmc.refTXT._height*-1 <-- tuurlijk kun je dit weg laten tenzij je die variable ergen anders weer gebruikt... maar goed.
if(_level0.ref_mc.refTXTmc.refTXT._y <= _level0.ref_mc.refTXTmc.refTXT._height*-1){ // check of de tekst al helemaal verschoven, dus is de onderste regel van de tekst nu in beeld?
clearInterval(iv);//interval weghalen
delete iv// als test gedaan, omdat er een storing was
var bv = setInterval(setitback,3000);//nieuwe interval instellen
}
}
// functie om een movieClip met text onder een masker naar beneden te bewegen.
setitback = function(){
var myVerTween:Tween = new Tween(_level0.ref_mc.refTXTmc.refTXT, "_y", Regular.easeOut, _level0.ref_mc.refTXTmc.refTXT._y, _level0.ref_mc.refTXTmc.refTXT._y+26.5, 1, true);
if(_level0.ref_mc.refTXTmc.refTXT._y >= 0){// check of de tekst al helemaal verschoven, dus is de bovenste regel van de tekst nu in beeld?
clearInterval(bv);
delete bv
var iv = setInterval(setit,3000);
}
}
var iv = setInterval(setit,3000);//interval aanzetten voor 1e keer.
Kijk voor een voorbeeld op: www.experienz.nl/topartiest (http://www.experienz.nl/topartiest) linksonderin zie je een lijst met referenties bewegen.
Ik zal eens kijken naar onMotionChanged()
Jan
%Europe/Berlin %640 %2008, 15:21
Door "var" te gebruiken binnen een function body houden die variabele op te bestaan erbuiten. Als je dus een variabele uit 1 functie wil gebruiken in een andere moet je die eerst buiten alle functies aanmaken.
var bv = setInterval(setitback,3000);//nieuwe interval instellen
Die var "bv" bestaat enkel binnen de functie waar je de var aanmaakt en kan je dus buiten die functie niet clearen of deleten.
_level0 wordt nooit gebruikt. da's gewoon _root en dat is ten allen tijden af te raden.
var iv = setInterval(setit,3000)
Zo declareer je die variabele niet in Action Script.
var iv:Number:setInterval(setit,3000)
En: if (a < -a) of if (a < a*-1) ... da's toch altijd waar :S
Groeten,
Jan
Freek
%Europe/Berlin %654 %2008, 15:42
Okay, bedankt! Ik zal dat met die variabele proberen, maar is het niet zo dat de interval op deze manier bij het definiëren buiten de functie gelijk start?
var iv:Number:setInterval(setit,3000)
var bv:Number:setInterval(setitback,3000)
Wat dat _level0 betreft, swf's opgeroepen binnen ander swf praten zo toch met hun "moeder". Zeker als ik voor het gemak met andere functies "this._lockroot = true;" gebruik.
En: if (a < -a) of if (a < a*-1) ... da's toch altijd waar :S
if(a._y <= a._height*-1) is toch een goede vergelijking?!
[edit/ tikfout]
Jan
%Europe/Berlin %659 %2008, 15:49
Okay, bedankt! Ik zal dat met die variabele proberen, maar is het niet zo dat de interval op deze manier bij het definiëren buiten de functie gelijk start?
Ja, maar je zou hem gelijk kunnen clearen.
Misschien is setTimeout hier meer aangewezen en ook onMotionFinished() kan nuttig zijn.
Wat dat _level0 betreft, swf's opgeroepen binnen ander swf praten zo toch met hun "moeder". Zeker als ik voor het gemak met andere functies "this._lockroot = true;" gebruik.
ah zo...:S
vermijd gewoon _root en gebruik this en this._parent ;)
Groeten,
Jan
Freek
%Europe/Berlin %547 %2008, 13:08
var iv = setInterval(setit,3000)
Zo declareer je die variabele niet in Action Script.
var iv:Number:setInterval(setit,3000)
Daar zullen we voor de duidelijkheid even
var iv:Number = setInterval(setit,3000)
van maken :)
Jan
%Europe/Berlin %574 %2008, 13:47
import mx.transitions.Tween;
import mx.transitions.easing.*;
var verschuifWaarde:Number=26.5;
var richting:Number=-1;
var mc:MovieClip=ref_mc.refTXTmc.refTXT;
function verschuiven()
{
trace("mc._y= "+mc._y +" en richting = "+ richting);
if(mc._y <= -mc._height)
{
richting=1;
}
if(mc._y >= 0)
{
richting=-1;
}
var myVerTween:Tween = new Tween(mc, "_y", Regular.easeOut, mc._y, mc._y+verschuifWaarde*richting, 1, true);
}
var verschuivenI:Number = setInterval(verschuiven,3000);
Groeten,
Jan
vBulletin® v3.8.1, Copyright ©2000-2012, Jelsoft Enterprises Ltd.