|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
addEventLIstener + Delegate
Не знаю с чего начать
вообщем, есть мувик к которому подключён класс. В классе есть вещатель передающий переменные Есть класс котрый слушет мувик: вместо многоточия должен быть либо Delegate или название функции 1. Если название функции: параметр передаётся првильно addEventListener ("onOpen", opener) private function opener (obj:Object):Void { trace (obj.data) // с этим всё ок trace (this) // выводит ссылку на объект диспетчер } Теперь вариант 2: Таже конструкция, только используется Delegate: addEventListener ("onOpen", Delegate.create (this, this.opener) private function opener (obj:Object):Void { trace (this) //this естественно то что нужно trace (obj.data) // data диспетчера не видна } Собственно вопрос и заключатся в том, как передать data и в тоже время изменить видимость. |
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Я твоим Delegate тоже пытался пользоватся, только вот как в твоём Delegate в последнем параметре получить переменную вещателя до меня не доходит.
Последний раз редактировалось screamge; 13.05.2007 в 20:54. |
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
У меня оба случая рабочие...
|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Цитата:
|
|
|||||
Регистрация: Sep 2006
Сообщений: 256
|
Кнопка:
import mx.events.EventDispatcher; import mx.utils.Delegate; class TestButton extends MovieClip { public var addEventListener:Function; public var removeEventListener:Function; private var dispatchEvent:Function; private var _data:Object; private function TestButton(){ super(); EventDispatcher.initialize(this); this._data = {id: 0, label: "Hello"}; } private function onPress():Void { this.dispatchEvent({type: "onClick", data: this._data}); } } import TestButton; import mx.utils.Delegate; class MyTest extends MovieClip { private var _button:TestButton; private function MyTest() { super(); this.onEnterFrame = this.run; } private function run():Void { delete this.onEnterFrame; this._button = TestButton(this.attachMovie("TestButton", "_bt", 0)); this._button.addEventListener("onClick", Delegate.create(this, this.clickHandler)); this._button.addEventListener("onClick", this); } private function clickHandler(event:Object):Void{ trace("clickHandler:"); trace(event["data"]["label"]); } private function onClick(event:Object):Void{ trace("onClick:"); trace(event["data"]["label"]); } } |
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Большое спасибо. А вообще странно, у меня конструкция похожа, разница в том что слушается клип:
import mx.events.EventDispatcher; import mx.utils.Delegate; class TestButton extends MovieClip { public var addEventListener:Function; private var dispatchEvent:Function; public function TestButton(){ EventDispatcher.initialize(this); } private function onPress():Void { var param:String = "SomeText" this.dispatchEvent({type: "onClick", data:param}); } } import mx.utils.Delegate; class MyTest extends MovieClip { private function MyTest() { _root.but_mc.addEventListener("onClick", Delegate.create(this, this.clickHandler)); _root.but_mc.addEventListener("onClick", this); } private function clickHandler(event:Object):Void{ trace("clickHandler:"); trace(event.data); } private function onClick(event:Object):Void{ trace("onClick:"); trace(event.data); } } Ещё раз спасибо. |
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Чудеса случаются, после 2-х часовой безполезной прогулки по классу состоящего из 2000 строк закрыл флеш, после открытие всё заработало. Уродство! Поймал бы я того кто придумал ASO файлы
|
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
Класс из 2000 строк? Чума… у меня таких не было никогда
|
|
|||||
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Ну это ты видимо проектировать проекты умеешь, а у меня как-то...
Сейчас делю на отдельные куски и всё понаписанное переношу в отдельные классы. Никогда не делайте так как сделал я, __etc прав - чума! Последний раз редактировалось screamge; 16.05.2007 в 02:49. |
Часовой пояс GMT +4, время: 12:47. |
|
« Предыдущая тема | Следующая тема » |
|
|