|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Guest
Сообщений: n/a
|
Прослушивание событий одного класса из переменных другого
По нажатию на кнопку в объекте класса B, объект класса A должен быть удален. Попробовал сделать так:
В классе B: del.addEventListener(MouseEvent.MOUSE_DOWN,deleteA); //del – название кнопки //.. private function deleteA(e:Event){ dispatchEvent(new Event(DEL)); } Подскажите, пожалуйста, как сделать так, чтобы переменная из класса A воспринимала события из B или как вообще грамотно решать такие задачи. |
|
|||||
надо:
и в вашем случае вы подписываетесь к "a", а он не генерирует событие. а в обработчике удаляете e.target, который является "b"
__________________
я могу стать всем, если только захочу |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Ловите её от b, а в родителе уже отдавайте приказ a.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Guest
Сообщений: n/a
|
Это ясно, просто расчет был на то, что обработчик будит вызываться с помощью
to Felicast, Psycho Tiger: беда в том, что объектов "а" не один, а много. Поэтому придется перебирать их все, и сравнивать с тем, ссылка на который хранится в переменной "b". Не то, чтобы это отнимает много времени, просто выглядит странно.. А можно внутри объекта b, удалить a, если есть ссылка на неё? Например в классе B: И почему всё-таки нельзя сделать так, чтобы "а" могла слушать события генерируемые "b" |
|
|||||
блогер
Регистрация: Jun 2005
Адрес: Господи пожалуйста не Новосибирск
Сообщений: 6,598
Записей в блоге: 17
|
Представьте себе дерево, его каркас, с ветками. Ветки все разветвляются, и ветки веток разветвляются. Как добраться от крайней левой ветки до крайней правой?
Можно только подняться вверх по дереву к их первому общему родителю, и уже оттуда опуститься.
__________________
Тут мужик танцует и поёт про флэш |
|
|||||
Guest
Сообщений: n/a
|
Но зачем добираться, если можно просто хорошенько крикнуть, и кому надо, тот услышит?)
|
|
|||||
У нас есть студент, который хочет позвонить директору. Но он знает только номер классного руководителя, потому что при поступлении он даёт номер своего телефона всем студентам.
Студент должен позвонить кл.руководителю, чтобы кл.рук. передал директору сообщение или удалил его. Так понятнее ? |
|
|||||
надеюсь мысль понятна. писал на коленке. так что может стоит подправить
__________________
я могу стать всем, если только захочу |
|
|||||
Guest
Сообщений: n/a
|
Мысль понятна, но реализовать не получается(. Наверное по той же причине. Нельзя отловить событие, посланное из «чужого» класса, ведь переменная _b содержит только ссылку, и роднее от этого не становиться).
Но с перебором всех элементов я действительно сморозил. Зачем, если и так есть ссылка!) Поэтому делаю все, как и предлагали выше. В родительском классе ловлю событие переменной b, а потом удаляю нужный объект «а», взяв из b ссылку на него. Все пучком, всем спасибо. Если я не правильно понял, и можно удалить и по-другому, дайте пожалуйста знать. |
|
|||||
Banned
Регистрация: Jun 2009
Сообщений: 298
|
//class A Root private function createNewClassB():void { var sameClassB:ClassB = new ClassB(); sameClassB.addEventListener(ClassB.HELLOWORLD, testMessagefromClassB); addChild(sameClassB); } private function testMessagefromClassB(event:Event):void { // im here } //class B public static var HELLOWORLD:String = "helloworld"; public function ClassB() { var sameSprite:Sprite = new Sprite(); sameSprite.graphics.beginFill(0x666666); sameSprite.graphics.drawRect( 0, 0, 50,50); sameSprite.graphics.endFill(); sameSprite.addEventListener(MouseEvent.CLICK, sendMessage); addChild(sameSprite); } private function sendMessage(event:Event):void { dispatchEvent(new Event(ClassB.HELLOWORLD,true)); } |
Часовой пояс GMT +4, время: 02:26. |
|
« Предыдущая тема | Следующая тема » |
|
|