博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
AS3自定义鼠标光标后应注意鼠标事件捕获问题
阅读量:5237 次
发布时间:2019-06-14

本文共 1604 字,大约阅读时间需要 5 分钟。

   AS3自定义鼠标光标很容易,在帮助中就有这样的代码:

ExpandedBlockStart.gif
AS3自定义鼠标光标
var
 cursor:Sprite 
=
 
new
 Sprite();
cursor.graphics.beginFill(
0x000000
);
cursor.graphics.drawCircle(
0
,
0
,
20
);
cursor.graphics.endFill();
addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
Mouse.hide();
function
 redrawCursor(event:MouseEvent):
void
{
    cursor.x 
=
 event.stageX;
    cursor.y 
=
 event.stageY;
}

  但我们实际的项目不可能简单到没有其他的影片剪辑,假如出现下面的代码:

ExpandedBlockStart.gif
var
 mc:Sprite 
=
 
new
 Sprite();
mc.graphics.beginFill(
0xFF0000
);
mc.graphics.drawRect(
200
,
200
,
100
,
100
);
mc.graphics.endFill();
addChild(mc);
mc.addEventListener(MouseEvent.MOUSE_OVER,overHandler);
function
 overHandler(event:MouseEvent):
void
{
    trace(
"
我不是每次碰到都显示!!
"
);
}
var
 cursor:Sprite 
=
 
new
 Sprite();
cursor.graphics.beginFill(
0x000000
);
cursor.graphics.drawCircle(
0
,
0
,
20
);
cursor.graphics.endFill();
addChild(cursor);
stage.addEventListener(MouseEvent.MOUSE_MOVE,redrawCursor);
Mouse.hide();
function
 redrawCursor(event:MouseEvent):
void
{
    cursor.x 
=
 event.stageX;
    cursor.y 
=
 event.stageY;
}

  上面的代码运行时,如果你鼠标移动的比较慢的话,你会发现trace函数总是不能执行,这是为什么呢?

  原因是因为AS3事件的冒泡机制,事件的触发总是从发生事件的最子显示对象(child)开始向它的父显示对象(parent)逐次传递直到stage对象,这样将会发生两种情况:

1. 如果两个显示对象是某个显示对象的子显示对象或孙显示对象或曾孙显示对象...但它们没有父子这样的容器(contains)关系(记住AS3中的父(parent)与子(child)并不是继承关系,而是包含关系(contains)),那么他们两个在某一时刻只有一个能捕获事件。

2.如果某个显示对象A的索引(index,AS1和2中叫深度)比另一个显示对象B大,那么即便B与A处在同样的位置(即它们重叠),像鼠标事件发生在A上了,B就不会发生了,因为鼠标事件首先被A捕获到。

  正因为第2种情况,上面的第2段代码鼠标移动的比较慢时trace函数总是不能执行,因为mc显示对象首先添加,它的Index比cursor小。至于快速移动就能执行trace函数是因为cursor显示对象移动迟缓,跟不上鼠标的移动速度,导致鼠标在短时间里可以停留在mc上。

转载于:https://www.cnblogs.com/pains/archive/2010/03/21/1690783.html

你可能感兴趣的文章
末学者笔记--apache编译安装及LAMP架构上线
查看>>
Html列表标签
查看>>
Java8新特性。
查看>>
ajax请求aspx
查看>>
RabbitMQ-2
查看>>
PAT——1035. 插入与归并
查看>>
JS 在元素后面添加新的元素
查看>>
One Night Ultimate Werewolf Daybreak
查看>>
downloadId = downloadId || "downloads"
查看>>
目标,执行,绩效
查看>>
微软Azure运营方世纪互联遭做空后强劲反弹
查看>>
根据经纬度算距离
查看>>
恋爱的心声
查看>>
git 服务器搭建与运用
查看>>
(组件、路由)懒加载
查看>>
数据库查询拼接
查看>>
《C++反汇编与逆向分析技术揭秘》之十——构造函数
查看>>
2018年学习的一门语言
查看>>
lightoj 1057 - Collecting Gold(状压dp)
查看>>
1401机器翻译(Noip2010提高组第1题)
查看>>