![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
|
Доброго времени суток, друзья.
Только начал разбираться с флэшем, поэтому, пожалуйста отнеситесь с пониманием и не бейте больно ) Помогите разобраться в ситуации. У меня есть класс, созданный в отдельном файле as. Внутри этого класса создаётся таймер, срабатывание которого я отлавливаю. Есть также интерфейс, задизайненный в mxml-файле. Я хочу по таймеру объекта вышеобозначенного класса изменять значение текстового поля на интерфейсе. Проблема в том, что я не знаю, каким образом из as-файла обратиться к конкретному элементу интерфейса. Я могу передать его в конструктор класса var QGE:QGEng = new QGEng(log); log - это TextArea но не могу передать в обработчик события timer.addEventListener(TimerEvent.TIMER, onTimer); вот если бы можно было в вызов onTimer передать параметры, то было бы супер. Но как я понимаю этого сделать нельзя. Или можно каким-то способом, которого я не знаю. Помогите разобраться, пожалуйста. |
|
|||||
|
таймер у вас в классе QGEng? тогда в конструкторе запишите ссылку на log в свойство класса, в обработчике onTimer() тогда будет доступ к log.
или лучше таймером дистапчить событие, а которое будет подписан ваш mxml компонент. таким образом их связь не такая неразрывная получится. вдруг по таймеру не только одно поле надо будет изменять, да? |
|
|||||
|
Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
|
а каким образом передавать log по ссылке?
если я присваиваю свойству класса log вот таким образом: txt:TextArea = log, txt - свойство класса QGEng. а потом пытаюсь изменить txt.text, то он ругается Error #1009: Cannot access a property or method of a null object reference. А как подписать mxml компонент в событие таймера? |
|
|||||
|
Цитата:
да также как и чистом as3. создаёте экземпляр QGEng и подписываетесь на его событие (это событие должен диспатчить QGEng внутри метода QGEng.onTimer() ) |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
не надо ничего передавать...читайте про data binding
[Bindable] а также про singleton |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
Да, можно через Бинд делать:
Основное: <?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()">
<mx:Script>
<![CDATA[
import mx.binding.utils.ChangeWatcher;
import mx.binding.utils.BindingUtils;
private var co:Core;
private var __nameWatcher:ChangeWatcher;
private function init():void{
this.co = new Core();
this.addChild(this.co);
this.__nameWatcher = BindingUtils.bindProperty(ta, "text", this.co, "s");
ta.text = 'Hello Budda!';
}
private function onClick(e:MouseEvent):void{
this.co.pizdun();
}
]]>
</mx:Script>
<mx:TextArea id="ta" x="44" y="56"/>
<mx:Button x="44" y="118" label="Button" click="onClick(event)"/>
</mx:Application>
__________________
john |
|
|||||
|
Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
|
спасибо за советы.
заработало при помощи связывания свойств классов. про singleton начал читать, почти сломал себе мозг и решил оставить на потом ![]() |
|
|||||
|
Регистрация: Apr 2007
Сообщений: 1,369
|
А синглтон зачем, есть же BindingUtils.
__________________
john |
|
|||||
|
Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
|
CrazyFlasher советовал почитать про него.
Но, насколько я понял, синглон это не про то, что мне надо. |
|
|||||
|
Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
|
singleton это на будущее...полезная вещь...здесь достаточно ознакомится с data binding
|
![]() |
![]() |
Часовой пояс GMT +4, время: 01:43. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|