2012-06-11 78 views
0

我有兩個按鈕可以向上/向下移動Y軸上的動畫片段。我如何讓電影剪輯在一定高度停下來,仍然可以將它向相反的方向移動?如何通過按鈕停止Y軸上的動畫片段?

我需要這這樣的工作:

當您按下下行按鈕,影片剪輯從上至下,而不是過去的Y = 500。 當按下了按鈕,影片剪輯會向上升,而不是過去的Y = 300

我得到的影片剪輯停在正確的點(500),但是當它到達這一點上,卡住了.. 所以如果按下向上按鈕它不會再向上。

有人可以幫我請:)

這裏是到目前爲止我的代碼:?

1) decrease = the down-button 
2) increase = up-button 
3) stempel = the movieclip I want to stop on the Y-axis 



var moveStempel = 0; 

decrease.addEventListener(MouseEvent.MOUSE_DOWN, decreasePressed); 
decrease.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame); 

increase.addEventListener(MouseEvent.MOUSE_DOWN, increasePressed); 
increase.addEventListener(MouseEvent.MOUSE_UP, removeEnterFrame); 

function decreasePressed(e:MouseEvent):void 
{ 
    moveStempel = 2; 
    addEnterFrame(); 
} 


function increasePressed(e:MouseEvent):void 
{ 
    moveStempel = -2; 
    addEnterFrame(); 
} 




// ADD ENTER FRAME 
function addEnterFrame():void 
{  
    this.addEventListener(Event.ENTER_FRAME, update); 
} 

function removeEnterFrame(e:MouseEvent):void 
{  
    this.removeEventListener(Event.ENTER_FRAME, update); 
} 

function update(e:Event):void 
{  
    if (stempel.y < 500) 
    { 
     stempel.y += moveStempel; 
     trace("inside"); 
    } 

    else if (stempel.y > 500) 
    { 
     stempel.stop(); 
     trace("outside"); 
    } 
+1

說實話,我很少有時間投入到這樣的問題,你需要投入一點努力自己(描述性的方法名,變量名是在論壇的共同語言清晰),如果我我要快速掃描如此龐大的代碼塊來嘗試查看您的問題。也許別人有時間看你的代碼並解密它。 –

+0

根據您所描述的內容,我建議讓對象的垂直移動發生在另一個動畫片段內部,然後該父動畫片段就是水平移動的內容。只是一個建議... – CodeMouse92

回答

0

在你的代碼的權利,一旦stempel具有y值大於500,這將永遠無法再次移動。

stempel可以移動的條件有兩種:如果它向下移動,它不能位於允許區域的底部,如果它向上移動,它不能位於允許區域的頂部。

if ((stempel.y < 500 && moveStempel == 2) || (stempel.y > 300 && moveStempel == -2)) 
{ 
    stempel.y += moveStempel; 
    trace("inside"); 
} 
else 
{ 
    stempel.stop(); 
    trace("outside"); 
} 
+0

嗨!感謝回答:)但我仍然有問題後,在movieclip停止在500.我試着用hitTestObject和不同的腳本,但仍然沒有適當的解決方案壁壘..任何其他建議? – Cat

+0

如果你刪除'stempel.stop();'會發生什麼?不需要防止'stempel'移動得太遠。如果這不是問題,那麼問題很可能發生在您發佈的代碼之外的某個地方。 – CheeseWarlock