![]() |
|
||||||||||
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Не знаю с чего начать
![]() вообщем, есть мувик к которому подключён класс. В классе есть вещатель передающий переменные Есть класс котрый слушет мувик: вместо многоточия должен быть либо 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,787
|
Класс из 2000 строк? Чума… у меня таких не было никогда
![]() |
|
|||||
|
Ветеран форума
Регистрация: Jul 2006
Адрес: Грузия, Тбилиси
Сообщений: 2,675
|
Ну это ты видимо проектировать проекты умеешь, а у меня как-то...
![]() Сейчас делю на отдельные куски и всё понаписанное переношу в отдельные классы. Никогда не делайте так как сделал я, __etc прав - чума! Последний раз редактировалось screamge; 16.05.2007 в 02:49. |
![]() |
![]() |
Часовой пояс GMT +4, время: 04:39. |
|
|
« Предыдущая тема | Следующая тема » |
|
|