Flex制作画图板程序边界事件监听问题

acoal 2010-09-25 02:31:48
最近用Flex写了小的画图板程序,碰到一个问题是在鼠标移出画图面板时,并没有停止画图。

我在画板上加了事件ROLL_OUT事件,当鼠标移出画板时,触发该事件,停止作画,实际测试中发现,这个事件并不好用,当你在画板上很快的移动鼠标时,在距离画板边缘还有一段距离的时候,他就触发了该事件停止绘画了,但是当你很慢的移动鼠标出画板时,他并不触发该事件,只要你速度够慢,他就能一直画下去,这个问题弄的我很不解,请问各位大虾,有没有做过累死的程序,如何解决这个问题呢?
...全文
289 7 点赞 打赏 收藏 举报
写回复
7 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
acoal 2010-09-25
[Quote=引用 6 楼 lieri111 的回复:]

rollOut 和rollover在使用起来和mouseover没有任何区别,只是不同的组件用不同的事件而已,强制结束某个事件就可以了
[/Quote]

我现在遇到的问题不是何时结束事件的问题,而是何时触发事件的问题,我的意思是要在鼠标离开画板的时候就要触发一个事件,但是FLEX提供的事件rollOut 和mouseover事件都不满足条件。mouseover不用说了,rollOut在触发的时候也需要离开对象的所有的子对象,所以鼠标缓慢移动的话,是可以一直在刚刚画出的那条线上,这条线是画板的子对象,所以事件不会触发,即使鼠标从位置上已经移出了画板。
  • 打赏
  • 举报
回复
passself 2010-09-25
rollOut 和rollover在使用起来和mouseover及mouseout没有任何区别,只是不同的组件用不同的事件而已,强制结束某个事件就可以了
  • 打赏
  • 举报
回复
acoal 2010-09-25
[Quote=引用 3 楼 lieri111 的回复:]

这个问题很正常,是因为mouseover的函数响应还没有结束,mouseout的函数就开始了,所以mouseout的函数是不会执行的,处理的办法是,当相应mouseout函数的时候,强制结束mouseover的函数就可以了
[/Quote]

其实我程序里并没有使用这个两个事件,因为如果画图的话,这两个事件触发的太频繁了,根本无法完成功能。
  • 打赏
  • 举报
回复
acoal 2010-09-25
最新进展,现在查到是ROLL_OUT事件触发原因不对,我在官方API上看到这个事件是为了解决由子对象的对象容器而特制定的事件,API上说:

The purpose of the rollOut event is to simplify the coding of rollover behaviors for display object containers with children. When the mouse leaves the area of a display object or the area of any of its children to go to an object that is not one of its children, the display object dispatches the rollOut event. This is different behavior than that of the mouseOut event, which is dispatched each time the mouse leaves the area of any child object of the display object container, even if the mouse remains over another child object of the display object container.

与mouseOut 不同的是,rollOut 在离开其本身和其子对象转到任何其他其他对象上时才触发,而我在使用这个事件的时候,如果鼠标移动很慢的话,鼠标指针还是在刚刚画出的那条线上,所以并不触发该事件,只有鼠标移动很快时,离开了他的子对象,才触发该事件。

问题虽然找到,但是问题并没有解决,因为另外一个事件mouseOut 是在离开其任何一个子对象时都触发,而不管是不是从一个子对象转到另外一个子对象上,所以即使在画板内快速移动鼠标,事件也会触发,因此这个事件也不能用,继续探索,若果有哪位高人想到了解决办法,请告知小弟一下。
  • 打赏
  • 举报
回复
passself 2010-09-25
这个问题很正常,是因为mouseover的函数响应还没有结束,mouseout的函数就开始了,所以mouseout的函数是不会执行的,处理的办法是,当相应mouseout函数的时候,强制结束mouseover的函数就可以了
  • 打赏
  • 举报
回复
acoal 2010-09-25
[Quote=引用 1 楼 leemiki 的回复:]

你肯定响应函数里没写错??那就用mouseOut事件看看
[/Quote]
仔细检查过相应函数了,没有错误,mouseOut事件也试过,发现不能用,如果用这个事件在画板里作画都不成功。
  • 打赏
  • 举报
回复
leemiki 2010-09-25
你肯定响应函数里没写错??那就用mouseOut事件看看
  • 打赏
  • 举报
回复
相关推荐
发帖
Flex
创建于2007-12-13

4328

社区成员

多媒体/设计 Flex
申请成为版主
帖子事件
创建了帖子
2010-09-25 02:31
社区公告
暂无公告