组件检查器,属性始终为空?

我在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