Jedną z najtrudniejszych rzeczy dla programistów AS2 oraz ludzi, którzy zaczynają przygodę z ActionScript 3 jest wywołanie funkcji na odpowiedź jakieś wywołanej akcji np. naciśnięcie klawisza z klawiatury lub naciśnięcie klawisza myszki nad pewnym obiektem.
W tym celu potrzebujemy funkcji wbudowanej jako nasłuchiwacza, czyli takiej funkcji, która rozpoznaje kiedy dana akcja została przeprowadzony, przez kogo oraz jaką akcję wykonać jeśli taka sytuacja wystąpi.
addEventListener, bo przecież o nim mowa przyjmuje sporo argumentów, jednak tylko dwa pierwsze są przymusowe. Powinien być on również poprzedzony znakiem kropki oraz obiektem do którego należy. Prototyp wygląda następująco:
obiekt_mc.addEventListener(NAZWA_AKCJI, nazwa_funkcji);
Teraz czas na praktyczny przykład. Tworzymy navigacje (menu) w AS3 i mamy 3 linki, które powinny odwołać się do funkcji wyswietl_adres(), podając adres WWW, a więc napiszemy to następujaco:
var mc_1:DynamicznaKlasa = new DynamicznaKlasa;
var mc_2:DynamicznaKlasa = new DynamicznaKlasa;
var mc_3:DynamicznaKlasa = new DynamicznaKlasa;
//dodawanie adresów do każdej zmiennej
mc_1.adres = "strona1.html";
mc_2.adres = "strona2.html";
mc_3.adres = "strona3.html";
//dodanie nasłuchiwaczy do akcji na naciśnięcie klawisza myszki
mc_1.addEventListener(MouseEvent.CLICK, wyswietl_adres);
mc_2.addEventListener(MouseEvent.CLICK, wyswietl_adres);
mc_3.addEventListener(MouseEvent.CLICK, wyswietl_adres);
//funkcja przekierowująca na adres
function wyswietl_adres(e:MouseEvent):void {
var url:String = e.currentTarget.adres;
var request:URLRequest = new URLRequest(url);
try {
navigateToURL(request, "_self");
} catch (e:Error) {
trace("Wystąpił błąd!");
}
Wystraczy spojrzeć na przykłąd powyżej i wiadomo, że do tego celu użyliśmy dynamicznie stworzonej klasy oraz własnej dodatkowej wlaściwości, która przetrzymuje nasz adres do przekierowania.
Przykład na stronie: http://funkcje.net/view/12/23/2535/index.html Pokazuje ten przykład w zanimowanej wersji menu, które korzysta z wartości FlashVars.
Listing
Ranga: Administrator serwisu Punktów: 0