Re: [問題] 請問怎麼讓FLASH裡的物件平滑移動

看板Flash作者時間11年前 (2013/05/23 11:11), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/2 (看更多)
※ 引述《euph (咬咬嚼嚼猴子口味)》之銘言: : 是這樣的 我建立了一個MovieClip物件 : 我希望用鍵盤的上下鍵來上下移動這物件的位置 : 用最基礎的 object._y += offset : 會讓物件在移動的時候有卡卡的感覺 : 有想要利用tween去試著補間 : 可是我的長度和移動距離都是動態給予 : 想請問一下 可以在AS裡面去做tween嗎?? : 如果可以 請問有沒有參考的網站或例子可以分享呢?? : 謝謝各位前輩幫忙 :) 不好意思,重看了你的問題感覺好像搞錯了你的意思。 看到tween就直覺回應那個網站,雖然那個也可以解決你的問題, 不過不太適合。 你的問題應該是感覺按下方向鍵時,會先動一下,再卡一下,然後才會正常連續移動。 如果是的話,那可以參考以下作法。 基本上這個問題是鍵盤事件觸發原理所影響的, 通常我的作法是將按鍵 被按下、被放開 以及 enterFrame事件 分開處理 1.先設定一個變數或物件 是用來記錄目標按鍵目前是否是被按下的 2.在被按下監聽中 當為目標鍵時 將變數設定為被按下的狀態 3.在被放開的監聽中 當為目標鍵時 將變數設定為未被按下的狀態 4.在enterFrame監聽中 如果變數的狀態是被按下 則執行要移動的方向 註:enterFrame可以用timer或是類似的功能去取代 如果你是用AS3的話 可以這樣做 import flash.events.Event; import flash.events.KeyboardEvent; import flash.ui.Keyboard; var keyStatus:Object = { }; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownEvent); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpEvent); addEventListener(Event.ENTER_FRAME, onEnterFrameEvent); function onKeyDownEvent(e:KeyboardEvent):void { keyStatus[e.keyCode] = true; } function onKeyUpEvent(e:KeyboardEvent):void { keyStatus[e.keyCode] = false; } function onEnterFrameEvent(e:Event):void { if (keyStatus[Keyboard.UP] == true) { // 執行往上移動事件 } if (keyStatus[Keyboard.DOWN] == true) { // 執行往下移動事件 } } 如果是AS2 也是可以用類似的概念,不過我太久沒用都忘記了 如果想要更平滑的移動 就再增加目前方向速度、加速度等參數來控制 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 36.238.181.128 ※ 編輯: zpl 來自: 36.238.181.128 (05/23 11:15)
文章代碼(AID): #1HdOZdOC (Flash)
文章代碼(AID): #1HdOZdOC (Flash)