Показать сообщение отдельно
Старый 28.10.2012, 23:17
flyberok вне форума Посмотреть профиль Отправить личное сообщение для flyberok Найти все сообщения от flyberok
  № 15  
Ответить с цитированием
flyberok

Регистрация: May 2010
Сообщений: 43
Вообщем возможно зря подымаю старую тему, но сам боролся с проблемой что и у автора: не присваивались значения заданные в component parametrs.
Параметр задается через тег Inspectable и следующий за ним переменой или set функции. Пример:
Код AS3:
[Inspectable(type="Color",defaultValue="#00ff00")]
public var tlColor;
Если наследовать от UIComponent который в свою очередь расширяет Sprite, то все хорошо.
Чтобы напрямую расширять Sprite, например и получать параметры заданный через Flash CS, надо повесить слушатель события stage.addEventListener(Event.ADDED,listener_function);
и когда
Код AS3:
private function listener_function(e:Event){
if(getQualifiedClassName(e.target)=="test_fla::MainTimeline"){
	trace("tlColor="+tlColor);
}
}
Вообщем я придумал пока только такой способ, может где то уже решена эта проблема, но я не нашел, а расширять UIComponent с множеством не нужных и не понятных вещей пока не хотелось.
Еще как вариант можно повесить на ENTER_FRAME и как только переменная наша начнет существовать, т.е. по логике при первом срабатывании ENTER_FRAME, то удаляем слушателя и дальше действуем в рамках нужд создаваемого компонента. В UIComponent в некоторый момент времени срабатывает Event.RENDER у stage видно оно всплывает при проверке стиля или иная какая радость, но попытавшись отработать это событие у себя я ничего не добился, сработала на ENTER_FRAME ну я еще взял и поэксперементировал и нашел Event.ADDED у Stage.
А у автора пробема решилась бы, если бы он отрабатывал бы изменение параметра в методе draw() или повесил бы обработчик на stage.addEventListener(Event.Render,function(e:Event){});
Код AS3:
package classes {
	import fl.core.UIComponent;
	public class C extends UIComponent{
		private _sel:String="";
 
		public function C() {
			super();
		}
 
		[Inspectable(name="param1", defaultValue="Word")]
		public function set sel(s:String):void{
			_sel=s;
			this.invalidate();
		}
 
		public function get sel():String{
			return _sel;
		}
 
		override protected function draw():void{
			// Отрисовка изменений
		}
 
 
	}
}