对象出现在框架上的问题我不希望它出现在AS3上

时间:2015-01-06 23:54:25

标签: actionscript-3

我是AS3的总菜鸟,大约1年的经验,所以请对我宽容:)

我目前正在制作无尽的亚军游戏,并且我正在使用这种方法制作障碍

var therespawn:RespawnObject;
var thecone:trafficcone;
var started:Boolean = false;
var dx:Number = 10;
var dy:Number = 10;

stage.addEventListener(Event.ENTER_FRAME, startGame);
addEventListener(Event.ENTER_FRAME, collision);
addEventListener(Event.ENTER_FRAME, coneCollision);

function startGame(evt:Event):void {
    if (started == false) {
        spawnHazard();
    }
}

function spawnHazard() {
    started = true;
    therespawn = new RespawnObject();
    addChild(therespawn);
    thecone = new trafficcone();
    addChild(thecone);
    therespawn.x = -50;
    therespawn.y = 310;
    thecone.x = 600;
    thecone.y = 310;
}

function collision(evt:Event):void {
    thecone.x -= 15;
    if(thecone.hitTestObject(therespawn)) {
        thecone.x = 600;
    }
}

现在完成游戏或结束游戏的唯一方法就是被下面显示的障碍击中:

function coneCollision(evt:Event):void {
    if(MainChar.hitTestObject(thecone)) {
    gotoAndStop("frameFive");
    }
}

每当高分帧出现时,锥体仍在产卵和萎缩,为什么会这样? 我还没有宣布它们是全球性的吗?

感谢任何帮助,谢谢!

1 个答案:

答案 0 :(得分:0)

您可以通过将start设置为false来解决问题:

function coneCollision(evt:Event):void {
    if(MainChar.hitTestObject(thecone)) {
        started = false;
        gotoAndStop("frameFive");
    }
}

闪光时间线实际上只需要将MovieClip视觉显示为舞台的孩子。从时间轴中删除对象并不会突然使与该对象关联的所有代码无效。换句话说,即使对象不再是舞台的子节点,您的ENTER_FRAME方法仍然在后台运行,无论MovieClip的帧编号如何。如果您认真对待编码,可以考虑在类和面向对象的AS3中进行调查。使用类比使用Flash时间轴更好。