我有一些AS3代码,我想要移到时间线上,而不是有一个外部文件,但它根本不能工作,而它在.as文件中工作了:
public class EnemyShip extends MovieClip
{
var speed:Number;
var shot = new ShotSound();
function EnemyShip()
{
this.x = 800;
this.y = Math.random() * 275 + 75;
speed = Math.random()*5 + 9;
addEventListener("enterFrame", enterFrame);
addEventListener(MouseEvent.MOUSE_DOWN, mouseShoot);
}
function enterFrame(e:Event)
{
this.x -= speed;
if(this.x < -100)
{
removeEventListener("enterFrame", enterFrame);
Main.gameLayer.removeChild(this);
}
}
function kill()
{
var explosion = new Explosion();
Main.gameLayer.addChild(explosion);
explosion.x = this.x;
explosion.y = this.y;
removeEventListener("enterFrame", enterFrame);
Main.gameLayer.removeChild(this);
Main.updateScore(1);
shot.play();
}
function mouseShoot(event:MouseEvent)
{
kill();
}这就是代码,我试着让它在时间线上工作,但什么也没发生。我尝试将代码添加到EnemyShip电影剪辑本身,也尝试将其添加到游戏场景中,但它不起作用。有什么建议吗?
发布于 2013-05-07 23:00:42
这有点令人遗憾,使用外部类是一种更干净的方式,但您可以决定。
删除每个类包装,并将此代码放在您的符号的第一帧:
var speed:Number;
var shot = new ShotSound();
this.x = 800;
this.y = Math.random() * 275 + 75;
speed = Math.random()*5 + 9;
addEventListener("enterFrame", enterFrame);
addEventListener(MouseEvent.MOUSE_DOWN, mouseShoot);
function enterFrame(e:Event)
{
this.x -= speed;
if(this.x < -100)
{
removeEventListener("enterFrame", enterFrame);
Main.gameLayer.removeChild(this);
}
}
function kill()
{
var explosion = new Explosion();
Main.gameLayer.addChild(explosion);
explosion.x = this.x;
explosion.y = this.y;
removeEventListener("enterFrame", enterFrame);
Main.gameLayer.removeChild(this);
Main.updateScore(1);
shot.play();
}
function mouseShoot(event:MouseEvent)
{
kill();
}https://stackoverflow.com/questions/16422254
复制相似问题