组件检查器,属性始终为空?
我在Flash CS4中创建了一个小组件,并且我已将MyComp符号与其各自的MyComp类相关联。 MyComp.as中的代码如下所示:
package {
import flash.display.MovieClip;
public class MyComp extends MovieClip
{
public function MyComp()
{
trace(this.test);
}
private var _test:String;
[Inspectable(defaultValue="blah")]
public function get test():String
{
return this._test;
}
public function set test(v:String):void
{
this._test = v;
}
}
}
当我将组件拖到测试FLA中时,组件的属性都按照Inspectable []元标记显示。 但是,当我在组件检查器中设置属性时,尽管Component Inspector说了什么,该值始终为空。
跟踪示例测试时,它总是输出空值?
如何在运行时获取组件检查器的值以反映组件?
组件和可检查属性的操作顺序可能有点棘手。 基思·彼得斯(Keith Peters)(Bit-101)写了一篇很好的关于可视察的获得者和制定者问题的概述。
这个问题,特别是,构造函数被调用PRIOR到被设置的可检查属性。 解决这个问题的一个很好的方法是让你的构造函数设置成为EXIT_FRAME事件的一个监听器,这个监听器会在完成其他事情之后在同一帧中运行。 例如:
package {
import flash.display.MovieClip;
import flash.events.Event;
public class SampleComponent extends MovieClip {
private var _foo:Number;
public function SampleComponent() {
trace("SampleComponent: constructor");
addEventListener(Event.EXIT_FRAME, onReady);
}
[Inspectable]
public function get foo():Number {
trace("SampleComponent: get foo: " + _foo);
return _foo;
}
public function set foo(value:Number):void {
trace("SampleComponent: set foo: " + value);
_foo = value;
}
private function onReady(event:Event):void {
trace("SampleComponent: ready!");
removeEventListener(Event.EXIT_FRAME, onReady);
}
}
}
您可以使用文本字符串“exitFrame”,如下所示:
addEventListener( "exitFrame", onExitFrame );
事件触发,看来Event类只是缺少定义。
链接地址: http://www.djcxy.com/p/17841.html上一篇: Component Inspector, properties always null?
下一篇: Trouble with scrolling a UIScrollBar component within a class