2014-03-02 83 views
0

我想在ActionScript中使用動作反轉滾動背景的方向。反轉循環滾動背景動作

我想如果我只是改變了BG1.y-=10BG1.y+=10,會做的伎倆,但它似乎打破if語句和backgound不再循環。

任何人都可以給我一些方向,指出事情會出錯嗎?

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

我沒有看到的代碼,使這個滾動。有沒有一個ENTER_FRAME循環來驅動它?你能展示更多的代碼嗎? – Craig

回答

0

你在正確的假設,如果你如果你改變了迭代的10的正增量更新語句將不再工作,你的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; 
} 
+0

感謝您的支持 – MonkeyCMonkeyDo