Actionscript 3 使用ActionScript3中的类创建电影剪辑实例

Actionscript 3 使用ActionScript3中的类创建电影剪辑实例,actionscript-3,flash,oop,Actionscript 3,Flash,Oop,首先,我想说的是,我对AS3只有几个小时的经验 现在,我有2个.as文件,其中一个是main.as,第二个是Ship_uuu.as main.as: package{ import flash .display.*; // import Enemy; public class main extends MovieClip{ public function main(){ var hero:Ship_=new Ship_(); addChild

首先,我想说的是,我对AS3只有几个小时的经验

现在,我有2个.as文件,其中一个是
main.as
,第二个是
Ship_uuu.as

main.as:

package{
    import flash .display.*;
   // import Enemy;
    public class main extends MovieClip{
        public function main(){
    var hero:Ship_=new Ship_();
    addChild(hero); // I have to use addChild here also.
        }

    }
}
并按原样装运:

package{
    import flash .display.*;

    public class Ship_ extends MovieClip{
        private var myHero:Ship=new Ship(); // moved inside of class definition

        public function Ship_(){
            addChild(myHero);  // I think I added my movie clip into stage by this.
        }
    }
}
这是我的飞船电影唇:

当我测试它时,我得到一个错误,它说“
1013:private属性只能用于类属性定义。

如果我更改私有变量myHero:Ship=newship()
公共变量myHero:Ship=newship()我得到
1180:调用可能未定义的addChild方法。
错误。有人帮我吗

编辑

为了能够在屏幕上看到空间电影剪辑,我在代码中注释时必须使用两个addChild()方法,尽管我认为Ship_u构造函数中的一个就足够了。你能解释一下为什么我还应该使用
addChild(hero)

package{
    import flash .display.*;

    public class Ship_ extends MovieClip{
        private var myHero:Ship=new Ship(); // moved inside of class definition

        public function Ship_(){
            addChild(myHero); // moved inside of contructor
        }
    }
}
当您在
Ship
中调用
addChild()
时,它会将
myHero
添加到
Ship
的实例中。但是
船在哪里
?此时,它只是
Main.Main()
中的一个变量,但尚未添加它或其他任何内容


所以你所拥有的就像三个盒子,a,B和C。起初它们都是分开布置的,没有一个在另一个里面。但你们把盒子C放到盒子B里,但现在你们只把C放在盒子B里面,而A仍然是自动关闭的。所以要完成这个过程,你必须把B框放在A框中,因为C已经在B框中了,这将使C最终在A框中。

我编辑了我的问题,你也可以看一下吗?@Panzercrisis为你提供了适当的解决方案。关于问题
我为什么还要使用addChild(hero)。这是因为创建新的Sprite/MovieClip不会将其添加到显示列表中。为此,您需要使用
addChild
。您在
Ship\类中执行此操作,您正在创建对象并添加它。但是在
main
类中,如果您只是创建
新船,但不添加它,为什么要看到它?