我正在尝试使用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;
}
}
}
答案 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;
}