0

我有一些 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影片剪辑本身以及将其添加到游戏场景中,但它不起作用。有什么建议么?

4

1 回答 1

1

这有点可悲,使用外部类是一种更清洁的做事方式,但您决定。

删除每个类包装器并将此代码放在符号的第一帧上:

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();
}
于 2013-05-07T15:00:42.363 回答