Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Поиск рулит! Сообщения за день Все разделы прочитаны
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.08.2008, 16:35
Serg_Mars вне форума Посмотреть профиль Отправить личное сообщение для Serg_Mars Найти все сообщения от Serg_Mars
  № 1  
Ответить с цитированием
Serg_Mars

Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
По умолчанию Как изменить значение текстового поля (mxml-файл) из класса (as-файл) по событию?

Доброго времени суток, друзья.

Только начал разбираться с флэшем, поэтому, пожалуйста отнеситесь с пониманием и не бейте больно )

Помогите разобраться в ситуации.

У меня есть класс, созданный в отдельном файле as. Внутри этого класса создаётся таймер, срабатывание которого я отлавливаю.

Есть также интерфейс, задизайненный в mxml-файле.

Я хочу по таймеру объекта вышеобозначенного класса изменять значение текстового поля на интерфейсе.

Проблема в том, что я не знаю, каким образом из as-файла обратиться к конкретному элементу интерфейса. Я могу передать его в конструктор класса
var QGE:QGEng = new QGEng(log); log - это TextArea
но не могу передать в обработчик события timer.addEventListener(TimerEvent.TIMER, onTimer);

вот если бы можно было в вызов onTimer передать параметры, то было бы супер. Но как я понимаю этого сделать нельзя. Или можно каким-то способом, которого я не знаю.

Помогите разобраться, пожалуйста.

Старый 28.08.2008, 17:05
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 2  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
таймер у вас в классе QGEng? тогда в конструкторе запишите ссылку на log в свойство класса, в обработчике onTimer() тогда будет доступ к log.

или лучше таймером дистапчить событие, а которое будет подписан ваш mxml компонент. таким образом их связь не такая неразрывная получится. вдруг по таймеру не только одно поле надо будет изменять, да?

Старый 28.08.2008, 18:31
Serg_Mars вне форума Посмотреть профиль Отправить личное сообщение для Serg_Mars Найти все сообщения от Serg_Mars
  № 3  
Ответить с цитированием
Serg_Mars

Регистрация: 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 компонент в событие таймера?

Старый 28.08.2008, 18:58
fljot вне форума Посмотреть профиль Отправить личное сообщение для fljot Найти все сообщения от fljot
  № 4  
Ответить с цитированием
fljot

блогер
Регистрация: Jul 2007
Сообщений: 940
Записей в блоге: 3
Цитата:
Сообщение от Serg_Mars Посмотреть сообщение
а каким образом передавать log по ссылке?

если я присваиваю свойству класса log вот таким образом:

txt:TextArea = log, txt - свойство класса QGEng.

а потом пытаюсь изменить txt.text,

то он ругается Error #1009: Cannot access a property or method of a null object reference.
проверьте, что у вас в txt после присваивания

Цитата:
Сообщение от Serg_Mars Посмотреть сообщение
А как подписать mxml компонент в событие таймера?
да также как и чистом as3. создаёте экземпляр QGEng и подписываетесь на его событие (это событие должен диспатчить QGEng внутри метода QGEng.onTimer() )

Старый 28.08.2008, 20:29
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 5  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
не надо ничего передавать...читайте про data binding
[Bindable] а также про singleton
__________________
Flash Developer
Папа TDP4 Team Battle

Старый 29.08.2008, 02:19
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 6  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: 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>
AS:
Код:
package{
	import mx.core.UIComponent;
	    
	public class Core extends UIComponent{
		
		[Bindable] public var s:String;
		
		public function Core(){
			super();
		}
		public function pizdun():void{
			s = 'Hi';
		}
	}
}
__________________
john

Старый 29.08.2008, 11:51
Serg_Mars вне форума Посмотреть профиль Отправить личное сообщение для Serg_Mars Найти все сообщения от Serg_Mars
  № 7  
Ответить с цитированием
Serg_Mars

Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
спасибо за советы.

заработало при помощи связывания свойств классов.

про singleton начал читать, почти сломал себе мозг и решил оставить на потом

Старый 29.08.2008, 14:30
Molecula вне форума Посмотреть профиль Отправить личное сообщение для Molecula Найти все сообщения от Molecula
  № 8  
Ответить с цитированием
Molecula
 
Аватар для Molecula

Регистрация: Apr 2007
Сообщений: 1,369
А синглтон зачем, есть же BindingUtils.
__________________
john

Старый 29.08.2008, 14:35
Serg_Mars вне форума Посмотреть профиль Отправить личное сообщение для Serg_Mars Найти все сообщения от Serg_Mars
  № 9  
Ответить с цитированием
Serg_Mars

Регистрация: Jun 2008
Адрес: Россия, Воронеж
Сообщений: 22
CrazyFlasher советовал почитать про него.

Но, насколько я понял, синглон это не про то, что мне надо.

Старый 29.08.2008, 15:33
CrazyFlasher вне форума Посмотреть профиль Отправить личное сообщение для CrazyFlasher Найти все сообщения от CrazyFlasher
  № 10  
Ответить с цитированием
CrazyFlasher
 
Аватар для CrazyFlasher

Регистрация: May 2003
Адрес: Tallinn
Сообщений: 3,182
singleton это на будущее...полезная вещь...здесь достаточно ознакомится с data binding
__________________
Flash Developer
Папа TDP4 Team Battle

Создать новую тему Ответ Часовой пояс GMT +4, время: 23:33.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 23:33.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.