Skocz do zawartości

[ActionScript 3.0] Buttony i pętelki.


SSn4k3

Rekomendowane odpowiedzi

Witajcie,

mam pytanie do panów flashowców. Mam na scenie mapkę + listę rzeczy która się na tej mapce znajduje. Po najechaniu na dany element mapki(pasaz1_map) zmieniam alpha najechanego elementu + odpowiadającemu elementowi na liscie(pasaz1_btn). Teraz pytania:

 

1. Jak wyglądałaby pętelka(i czy da się w taki sposób) żebym nie musiał robić ręcznie kolejnych "pasaz2_btn, pasaz2_map"?

 

2. Czy da się zrobić eventlistenerem aby "nasłuchiwał" 2 elementy jednocześnie, tak żebym nie musiał robić:

 

pasaz1_btn.addEventListener(MouseEvent.MOUSE_OVER, pasaz1_info);

pasaz1_map.addEventListener(MouseEvent.MOUSE_OVER, pasaz1_info);

 

Kod:

pasaz1_btn.addEventListener(MouseEvent.MOUSE_OVER, pasaz1_info);
pasaz1_map.addEventListener(MouseEvent.MOUSE_OVER, pasaz1_info);
pasaz1_btn.addEventListener(MouseEvent.MOUSE_OUT, pasaz1a_info);
pasaz1_map.addEventListener(MouseEvent.MOUSE_OUT, pasaz1a_info);

function pasaz1_info(e:MouseEvent):void {
   var myTween:Tween = new Tween(pasaz1_map, "alpha", Strong.easeOut, 1, 0.5, 0.5, true);
   var myTween1:Tween = new Tween(pasaz1_btn, "alpha", Strong.easeOut, 1, 0.5, 0.5, true);
}

 

Pozdrawiam

Odnośnik do komentarza
Udostępnij na innych stronach

  • Odpowiedzi 3
  • Created
  • Ostatniej odpowiedzi

Top Posters In This Topic

Top Posters In This Topic

mozesz sobie zrobic jeden listener OnMouseMove (na caly obszar interaktywny) i tam w petli sprawdzac przeciecia (hit) z kazdym z podobszarow,

jesli tych obszarow nie jest duzo to nie bedzie bardzo mulic

 

najbardziej elegancko to sobie mozna to zrobic tak ze do kazdego z obszarow podlaczasz jeden i ten sam listener, a w listenerze sprawdzasz ktory obszar wygenerowal event -> patrz e:MouseEvent, masz tan pelne info o obiekcie ktory go

wygenerowal, zrobisz sobie drabinke z caseow, albo jesli nazwy masz uporzadkowane to sobie mozesz wygenerowac nazwy ktore uzywasz przy Tweenach

Odnośnik do komentarza
Udostępnij na innych stronach

troche kijowo ponazywałeś obiekty, ale :

var n:int = 40;

for (var i:int = 1; i {
this["pasaz" + i + "_btn"].addEventListener(MouseEvent.MOUSE_OVER, eventTweenOver);
this["pasaz" + i + "_map"].addEventListener(MouseEvent.MOUSE_OVER, eventTweenOver);
this["pasaz" + i + "_btn"].addEventListener(MouseEvent.MOUSE_OUT, eventTweenOut);
this["pasaz" + i + "_map"].addEventListener(MouseEvent.MOUSE_OUT, eventTweenOut);
}

i funkcje:

function eventTweenOver(e:MouseEvent):void
{
var s:String = e.currentTarget.name;
var index:int = int(s.slice(5, s.length - 4));
var element:DisplayObject = this["pasaz" + index + "_btn"];
var t:Tween = new Tween(element, "alpha", Strong.easeOut, 1, 0.5, 0.5, true);
}
function eventTweenOut(e:MouseEvent):void
{
var s:String = e.currentTarget.name;
var index:int = int(s.slice(5, s.length - 4));
var element:DisplayObject = this["pasaz" + index + "_btn"];
var t:Tween = new Tween(element, "alpha", Strong.easeOut, element.alpha, 1, 0.5, true);
}

 

a tak btw.. jak Ci się zaczną ciąć animacje, to się nie przejmuj, flash tak ma. Trzeba zrobić mase warunków aby używać klasy Tween, i ona działała w miarę logicznie. Polecam TweenLite/TweenNano/TweenPro dużo lepiej działa.

 

// sprzedam Opla

Edytowane przez BizU
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