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

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

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

Регистрация: Dec 2009
Сообщений: 41
По умолчанию вызов функции основного приложения из дочернего окна

Здравствуйте!

Столкнулся с проблемой вызова функций и обращения к переменным основного приложения из pop-up окна. Проблема заключается в том, что не получается это сделать В обратном порядке (обращение к переменным и функциям pop-up окна из основного приложения) - получается:

в файле myPopUpWindow описана переменная:
Код AS1/AS2:
...
public var myArray
...
в основном приложении в файле mainApp описана другая переменная и при создании pop-up окна ее значение передается переменной в экземпляр myPopUpWindow:

Код AS1/AS2:
...
public var someArray
...
 
...
public function mainAppFunction():void
...
 
...
var newPopUpWindow:myPopUpWindow = new myPopUpWindow();
newPopUpWindow.myArray = someArray;
...
Вопрос в том, как из pop-up окна вызвать функцию mainAppFunction? Точнее, как создать ссылку на действующий экземпляр mainApp, чтобы получить доступ к его свойствам и методам?


Последний раз редактировалось spacecadet; 26.01.2010 в 15:29.
Старый 26.01.2010, 13:16
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 2  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Ваше PopUp окно не должно знать о свойствах и методах основного приложения, и тем более изменять их. Если Вам надо передать основному приложению данные от окна, пусть оно шлёт событие (кастомное) с необходимой информацией, а основное приложение ловит.
__________________
2+2=5

Старый 26.01.2010, 13:23
spacecadet вне форума Посмотреть профиль Отправить личное сообщение для spacecadet Найти все сообщения от spacecadet
  № 3  
Ответить с цитированием
spacecadet

Регистрация: Dec 2009
Сообщений: 41
Смысл понятен, а можно ли пример действующего функционала?

Старый 26.01.2010, 13:57
BeDLiNt вне форума Посмотреть профиль Отправить личное сообщение для BeDLiNt Найти все сообщения от BeDLiNt
  № 4  
Ответить с цитированием
BeDLiNt
 
Аватар для BeDLiNt

Регистрация: Mar 2008
Адрес: Moscow
Сообщений: 311
Отправить сообщение для BeDLiNt с помощью ICQ Отправить сообщение для BeDLiNt с помощью Skype™
Допустим так:
В основном приложении:
Код AS3:
PopUpManager.addPopUp(newPopUpWindow, this, true);
PopUpManager.centerPopUp(newPopUpWindow);
newPopUpWindow.addEventListener(MyDataEvent.UPDATE, handleMyDataUpdate);
 
...
 
private function handleMyDataUpdate(event:MyDataEvent):void
{
	var myData:Object = event.myData;
	...
}
Класс MyDataEvent.as:
Код AS3:
package view.events
{
	import flash.events.Event;
 
	public class MyDataEvent extends Event
	{
 
		public static const UPDATE:String = "dataUpdate";
 
		private var _myData:Object;
 
		public function MyDataEvent(type:String, myData:Object)
		{
			super(type, true);
			_myData = myData;
		}
 
		public function get myData():Object
		{
			return _myData;
		}
 
		override public function clone():Event
		{
			return new MyDataEvent(type, myData);
		}
	}
}
А в PopUp окне так:
Код AS3:
dispatchEvent(new MyDataEvent(MyDataEvent.UPDATE, myData));
Писал на коленке, но вроде всё должно работать.
__________________
2+2=5

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

Регистрация: Oct 2009
Сообщений: 34
Отправить сообщение для Кип с помощью ICQ
Цитата:
Точнее как создать ссылку на действующий экземпляр mainApp, чтобы получить доступ к его свойствам и методам?
Она и так есть: parentDocument

Старый 26.01.2010, 15:13
spacecadet вне форума Посмотреть профиль Отправить личное сообщение для spacecadet Найти все сообщения от spacecadet
  № 6  
Ответить с цитированием
spacecadet

Регистрация: Dec 2009
Сообщений: 41
Цитата:
Сообщение от Кип Посмотреть сообщение
Она и так есть: parentDocument
- да, так вызов искомой функции происходит. Но как я понимаю этот способ не является комильфо? Лучше организовать эвенты? Или это все же дело вкуса?

Добавлено через 2 часа 20 минут
К сожалению, parentDocument всегда указывает на самого первого родителя, и если необходимо организовать обмен между popup и его дочерним popup - то parentDocument не помогает. Таким образом использую симбиоз методов BeDLiNt'а и Кип'а. Спасибо вам большое, за помощь и отзывчивость! Первый форум за всю мою жизнь, на котором участники-профессионалы действительно ПОМОГАЮТ новичкам и нубам, а не посылают их на гугол, строя из себя крутых супер-интеллектуалов!


Последний раз редактировалось spacecadet; 26.01.2010 в 17:35.
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:59.
Быстрый переход
  « Предыдущая тема | Следующая тема »  
Опции темы
Опции просмотра

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

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


 


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


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