Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Alexandre Trevisan

Erro em for + getChildByName

Recommended Posts

Boa noite, eu estou tentando fazer um banner com varios MovieClips que passam por um timer, mas depois de mexer muito no código eu obtive um erro 1009, e quando consegui consertar ele, o "for" está passando direto por tudo e só passa o ultimo MovieClip.

 

Abaixo segue o código:

 

 

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event
import flash.display.MovieClip

;

for (var i:int=0; i < 8;i++)
{

var ani:MovieClip;
ani=MovieClip(getChildByName("bk"+i))

var timerdt1:Timer = new Timer(1000, 1);//create the timer
timerdt1.addEventListener(TimerEvent.TIMER, doNextTweendt1);
timerdt1.start();

function doNextTweendt1(e:TimerEvent):void

{
 var myTweenAlphadt1:Tween = new Tween(ani, "x", Strong.easeOut, 217.55, 7.75, 1, true);
 timerdt1.removeEventListener(TimerEvent.TIMER, doNextTweendt1);
}


var timerleavedt1:Timer = new Timer(2500, 1);//create the timer
timerleavedt1.addEventListener(TimerEvent.TIMER, doNextTweenleavedt1);
timerleavedt1.start();

function doNextTweenleavedt1(e:TimerEvent):void{
 var myTweenAlphaleavedt1:Tween = new Tween(ani, "x", Strong.easeOut, 7.75, -200, 1, true);
 timerleavedt1.removeEventListener(TimerEvent.TIMER, doNextTweenleavedt1);

}
}

 

Alguem sabe como fazer com que os MovieClips "bk" passem na ordem correta de 1 a 7, e não pule direto para o ultimo da função?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você está perdendo a referencia dos elementos .

 

Talvez isso funcione:

 

import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.utils.Timer;
import flash.events.TimerEvent;
import flash.events.Event;
import flash.display.MovieClip;
import flash.utils.setInterval;
import flash.utils.clearInterval;


// Cria uma lista para guardar os MovieClip
var lista:Vector.<MovieClip> = new Vector.<MovieClip>();
for (var i:int=0; i<8; i++)
{
// Adicionando os MovieClip a lista
lista.push (MovieClip(getChildByName("bk" + i)));
}
// Indica qual dos MovieClip da lista sera executado
var indice:int = 0;

var intervalo:int;

intervalo = setInterval(doNextTweendt1,1000);
function doNextTweendt1 ():void
{
// Animando o indice atual
var myTweenAlphadt1:Tween = new Tween(lista[indice],"x",Strong.easeOut,217.55,7.75,1,true);
clearInterval (intervalo);
intervalo = setInterval(doNextTweenleavedt1,2500);
}
function doNextTweenleavedt1 ():void
{
// Animando o indice atual
var myTweenAlphaleavedt1:Tween = new Tween(lista[indice],"x",Strong.easeOut,7.75,-200,1,true);
// Seguindo para o proximo item
indice++;
clearInterval (intervalo);
if (indice < lista.length)
{
	intervalo = setInterval(doNextTweendt1,1000);
}
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Opa, vlw ae pela ajuda Foxn, mas o código ainda apresenta um erro.

TypeError: Error #1009: Não é possível acessar uma propriedade ou um método de uma referência de objeto nula.
at fl.transitions::Tween/setPosition()
at fl.transitions::Tween/set position()
at fl.transitions::Tween()
at layout_fla::MainTimeline/doNextTweendt1()[layout_fla.MainTimeline::frame1:28]
at Function/http://adobe.com/AS3/2006/builtin::apply()
at SetIntervalTimer/onTimer()
at flash.utils::Timer/_timerDispatch()
at flash.utils::Timer/tick()

Mais especificamente na linha :

var myTweenAlphadt1:Tween = new Tween(lista[indice],"x",Strong.easeOut,217.55,7.75,1,true);

 

Acredito que ele não esta reconhecendo "indice" como parte da lista, ou não está somando ele aparentemente.

 

EDIT: O maior problema do banner mesmo é que ele tem que ter menos de 30kb, e mesmo sendo tudo vetor ele esta ficando com 60~70kb porque os "bk" estão no stage, para diminuir eu teria que fazer um load direto da library, e para fazer isso neste código, teria que ser feito com um array que puxasse os nomes de Linkage dentro do for não?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.