Skocz do zawartości

ActionScript 3.0 Tween problem


Rekomendowane odpowiedzi

Napisano

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);

}

  • Odpowiedzi 9
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

Napisano

hmm skoro zagnieździłeś światła w obiekcie lancia to co w tym dziwnego, że jak najedziesz na światła to one się włączają jeśli to jeden obiekt?

Napisano

Grave - dzięki wielkie :)

zgred - hmm... no właśnie skoro to jeden obiekt, to dlaczego flash myśli, że trafił na inny obiekt, tylko o tej samej nazwie?

Napisano

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.

Napisano

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 ;)

Napisano

pierwszy raz widzę, by flash tak się zachowywał. Nie miałem takich problemów ani w as2 ani w as3. ale dobrze wiedzieć, ze moze sie kiedys pojawić taki problem.

Napisano

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);

}

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