Skocz do zawartości

ActionScript 3.0 Tween problem


torm

Rekomendowane odpowiedzi

witojcie witojcie...;)

 

mam mały problem z action scriptem, robię samochód, któremu po najechaniu mają zapalić się światła...

więc jest samochód... (movieClip), w nim znajdują się światła (movieClip), stworzyłem tween'a, który animuje alphę świateł po najechaniu na samochód. Problem jednak polega na tym, że gdy kursor wpadnie na światła, znów zaczynają się animować.

 

zagnieździłem już światła w movieClipie samochodu, żeby traktował je jak jeden obiekt, jednak nie bardzo to pomaga....

.. mam nadzieję, że ktoś coś z tego zrozumie.. :)

 

z góry dzięki za pomoc... ja wracam do walki, może jeszcze coś wymyślę...

 

gdyby ktoś potrzebował kodu:

lancia.addEventListener(MouseEvent.MOUSE_OVER, lanciaOver);

lancia.addEventListener(MouseEvent.MOUSE_OUT, lanciaOut);

 

 

function lanciaOver(event:MouseEvent):void {

var myTweenAlpha:Tween = new Tween(lancia.lanciaLights, "alpha", Strong.easeOut, 0, 1, 0.5, true);

}

 

function lanciaOut(event:MouseEvent):void {

var myTweenAlpha:Tween = new Tween(lancia.lanciaLights, "alpha", Strong.easeOut, 1, 0, 0.5, true);

}

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 9
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Hm masz obiekt lancia i obiekt light.

 

Dla obiektu lancia jest przypisana akcja, że mają się zapalić światła. No to jeśli wrzucisz obiekt light w obiekt lancia to akcja będzie wykonywana również wtedy gdy najedziesz kursorem na obiekt light.

Odnośnik do komentarza
Udostępnij na innych stronach

nie znam za bardzo AS2, dopiero siadłem do flasha... ale ja to widzę tak... mam obiekt lancia ( ) i teraz wkładam w to drugi obiekt, lights ( () ) IMO, lancia powinna być traktowana jako jeden obiekt, a nie dwa tylko, że o tych samych namiarach :)

ale jak widać flash traktuje lights jako dziecko, które przejmuje atrybuty rodzica... bardziej to życiowe niż logiczne ;)

Odnośnik do komentarza
Udostępnij na innych stronach

Aha, z tego co widzę problem polega na tzw. propagacji obiektów zdarzeń: http://help.adobe.com/pl_PL/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7e4f.html

 

Najlepiej jakbyś zrobił to:

Zatrzymywanie strumienia zdarzenia

 

Aby zapobiec przesuwaniu obiektu zdarzenia w strumieniu zdarzenia, należy wywołać metodę Event.stopPropagation() lub metodę Event.stopImmediatePropagation(). Obydwie te metody są niemal identyczne i odróżnia je tylko to, czy umożliwiają działanie innych detektorów zdarzeń bieżącego węzła:

 

Metoda Event.stopPropagation() zapobiega przesunięciu obiektu zdarzenia do kolejnego węzła, ale tylko wówczas, gdy możliwe jest uruchomienie innych detektorów zdarzeń w bieżącym węźle.

 

Metoda Event.stopImmediatePropagation() również zapobiega przesunięciu obiektu zdarzeń do kolejnego węzła, ale nie zezwala na uruchamianie innych detektorów zdarzeń w bieżącym węźle.

 

Wywołanie dowolnej z tych metod nie ma wpływu na to, czy wystąpi zachowanie domyślne skojarzone ze zdarzeniem. Aby zapobiegać zachowaniu domyślnemu, należy użyć metod zachowania domyślnego klasy Event.

 

a wiec u Ciebie powinno to wygladac tak:

 

lancia.addEventListener(MouseEvent.MOUSE_OVER, lanciaOver);

lancia.addEventListener(MouseEvent.MOUSE_OUT, lanciaOut);

 

 

function lanciaOver(event:MouseEvent):void {

event.stopPropagation();

var myTweenAlpha:Tween = new Tween(lancia.lanciaLights, "alpha", Strong.easeOut, 0, 1, 0.5, true);

}

 

function lanciaOut(event:MouseEvent):void {

event.stopPropagation();

var myTweenAlpha:Tween = new Tween(lancia.lanciaLights, "alpha", Strong.easeOut, 1, 0, 0.5, true);

}

Odnośnik do komentarza
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się



×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Wykorzystujemy cookies. Przeczytaj więcej Polityka prywatności