Показать сообщение отдельно
Старый 09.07.2009, 12:11
dimarik вне форума Посмотреть профиль Отправить личное сообщение для dimarik Найти все сообщения от dimarik
  № 11  
Ответить с цитированием
dimarik
.
 
Аватар для dimarik

модератор форума
Регистрация: Sep 2003
Адрес: Москва
Сообщений: 4,630
Записей в блоге: 20
Цитата:
Сообщение от winbackgo Посмотреть сообщение
при инициализации флэш инициализирует mainApp и где-то ведь хранится ссылка на него.
А Вы создали ссылку на него? Нет ссылки - нет доступа.


Цитата:
про передачу this я думал но тогда привязка класса к mainApp и если потом его использовать в другом проекте то надо переделывать.
Интерфейсы спасают.

Цитата:
Мне вообще это нужно для создания функции дебаг и в классе проверить если она доступна то вызывать.
ApplicationDomain.hasDefinition(value:String):Boolean


Цитата:
А также для доступа к параметрам flashvars через loaderInfo. В mainApp доступно root.loaderInfo.parameters как до них добраться в exampleClass?
Конфигурируте ЕxampleClass необходимыми ему параметрами. Можно в конструктор передавать. а можно сеттить после создания его экземпляра.


Код AS3:
package {
 
	import flash.display.Sprite;
 
	public class MainApp extends Sprite implements ITestable {
 
		public function MainApp() {
			super();
 
			var exampleClass:ExampleClass = new ExampleClass();
			var param:uint = parseInt(super.loaderInfo.parameters['param']);
 
			exampleClass.controller = this;
			exampleClass.param = param;
		}
 
		public function test(value:uint):void {
			trace('Tested: ' + value);
		}
	}
}

Код AS3:
package {
 
	public class ExampleClass {
 
		public function ExampleClass() {
			super();
		}
 
		//-----------------------------
		//  controller
		//-----------------------------
		private var _controller:	ITestable;
 
		public function set controller(value:ITestable):void {
			if (this._controller == value) return;
			this._controller = value;
		}
 
		public function get controller():ITestable {
			return this._controller;
		}
 
		//-----------------------------
		//  param
		//-----------------------------
		public function set param(value:uint):void {
			if (this._controller) this._controller.test(value);
		}
 
	}
}
Код AS3:
package {
 
	public interface ITestable {
		function test():void;
	}
 
}
__________________
Воспитан в TimeZero. Работаю в Mail.ru.