2010-11-13 4 views
0

Я хочу создать пользовательское событие, и оно будет доступно любому другому классу. Предположим, у меня есть NavigationMenuClass.as, который содержит некоторые next, prev buttons, а другой класс: Page.as, который должен показывать конкретную страницу по каждому next или prev нажатием кнопки. И мне нужно создать настраиваемое событие (напишите EVENTClass.as для управления всеми этими событиями.) Называется "showPage", и когда это событие происходит, необходимо вызвать функцию члена класса page.as.Как запускать настраиваемое событие в ActionScript 3.0 из другого класса

private function nextPress(event:Event) { 
    //dispatchEvent(new Event("showPage")); 
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage(); 
} 

с амбулаторными передавая объект как я могу назвать конкретную функцию члена с помощью Event и Event Dispatcher методы.

ответ

5

Вы, похоже, смущены.

Итак, у вас есть иерархия отображения, в которой ваш экранный объект Page.as является родительским элементом NavigationMenuClass.as, правильно?

Ваш NavigationMenuClass должен отправлять события для 'next' и 'previous'. Класс страницы должен слушать эти события и что-то делать.

Ваш код уже отсылает часть, хотя она закомментирована. Я бы поставил это в обработчике щелчка вашей кнопки и использовать его для отправки на следующий или предыдущий, событие:

private function nextPress(event:Event) { 
    // dispatchEvent(new Event("showPage")); 
    // this will call the Page class Menmber function page:Page = new Page; page.showNextPage(); 
    dispatchEvent(new Event("next")); 
} 

В вашем Page.as вы просто добавить слушатель события:

navigationMenuClassInstance.addEventListener('next', onNext); 
public function onNext(event:Event):void{ 
    // write code to change content 
} 

Вы можете использовать тот же подход для реализации предыдущего события. Для решения некоторых из ваших «нечетных формулировками»

Я хочу создать пользовательское событие и будет доступен любым другим классом

Я не уверен, что вы имеете в виду доступными.
Вы можете создать собственный класс событий, который расширяет Event, и любой другой класс может использовать его, если он импортирует его. Мой пример выше не создает настраиваемый класс событий, но использует класс событий по умолчанию.

С точки зрения отправки, событие отправляется только до своего «родителя». Если событие пузырится, оно перейдет к его родительскому родителю, потом родительскому родителю и так далее по всей стадии.

с амбулаторными передавая объект как я могу назвать конкретную функцию члена с помощью событий и событий Диспетчер методы.

Я не уверен, что вы подразумеваете под «передачей объекта» здесь. Когда вы отправляете событие, этот класс событий всегда доступен слушателю событий в качестве аргумента для этого метода прослушивания событий. Это похоже на передачу объекта.

1

Также, следуя руководству Flextras, убедитесь, что NavigationMenuClass расширяет EventDispatcher, иначе просто вызов метода dispatchEvent() не будет работать!

+0

Он должен выбросить ошибку компилятора, если класс не расширяет EventDispatcher, не так ли? – JeffryHouser

+0

Он должен делать! :) – adamk

Смежные вопросы