Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/oop/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 如何在从库加载的MC中指定组件的属性?_Actionscript 3_Oop_Flash Cs5 - Fatal编程技术网

Actionscript 3 如何在从库加载的MC中指定组件的属性?

Actionscript 3 如何在从库加载的MC中指定组件的属性?,actionscript-3,oop,flash-cs5,Actionscript 3,Oop,Flash Cs5,我有一个库项:MovieClip,里面有一个组合框组件。该项有一个指定给它的类myMC 我想要实现的是,一个来自主要电影的呼叫,比如var mmc:myMC=newmymcstage;将: 初始化组合框实例的值; 将myMC实例放在舞台上或另一个MC内。 因此,在myMC构造函数中,我编写了smth,如: cbox是myMC中ComboBox实例的名称 发生的情况是,组合框没有指定任何值。这是我的问题的一个简化示例,而实际情况涉及更多的UI组件——所有这些组件都会丢失它们的值 调试器显示正确类

我有一个库项:MovieClip,里面有一个组合框组件。该项有一个指定给它的类myMC

我想要实现的是,一个来自主要电影的呼叫,比如var mmc:myMC=newmymcstage;将:

初始化组合框实例的值; 将myMC实例放在舞台上或另一个MC内。 因此,在myMC构造函数中,我编写了smth,如:

cbox是myMC中ComboBox实例的名称

发生的情况是,组合框没有指定任何值。这是我的问题的一个简化示例,而实际情况涉及更多的UI组件——所有这些组件都会丢失它们的值

调试器显示正确类型的组件对象和值,但它们没有显示所示的阶段对象


请解释一下,我做错了什么?为什么舞台上的实例与实例化的对象有所不同?

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

这是一个毕竟有效的例子。因此,也许用自己的构造函数将对象放在舞台上不是最好的做法,但是这是可行的。这个

主文档有一个类DocTest:

库项中有一个组合框和一个文本字段,并附加了以下类代码:

    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!';
        }
    }
}

希望这对别人有帮助。对于studid的问题,很抱歉。

myMC不是一个最佳的类名,也不是将Stage传递给构造函数。您应该实现更好的编码约定和面向对象的标准。myMC就是一个例子。我为我的类使用包和合理的树结构。在一个或另一个父容器中实例化组件的更好方法是什么?您希望在哪里分配属性?主要应用于加载的SWF,或者加载的SWF本身?它不是一个加载的外部SWF-单个fla及其符号库+一堆.as类。似乎这是我错误的类型定义。现在有一个这个孤立案例的工作示例。看看我自己对这个问题的回答。
package  {
    import flash.display.Sprite;
    import libItem;
    public class DocTest extends Sprite {
        public function DocTest() {
            var instance:libItem = new libItem( this);
        }
    }
}
    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!';
        }
    }
}