Actionscript 3 使用ActionScript3中的类创建电影剪辑实例
首先,我想说的是,我对AS3只有几个小时的经验 现在,我有2个.as文件,其中一个是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
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
类中,如果您只是创建新船,但不添加它,为什么要看到它?