![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Я знаю, что подобные темы уже создавались и уже два дня пытаюсь разобраться. Прошу пожалуйсто помогите разобраться как этим пользоваться.
Я взял пример с этого же форума из одной темы: Задаю вот этот код в Document class (Main) // документ класс package { import flash.display.*; import flash.events.*; public class Main extends Sprite { private var game:Game; public function Main() { game = new Game(); addChild(game); game.addEventListener(Game.BOOM,boomListener); } private function boomListener(e:Event):void{ trace("boom"); } } } // мой пользовательский класс который диспатчит событие package { import flash.display.*; import flash.events.*; public class Game extends Sprite { public static const BOOM:String = "boom"; public var dispatcher:EventDispatcher; public function Game() { dispatcher = new EventDispatcher(this); addEventListener(Event.ENTER_FRAME,enterFrameListener); } private function enterFrameListener(e:Event):void{ trace("enterFrame"); dispatcher.dispatchEvent(new Event(Game.BOOM)); } } } class Game extends EventDispatcher и Не помогло. Да и мне обращение наоборот нужно из родительского в класс потомка(ребёнка), ну для начала хотя бы это заставить работать. Если найдёте время помочь буду очень благодарен! |
|
|||||
|
Регистрация: Feb 2007
Сообщений: 563
|
|
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Не помогло... У меня такое ощущение, что просто не происходит обращение в класс (Main), при передачи так называемого эвента "BOOM". Кажись просто структура алгоритма корявая...
|
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
зачем в Game диспатчер? спрайт тоже диспатчер сам по себе.
package { import flash.display.*; import flash.events.*; public class Game extends Sprite { public static const BOOM:String = "boom"; public function Game() { addEventListener(Event.ENTER_FRAME,enterFrameListener); } private function enterFrameListener(e:Event):void{ trace("enterFrame"); dispatchEvent(new Event(Game.BOOM)); } } } родитель спокойно может обращасться к публичным методам ребёнка.. в Main что именно вам надо делать? вот так можно повесить слушателя события происходящего в Main // документ класс package { import flash.display.*; import flash.events.*; public class Main extends Sprite { private var game:Game; public function Main() { game = new Game(); addChild(game); // на событие энтерфрэйма в мэйн вызываем ф-цию в game addEventListener(Event.ENTER_FRAME, game.mainEnterFrameListener); } } }
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 26.03.2010 в 10:43. |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Мне понадобился DispatchEvent для обращения к ребёнку ребёнка.
Т.е. у меня в картинку(на stage) крепится квадратик(он становится ребёнком данной картинки) и в этот квадратик крепится мувиклип(т.е. он становится ребёнком данного квадратика) ну и собственно при наведении на квадратик он должен подсвечиваться а мувиклип в нём начинать проигрываться... Вот и я прочитал, что для этого DispatchEvent подойдёт. Правда может я слегка перемудрил... Можно и просто обратиться поочерёдно к функции квадратика, а из квадратика к мувиклипу. |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
Цитата:
package { public class Quad extends Sprite { // мувик внутри квадратика private var mc:MovieClip; public function Quad() { // добавляем мувик из библиотеки mc:MovieClip = new CustomMovieClip(); addChild(mc); //или берём на таймлайне mc:MovieClip = getChildByName("mc_name"); addEventListener(MouseEvent.ROLL_OVER,animate) } public function animate(e:MouseEvent):void { mc.play(); } } } }
__________________
Отряд Котовскага |
|
|||||
|
Регистрация: Mar 2010
Сообщений: 117
|
Вспомнил почему начал так замарачиваться. Я из класса родителя обращаюсь в класс квадратика к функции а та не работает:
Эта функция находится в классе картинки. И реагирует на наведение мышки. Это функция находится в классе квадратика. Добавлено через 3 минуты Котяра Спасибо сейчас опробую. Добавлено через 2 часа 12 минут Такая проблемма: Круглишку(клипу) прикрепляется ребёнок(квадратик) в конструкторе квадратика есть такой код: mc - клип который крепится к квадратику как его ребёнок. Т.е. при наведении на квадратик мне нужно обратиться к функции клипа(mc) являющимся его ребёнком. Обращения к сожалению не происходит. Как подобное исправить? |
|
|||||
|
буду краток
модератор форума
Регистрация: Sep 2003
Адрес: Ближайшее Замкадье
Сообщений: 3,110
Записей в блоге: 28
|
как у вас объявлен mc в класса square? если как MovieСlip то у MovieСlip нет метода run. Объявляйте правильно.
package { public class Quad extends Sprite { // мувик внутри квадратика private var mc:MyClipWithRunMethod; public function Quad() { // добавляем мувик из библиотеки mc = new MyClipWithRunMethod(); addChild(mc); //или берём на таймлайне mc = getChildByName("mc_name") as MyClipWithRunMethod; addEventListener(MouseEvent.ROLL_OVER,animate) } public function animate(e:MouseEvent):void { mc.run(); } } } }
__________________
Отряд Котовскага Последний раз редактировалось Котяра; 26.03.2010 в 15:20. |
![]() |
![]() |
Часовой пояс GMT +4, время: 12:26. |
|
|
« Предыдущая тема | Следующая тема » |
|
|