首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时间轴中的Actionscript未按预期工作

时间轴中的Actionscript未按预期工作
EN

Stack Overflow用户
提问于 2013-05-07 22:57:14
回答 1查看 342关注 0票数 0

我有一些AS3代码,我想要移到时间线上,而不是有一个外部文件,但它根本不能工作,而它在.as文件中工作了:

代码语言:javascript
运行
复制
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电影剪辑本身,也尝试将其添加到游戏场景中,但它不起作用。有什么建议吗?

EN

Stack Overflow用户

回答已采纳

发布于 2013-05-07 23:00:42

这有点令人遗憾,使用外部类是一种更干净的方式,但您可以决定。

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

代码语言:javascript
运行
复制
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();
}
票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16422254

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档