作者mucoci (奇宝~)
看板Flash
标题[问题] 没有监听可取消??
时间Sat Sep 19 19:15:31 2015
小弟之前有作一个点击画面,便可移动背景的程式
(就是人物行走时的概念)
以前在用的时候,没发现问题(漏掉了)
现在在用的时候,发现问题很大
就是当我点击一次时,进行移动。移动到目的地时,停止移动
但在移动未停止前,再点击一次时,速度会增加
再点击,速度再增加
初步判定是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://webptt.com/cn.aspx?n=bbs/Flash/M.1442661334.A.116.html
1F:推 lianglech: hasevent 09/19 20:11
2F:→ mucoci: 楼上?? 09/19 20:15
3F:推 KawasumiMai: 一楼说的是 if(stage.hasEventListener(Event.ENT... 09/22 21:42
4F:→ KawasumiMai: 不过基本上,你会出现这种问题表示你的写法不够简洁 09/22 21:42
5F:→ KawasumiMai: 才会有你觉得应该要有却没有的情况。虽然检查是必要 09/22 21:43
6F:→ KawasumiMai: 痾,你说程式码可直接复制测试,但你的MouseEvent的 09/22 21:50
7F:→ KawasumiMai: 结尾中括胡没看到,范围包了下面一堆function跟另一 09/22 21:50
8F:→ KawasumiMai: 个事件,这样无法确认你原code是不是真的正确。 09/22 21:50
9F:→ KawasumiMai: 看起来就是有节录跟筛选过 09/22 21:51
10F:→ mucoci: K大,我程式码刚改成只想测的重点了,可直接测试 09/23 10:34
11F:→ mucoci: 另外,我用haseventListener测过了,stage的监听是任何 09/23 10:34
12F:→ mucoci: 时候都在的,我也问过其他写程式的朋友,也没有看出问题 09/23 10:35
13F:→ mucoci: 但移除时enter_frame时,就是说没有这东西.... 09/23 10:35
※ 编辑: mucoci (114.27.18.35), 09/23/2015 11:51:29
14F:→ viceversa56: var f_i:Number=0;//测试可移动用的计数器 09/23 20:11
15F:→ viceversa56: function start_move(e:Event):void{...} 09/23 20:11
16F:→ viceversa56: 移到最外层,不要function 里面又包一个function 09/23 20:12