首先,我想说我只有几个小时的AS3经验。
现在,我有2个.as文件,其中一个是main.as
,第二个是Ship_.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.
}
}
}
和Ship_.as是:
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.
}
}
}
这是我的Ship MovieClip:http://prntscr.com/2pjzdwv
当我测试它时,我收到一条错误,上面写着“1013: The private attribute may be used only on class property definitions.
”
如果我将private var myHero:Ship=new Ship();
更改为public var myHero:Ship=new Ship();
,则会出现1180: Call to a possibly undefined method addChild.
错误。有人帮我吗?
修改
为了能够将空间movieClip看到屏幕,我必须使用两个addChild()方法,因为我在代码中注释,尽管我认为Ship_构造函数中的一个就足够了。你能解释我为什么还应该使用addChild(hero);
?
答案 0 :(得分:1)
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
}
}
}
当您在addChild()
中致电Ship_
时,会将myHero
添加到Ship_
的实例中。但Ship_'
在哪里?此时,它只是Main.main()
内的变量,但尚未添加任何变量。
所以你拥有的就像三个盒子一样,A,B和C.起初它们全都是布局的,没有一个在另一个里面。但是你把盒子C放进了盒子B里。但是现在你只有B里面的C,A仍然是自己的。因此,为了完成这个过程,你必须将Box B放入Box A中,并且因为C已经在B中,所以这将使得C最终位于A的内部。