Просмотр полной версии : метод главного класса
Здравствуйте, столкнулся с такой проблемой. Есть главный класс main в котором создаётся класс плеера. У плеера есть метод setSong . Так же в классе main есть класс SongBox , который в свою очередь состоит из классов Song. в классе Song стоит слушатель на клик, при котором должны отправляться параметры в метод setSong. Как грамотно можно разрешить эту ситуацию?
В слушателе клика нужно диспатчить ивент с нужными данными, а на верху его слушать
спасибо за оперативный ответ, буду пробовать
Добавлено через 15 минут
Никогда не создавал свои события, пробую вот так, не работает:
main:
SoundBox.addEventListener(Event.PLAY, function test() {trace('wroked'); });
song:
this.addEventListener(MouseEvent.CLICK, function cl(){
EventDispatcher(new Event('PLAY'));
});
SoundBox.addEventListener('PLAY', function test() {trace('wroked'); });
вот так его слушайте и все получится
спасибо, но тепреь пишет Ошибка типа Coercion: невозможно преобразовать flash.events::Event@cca4a61 в flash.events.EventDispatcher.
song:
this.addEventListener(MouseEvent.CLICK, clickHandler);
private function clickHandler(event : MouseEvent):void{
this.dispatchEvent(new Event("PLAY"));
}
При этом Song должен наследоваться от эвентдиспетчера или реализовывать интерфейс IEventDispatcher.
И хорошим решением будет создать свой класс событий.
Класс Song наследуются от спрайта, вроде там уже реализован интерфейс. Не работает
this.addEventListener(MouseEvent.CLICK, function cl(){
this.dispatchEvent(new Event('WORKE'));
При таком коде Событие отправляется, но это событие можно словить только в классе SonBox, в главном классе, при прослушке SongBox пусто.
Идея такая, что есть главный класс в который подключён класс плеера, и класс списка песен. в классе списка песен находятся экземпляры класса песня. и вот при щелке на песню мы должны передавать её свойство(название) в метод плеера.
Перестаньте писать анонимные функции. Для оформления кода есть тег [ as3].
В главном классе припишите addEventListener вашего события не экземпляру главного класса, а экземпляру вашего класса, которое диспатчит событие.
Дело в том, что в главном классе, нет ни одного экземпляра Song, только SongBox
Добавлено через 14 часов 50 минут
проблема до сих пор не решена(
Добавлено через 15 часов 22 минуты
Проблема решена весьма извращенским способом.
При наполнением песнями в SongBox к каждой приклеивается слушатель клика.
при клике мы заносим индекс песни в глобальную переменную и диспатчим событие PLAY в main
в MAIN слушаем PLAY и читаем свойство Index у e.target
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.