0

所以,我正在研究 Actionscript 3 的基础知识;制作游戏等。我设计了一个小空间,一切都基于边界的位置,使用逐像素移动等。

到目前为止,我的家伙可以推动一个盒子,并在跑到边界时停止,或者当盒子靠在边界时尝试推动盒子。

所以,接下来,我想做到,所以当我撞到另一个盒子时,它会向前冲;侧身小跳。

起初我试图(愚蠢地)使用它:

// When right and left borders collide.    
if( (box1.x + box1.width/2) == (box2.x - box2.width/2) ) {

    // Nine times through
    for (var a:int = 1; a < 10; a++) {

        // Adds 1, 2, 3, 4, 5, 4, 3, 2, 1.
        if (a <= 5) {
            box2.x += a; }
        else {
            box2.x += a - (a - 5)*2 } } }

虽然,在我为移动所拥有的功能中使用它(不断检查按键等)一次完成了这一切。我应该从哪里开始进行这样的逐帧运动?此外,它实际上不是场景中的帧,只是在运动中。

这是一大堆垃圾,我很抱歉,但我们将不胜感激。

4

1 回答 1

0

尝试做类似的事情:(注意 ev.target 是您分配侦听器的框)

var boxJumpDistance:Number = 0;

function jumpBox(ev:Event){
    if (boxJumpDistance<= 5) {
        ev.target.x += boxJumpDistance; }
    else if(boxJumpDistance<=10){
        ev.target.x += boxJumpDistance - (boxJumpDistance - 5)*2 
    }
    else{
        boxJumpDistance = 0;
        ev.target.removeEventListener(Event.ENTER_FRAME, jumpBox);
    }
}

然后不用运行循环,只需添加一个侦听器:

box2.addEventListener(Event.ENTER_FRAME, jumpBox);

虽然目前这一次只适用于一个盒子(因为它只使用一个跟踪变量来控制速度),但您真正想要做的是在盒子类内部拥有该功能,但我不确定您的结构去。另一种选择可能是为盒子运动制作一个数组?每帧循环遍历数组。boxesMoveArray[1] >=5对于框 1 等。

于 2010-04-07T06:38:10.327 回答