|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Guest
Сообщений: n/a
|
Кто сейчас торомозит я или Artic?)))
|
|
|||||
Banned
Регистрация: Jun 2009
Сообщений: 298
|
ну просто я не вчитывался, но вроде ,как ,так и не получилось сообщение отловить ? или тема закрыта эликсир найден ?
я просто написал способ отлова и посылки своего сообщение, от другого класса |
|
|||||
Guest
Сообщений: n/a
|
Ясно).
Есть 3 класса. В одном (Main) создается две переменные a:A и b:B. Когда “b” генерирует событие, его должна услышать переменная “a”. Так вот, она ничего не слышит, потому что не наследуется от “b”, потому что не является родителем “b”, потому что “a” является крайней правой веткой (а “b” – левой веткой), потому что “а” – директор (“b” – студент)…) Поэтому остановились на варианте: Событие ловится самой переменной b (в классе Main), после чего обрабатывается “а” (которая берется из ссылки хранящейся в “b”). Смущает только то, что переменные класса А, должны удаляться с помощью класса B, в результате функция для удаления находится в Main, вот(. ЗЫ. А у тебя написан способ отлова не от другого, а от того же самого класса, просто главный класс называл А, а не Main) |
|
|||||
блин, вчитывался-вчитывался, так и не мог понять, что конкретно у вас не получается.
чтобы получить событие от b, объект a должен на него подписать. для этого он должен знать о существовании b (иметь не него ссылку). это как раз и сделано в моем примере. второй вариант: класс Main подписывает a на событие b: то что описал Artic. действительно немного не то
__________________
я могу стать всем, если только захочу |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Felicast верно написал, но не совсем.
В обоих случаях обработкой занимается Main. Только обработчик в первом случае - a.someHandler. Чтобы крикнуть - нужно передать ссылку этого класса в другой класс, например, в конструктор. теперь можно подисаться на события, что вещает тот класс, что мы передали (он ведь у нас по ссылке myMc доступен)
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Banned
Регистрация: Jun 2009
Сообщений: 298
|
а ))) я просто говорю же не вчитался ! тогда вот так
package { import flash.display.Sprite; import flash.events.Event; /** * ... * @author I */ 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); var B:ClassB = new ClassB() addChild(B); var A:ClassA = new ClassA(B); addChild(A); // entry point } } } package { import flash.display.*; import flash.events.*; /** * ... * @author I */ public class ClassA extends Sprite { public function ClassA(B:ClassB) { B.addEventListener(ClassB.HELLOWORLD, resaveMessage); } private function resaveMessage(event:Event):void { trace("helloWorld"); } } } package { import flash.display.*; import flash.events.*; /** * ... * @author I */ public class ClassB extends Sprite { public static var HELLOWORLD:String = "helloworld"; public function ClassB() { var sameButton:Sprite = new Sprite(); sameButton.graphics.beginFill(0xff0000); sameButton.graphics.drawRect(0, 0, 50, 50); sameButton.graphics.endFill(); sameButton.addEventListener(MouseEvent.CLICK, sendMessage); addChild(sameButton); } private function sendMessage(event:Event):void { dispatchEvent(new Event(ClassB.HELLOWORLD,true)); } } } |
|
|||||
Guest
Сообщений: n/a
|
to Felicast: не, эт я просто неправильно понял. Думал что в твоем коде А это моё В и наоборот. А ты просто расширил класс A, так что извини за «вчитывания-вчитывания», так всё конечно работает.
to Artic: ага, именно) Но Psycho Tiger предложил еще проще без лишних генераций событий! (кстати, спасибо за это): public function ClassB(a:A) { _a = a; sameButton.addEventListener(MouseEvent.CLICK, _a.resaveMessage); } Ладно ребята, спасибо за помощь, дальше уже попробую своим ходом |
Часовой пояс GMT +4, время: 19:35. |
|
« Предыдущая тема | Следующая тема » |
|
|