2013-08-07 3 views
0

В actionscript3 есть ли событие, которое я могу слушать, когда свойство объекта обновляется?Actionscript - прослушивание измененного события свойства на объекте

Я нашел PropertyChangeEvent, который имеет дело с объектами события Flex. Я не знаком с Flex и что это означает для моего приложения использовать его компоненты. Мое приложение строго нарушает действие actionscript3.

обновление похоже, что было что-то подобное, что в ActionScript-2 - Object.watch

+1

Я не думаю, что это возможно с чистым AS 3.0, но вы можете сделать что-то похожее, как в этом ответе. Http://stackoverflow.com/a/318639/1123633 –

ответ

3

В ActionScript3, есть событие, я могу слушать всякий раз, когда свойства объекта обновляется?

Нет или по крайней мере не по умолчанию!

В Flex пользовательские свойства объектов реализуются с помощью методов get/set, а установленные методы отправляют событие изменения свойства. Что-то вроде этого:

private var _myVar : SomeClass; 
public function get myVar():SomeClass{ 
    return _myVar; 
} 

public function set myVar(value:SomeClass):void{ 
    _myVar = value; 
    dispatchEvent(new Event('myVarChanged')); 
} 

Это в основном используется для связывания в рамках Flex и большинство событий этих «PropertyChanged» не документированы. Время от времени они становятся полезными.

В коде, отличном от Flex; вы более чем можете писать свои свойства точно так же. Я бы не ожидал, что классы Flash по умолчанию будут отправлять события propertyChanged.

+0

похоже, что в actionscript-2 было что-то подобное - [Object.watch] (http://help.adobe.com/en_US/AS2LCR/Flash_10.0/help.html?content=00001435.html) –

+0

См. Также документацию Flex: http: //help.adobe. ком/en_US/Flex/используя/WS2db454920e96a9e51e63e3d11c0bf69084-7ce1.html –

0

Вы также можете использовать:

ChangeWatcher.watch(textarea, "text", watcherListener); 

private function watchListener(event:Event):void 
{ 
    // Use myWatcher.unwatch() to remove the watcher. 
} 

Но если у вас есть класс, который расширяет "Object" , если вы создаете экземпляр, у него не будет метода dispatchEvent() для отправки события. Вы должны расширить IEventDispatcher.

Смежные вопросы