AS2:当定时器命中0时停止阵列循环

时间:2014-05-01 09:44:50

标签: flash timer actionscript-2 goto

我是新手!嗨,你可以叫我Bri!在使用'Macromedia Flash Professional 8'制作的游戏中,我需要一些使用Actionscript-2编码的帮助。 (我知道它有点过时了;我很快升级了)!

这是一场引人注目的比赛:我有鸡蛋从天而降。当我的捕手抓到一个鸡蛋时,得分上升一点。我的命中测试有效,我有两种类型的鸡蛋掉落:蓝色和粉红色。 (被抓时他们都值1分)。

我刚为游戏添加了一个计时器。 我需要做的是:当计时器达到零时,游戏进入“游戏结束”屏幕,以便玩家可以重新开始游戏。 问题是,当计时器达到零时,游戏进入“游戏结束”屏幕,但鸡蛋继续下降超过“gameover”屏幕。

我需要他们停止摔倒。

我尝试将 stop(); 代码放在我的时间轴中“gameon”标签的第一帧和最后一帧上。我已经在第一帧和最后一帧的代码的顶部和底部放置 stop(); ,以及在我想要播放器头的新帧(没有代码的其余部分)上放置移动。我也进入了代码本身并尝试“pop”,“shift”,“拼接”我的数组。我还尝试了基本的 .removeMovieClip 函数来删除每个鸡蛋本身( BlueEgg,PinkEgg,newClip,这个< =我已经尝试了所有这些来回电我的函数,你会看到我的代码中是如何引用它们的。)

我认为我的问题是...... 1)我不知道在代码中,为鸡蛋数组放置函数以停止下降。 ('计时器'的代码应该在顶部,还是应该在'落蛋'代码之后?如果之后,在'计时器'代码中我可以调用函数来停止蛋''堕落“行动?该行动是否应该在'定时'代码中,或者它应该单独坐在另一条线上)? 2)我不知道如何成功地使鸡蛋停止下降(我弹出,移动,拼接,清除,移除等等?我如何编写任何函数代码) ?

这是我目前的代码:

    newClip = _root.attachMovie('Uni', 'Uni', -1);
Uni._y = Stage.height-315;
Uni._x = Stage.width-225;
function moveUni() {
    if (Uni._x<30) {
        Uni._x = 30;
    }
    if (Uni._x>520) {
        Uni._x = 520;
    }
    if (Key.isDown(Key.RIGHT)) {
        dx = 15;
        Uni._xscale = -100;
    } else if (Key.isDown(Key.LEFT)) {
        dx = -15;
        Uni._xscale = 100;
    } else {
        dx = 0;
    }
    Uni._x += dx;
    if (Uni._x<30) {
        Uni._x = 30;
    }
    if (Uni._x>520) {
        Uni._x = 520;
    }
}
this.onEnterFrame = function() {
    moveUni();
};
//
depth = 0;
var score = 0;
var allEggs = new Array();
function makeNewClip() {
    clearInterval(ranID);
    ran = (Math.random()*4000)+1000;
    ranID = setInterval(makeNewClip, ran);
    ran = Math.ceil(Math.random()*2);
    if (ran == 1) {
        newClip = _root.attachMovie('BlueEgg', 'BlueEgg'+depth, depth++);
    } else {
        newClip = _root.attachMovie('PinkEgg', 'PinkEgg'+depth, depth++);
    }
    allEggs.push(newClip);
    trace("allEggs");
    newClip._x = Math.random()*Stage.width;
    newClip._y = -50;
    newClip.speed = 13;
    newClip._xscale = newClip._yscale=50;
    newClip.onEnterFrame = function() {
        this._y += this.speed;
        if (Math.abs(Uni._x-this._x)<=25) {
            if (Math.abs(Uni._y-this._y)<=25) {
                trace('hit');
                this.removeMovieClip();
                score++;
                score_txt.text = score;
            }
        }
    };
}

//

var intID;
var endTime = getTimer()+(5*1000);
makeTime();
function updateTimer() {
    var t = endTime-getTimer();
    if (t>0) {
        makeTime();
        showTime(t);
    } else {
        stopTimer();
        showTime(0);


    }
}
function makeTime() {
    clearInterval(intID);
    intID = setInterval(updateTimer, 100);
    gotoAndStop(20);
}

function showTime(t) {
    timer_txt.text = (t/1000) >> 0;

    }

function stopTimer() {
    clearInterval(intID);

}

//  
makeNewClip();
//
makeNewClip();
newClip = _root.attachMovie('TallGrassOverlay', 'TallGrassOverlay', 1);
TallGrassOverlay._y = Stage.height-230;
TallGrassOverlay._x = Stage.width-585;

TallGrasssOverlay不做任何事情,只是作为一个额外的图形,以帮助使游戏流行到玩家的眼睛。但它的图形需要放在移动捕手上,Uni。

此外,应该注意的是,我还没有开始编码实际重启游戏的按钮。

提前非常感谢!

-Bri

0 个答案:

没有答案