![]() |
|
||||||||||
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Пока окончательно события понять не могу. Как я понял, они диспачатся и передаются вверх. Я создаю класс Region и в нем диспатчу событие. Во CS3 создаю различные фигурки и делаю им расширение классом Region. Мне нужно, чтобы в основном классе вызвалось продиспатченное событие в классе Region.
package { import flash.display.*; import flash.events.*; import fl.motion.Color; public class Region extends MovieClip { public static const CLICK_REG1:String = "clickreg1"; public function Region():void { this.addEventListener(MouseEvent.CLICK, onClick) } private function onClick(e:MouseEvent):void { e.target.alpha = 0.5; dispatchEvent(new Event(Region.CLICK_REG1)) } } } package { import flash.display.*; import flash.events.*; import fl.motion.Color; public class Shar extends Region { public function Shar():void { } } } package { /** * ... * @author Stas */ public class Main extends Sprite { public function Main():void { Всякий код... Потом, чтобы вызвать событие, продиспатченное в Region, создаю экземпляр его класса var reg:Region = new Region(); reg.addEventListener(Region.CLICK_REG1, onClick); Но событие не срабатывает. } private function onClick(e:Event):void { trace("SOS") } } } |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
А объяснить сможете, пожалуйста. Как работает событие и в чем тут ошибка?
Добавлено через 27 минут Как мне в таком случае вызвать событие, продиспатченное в Region? |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
У Вас событие наверх диспатчится по клику мыша. Нет события клика мыша внутри региона.
|
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Почему это нет события? Вот событие клика внутри Региона
|
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
поставьте трейс сразу после e.target.alpha = 0.5;
обработчик события есть, просто оно не возникает Вот рабочий код, если не ждать события MouseEvent.CLICK: package { import flash.display.*; import flash.events.*; public class Region extends MovieClip { public static const CLICK_REG1:String = "clickreg1"; public function Region():void { } public function testEvent():void { dispatchEvent(new Event(Region.CLICK_REG1)) } } } package { import flash.display.Sprite; import flash.events.Event; public class Main extends Sprite { public function Main():void { if (stage) init(); else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); // entry point var reg:Region = new Region(); reg.addEventListener(Region.CLICK_REG1, onClick); reg.testEvent(); } private function onClick(e:Event):void { trace("SOS") } } } |
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Цитата:
Цитата:
Ты меня немного не так понял, наверное. Как работает событие я знаю, но вот с пользовательскими событиями - еще путаюсь. Так как грамотно организовать код? |
|
|||||
|
Регистрация: Nov 2009
Адрес: СПб
Сообщений: 2,236
|
Если поставить трейс внутрь Region.onclick(), станет очевидно, что Region.onclick() не отрабатывает. Будет отрабатывать, будет и событие диспатчиться.
|
|
|||||
|
[+3 18.04.11]
Регистрация: Dec 2010
Сообщений: 342
|
Честно говоря, я так и не понял, о чем вы. Мне нужно вызвать событие в главном классе, продиспатченное в Регионе. Как это сделать? Вот вопрос!
Уважаемый форумчане, кто может ответить на данный вопрос? |
|
|||||
|
mikhailk, я так и не понял почему не должен сработать онКлик в риджионе, если он наследник мувика и есть некая кликабельная область (если есть конечно).
__________________
http://cleptoman.free-lance.ru achivements: дважды благословлен на воровство. осеяный благодатью |
![]() |
![]() |
Часовой пояс GMT +4, время: 09:22. |
|
|
« Предыдущая тема | Следующая тема » |
|
|