【发布时间】:2014-02-05 06:19:36
【问题描述】:
首先我想说的是,我只有几个小时的 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 影片剪辑: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. 错误。有没有人可以帮助我?
编辑
为了能够在屏幕上看到空间电影剪辑,我必须使用两个 addChild() 方法作为我在代码中的注释,尽管我认为 Ship_ 构造函数中的一个就足够了。你能解释一下为什么我也应该使用addChild(hero); ?
【问题讨论】:
-
@Panzercrisis 为您提供了适当的解决方案。关于问题
why should I also use addChild(hero);。这是因为创建新的 Sprite/MovieClip 不会将其添加到显示列表中。为此,您需要使用addChild。您正在Ship_类中执行此操作,您正在创建对象并添加它。但是在main类中,如果你只是创建new Ship而没有添加它,为什么你应该看到它?
标签: actionscript-3 flash oop