反向循环滚动背景动作

时间:2014-03-02 11:38:56

标签: actionscript-3 flash

我正在尝试使用actionscript来反转flash中滚动背景的方向。

我想如果我只是将BG1.y-=10更改为BG1.y+=10就可以解决这个问题,但它似乎打破了if语句并且背景不再循环。

有人能给我一些关于出错的方向吗?

function scroll(evt:Event):void
       {
        BG1.y-=10;
        BG2.y-=10;
        if(currentBG.y<-currentBG.height)
           {
               if(currentBG==BG1)
               {
                   BG1.y=BG2.y+BG2.height;
                   currentBG=BG2;
               }
               else
               {
                   BG2.y=BG1.y+BG1.height;
                   currentBG=BG1;
               }
           }
    }

1 个答案:

答案 0 :(得分:0)

如果将迭代更改为10的正增量,则假设if语句不再有效是正确的。要更新if语句以处理这两种情况,您只需确定要滚动的方向并调整因此。因此,您可以创建一个变量 @Rajneesh ,但是以不同的方式实现if语句。这就是看起来的样子:

private function scroll( e:Event ):void {
    BG1.y += scrollSpeed;
    BG2.y += scrollSpeed;

    if ( currentBG.y < -currentBG.height && scrollSpeed < 0 ) {
        currentBG.y += currentBG.height;
        currentBG = currentBG == BG2 ? BG1 : BG2;
    }
    else if ( currentBG.y >= currentBG.height && scrollSpeed > 0 ) {
        currentBG.y -= currentBG.height;
        currentBG = currentBG == BG2 ? BG1 : BG2;
    }
}

我稍微调整了你的if语句,使代码更加精简,但是它做了同样的事情。

因此,如果我们的scrollSpeed为否定,我们会检查:

if ( currentBG.y < -currentBG.height && scrollSpeed < 0 )

我们已确定我们正在向方向滚动,并应相应地调整currentBG y值。的否则

else if ( currentBG.y >= currentBG.height && scrollSpeed > 0 )

我们正在向方向滚动,并应重新定位currentBG,减去其高度。

如果您不熟悉语句中的三元操作?

currentBG = currentBG == BG2 ? BG1 : BG2;

这与if / else语句的说法相同:

if ( currentBG == BG1 ) {
    currentBG = BG2;
} else {
    currentBG = BG1;
}