如何在从库加载的MC中分配组件的属性?

时间:2012-05-16 04:33:00

标签: actionscript-3 oop flash-cs5

我有一个库项目:MovieClip,里面有一个ComboBox组件。该项目已分配一个类myMC

我想要实现的是来自主电影的电话,例如var mmc:myMC = new myMC( stage);

  1. 初始化ComboBox实例的值;
  2. 将myMC实例放置在舞台上(或在另一个MC内)。
  3. 所以在myMC构造函数里面,我写了像:

    public function myMc( theStage:flash.display.Stage) {
        if( stage == null) this.addEventListener( Event.ADDED_TO_STAGE, init);
        theStage.addChild( this);
    }
    
    public function init( e:Event = null) {
        var Data:Array= new Array(
            {'label1' : 'item1'},
            {'label2' : 'item2'},
            {'label3' : 'item3'}
        );
        cbox.dataProvider = new DataProvider( Data);
    }
    

    cbox是myMC中ComboBox实例的名称。

    ComboBox没有分配任何值。这是我的问题的简化示例,而实际案例涉及更多UI组件 - 所有这些组件都错过了它们的值。

    调试器使用值显示正确类型的组件对象 - 但它们会从显示的舞台对象中丢失!

    请解释一下,我做错了什么 - 以及为什么舞台上的实例与AS实例化的对象有某种不同?

1 个答案:

答案 0 :(得分:0)

好吧,似乎是我的错误:错误的类型和杂乱的代码。

这是一个可行的例子。因此,也许这不是将对象放在舞台上由自己的构造函数进行的最佳实践,但这是有效的。 working example sources

主文档有一个DocTest类:

package  {
    import flash.display.Sprite;
    import libItem;
    public class DocTest extends Sprite {
        public function DocTest() {
            var instance:libItem = new libItem( this);
        }
    }
}

库项目里面有一个ComboBox和一个文本字段,附加了以下类代码:

    package  {
    import fl.data.DataProvider;
    import flash.display.Sprite;
    import flash.events.Event;

    public class libItem extends Sprite{

        public function libItem( theParent:flash.display.Sprite) {
            if( stage == null) this.addEventListener( Event.ADDED_TO_STAGE, init);
            else init();
            theParent.addChild( this);
        }

        public function init( e:Event = null) {
            var Data:Array= new Array(
                {label:'label1', data: 'item1'},
                {label:'label2', data: 'item2'},
                {label:'label3', data: 'item3'}
            );
            cbox.dataProvider = new DataProvider( Data);
            x = 200;
            y = 100;
            myText.text = 'Woo-hoo!';
        }
    }
}

希望这有助于某人。对不起,问题就在这里。