[問題] 沒有監聽可取消??

看板Flash作者 (奇寶~)時間8年前 (2015/09/19 19:15), 8年前編輯推噓2(2014)
留言16則, 4人參與, 最新討論串1/2 (看更多)
小弟之前有作一個點擊畫面,便可移動背景的程式 (就是人物行走時的概念) 以前在用的時候,沒發現問題(漏掉了) 現在在用的時候,發現問題很大 就是當我點擊一次時,進行移動。移動到目的地時,停止移動 但在移動未停止前,再點擊一次時,速度會增加 再點擊,速度再增加 初步判定是ENTER_FRAME監聽事件未移除 但其實我是有加上移除的,只是不知道為啥失敗 請教高手提點 程式碼如下 (只寫重點) import flash.display.MovieClip; import flash.events.Event; stop(); stage.addEventListener(MouseEvent.CLICK,move_map);//對畫面作監听 var now_move_yn:Boolean=false;//判定是否移動中 var time:Number=0;//計數器 function move_map(me:MouseEvent):void { time=time+1; //第二次點擊才有反應,如果在移動中,就取消移動監听 if (now_move_yn==true) { stage.removeEventListener(Event.ENTER_FRAME,start_move); //就是這個無法移除,因為是空的,但f_i+1卻仍在跑 } now_move_yn=true;//點擊後,便成了移動狀態 if (time==1)//先以移動一次來作測試 { //開始移動 stage.addEventListener(Event.ENTER_FRAME,start_move); var f_i:Number=0;//測試可移動用的計數器 function start_move(e:Event):void { f_i=f_i+1;//有+1就表示在移動 trace ("f_i="+f_i); } } } 小弟弄了快一下午,請教高手指點 到底我哪沒看到呢?? 程式碼可直接複製測試~~~點兩下畫面就知道bug在哪了 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.27.19.146 ※ 文章網址: https://www.ptt.cc/bbs/Flash/M.1442661334.A.116.html

09/19 20:11, , 1F
hasevent
09/19 20:11, 1F

09/19 20:15, , 2F
樓上??
09/19 20:15, 2F

09/22 21:42, , 3F
一樓說的是 if(stage.hasEventListener(Event.ENT...
09/22 21:42, 3F

09/22 21:42, , 4F
不過基本上,你會出現這種問題表示你的寫法不夠簡潔
09/22 21:42, 4F

09/22 21:43, , 5F
才會有你覺得應該要有卻沒有的情況。雖然檢查是必要
09/22 21:43, 5F

09/22 21:50, , 6F
痾,你說程式碼可直接複製測試,但你的MouseEvent的
09/22 21:50, 6F

09/22 21:50, , 7F
結尾中括胡沒看到,範圍包了下面一堆function跟另一
09/22 21:50, 7F

09/22 21:50, , 8F
個事件,這樣無法確認你原code是不是真的正確。
09/22 21:50, 8F

09/22 21:51, , 9F
看起來就是有節錄跟篩選過
09/22 21:51, 9F

09/23 10:34, , 10F
K大,我程式碼剛改成只想測的重點了,可直接測試
09/23 10:34, 10F

09/23 10:34, , 11F
另外,我用haseventListener測過了,stage的監听是任何
09/23 10:34, 11F

09/23 10:35, , 12F
時候都在的,我也問過其他寫程式的朋友,也沒有看出問題
09/23 10:35, 12F

09/23 10:35, , 13F
但移除時enter_frame時,就是說沒有這東西....
09/23 10:35, 13F
※ 編輯: mucoci (114.27.18.35), 09/23/2015 11:51:29

09/23 20:11, , 14F
var f_i:Number=0;//測試可移動用的計數器
09/23 20:11, 14F

09/23 20:11, , 15F
function start_move(e:Event):void{...}
09/23 20:11, 15F

09/23 20:12, , 16F
移到最外層,不要function 裡面又包一個function
09/23 20:12, 16F
文章代碼(AID): #1L_KFM4M (Flash)
文章代碼(AID): #1L_KFM4M (Flash)