Canvas不能接收 rollOver和roolOut事件的解决方案
2008-11-05 11:26
183 查看
以前也遇到这个问题,今天在老舍的FLASH四合院看到了答案,而且解释的非常好非常详细.
一个没有任何内容的透明 Canvas 不能触发rollOver和roolOut事件的侦听器函数,比如下面这个程序
程序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')" />
</mx:Application>
编译后,你把鼠标移上去,会发现没有任何输出,
解决方法:
程序代码
1,<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')" backgroundAlpha="0" backgroundColor="#ff000"/>
程序代码
2,<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')"
preinitialize="canvas.setStyle('mouseShield', true);"/>
前提是你的 canvas 的 borderSkin 是 mx.skins.halo::HaloBorder.
原理:
没有任何内容的透明Canvas ,鼠标放上去,空无一物,当然不能触发鼠标事件。
所以我们要
1,backgroundAlpha="0" backgroundColor="#ff000"。
或者
2,将canvas的 mouseShield 样式设为 true,容器会自动给自己绘制一个alpha=0,白色的背景
backgroundAlpha="0" backgroundColor="#ffffff"(可以参考mx.skins.halo::HaloBorder类的drawBackground函数)
为什么MouseEvent.CLICK,MouseEvent.DOUBLE_CLICK,MouseEvent.MOUSE_DOWN,MouseEvent.MOUSE_MOVE,
MouseEvent.MOUSE_OVER,MouseEvent.MOUSE_OUT,MouseEvent.MOUSE_UP,
MouseEvent.MOUSE_WHEEL事件不需要这样做,因为当设置这些事件的时候,flex自动的给canvas设置了setStyle('mouseShield', true) 样式(可以参考mx.core::Container 类的addEventListener 函数)。
来自:http://www.flashshe.com/articles/article.asp?id=11
一个没有任何内容的透明 Canvas 不能触发rollOver和roolOut事件的侦听器函数,比如下面这个程序
程序代码
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute">
<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')" />
</mx:Application>
编译后,你把鼠标移上去,会发现没有任何输出,
解决方法:
程序代码
1,<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')" backgroundAlpha="0" backgroundColor="#ff000"/>
程序代码
2,<mx:Canvas id="canvas" x="10" y="10" width="200" height="200"
rollOver="trace('in')" rollOut="trace('out')"
preinitialize="canvas.setStyle('mouseShield', true);"/>
前提是你的 canvas 的 borderSkin 是 mx.skins.halo::HaloBorder.
原理:
没有任何内容的透明Canvas ,鼠标放上去,空无一物,当然不能触发鼠标事件。
所以我们要
1,backgroundAlpha="0" backgroundColor="#ff000"。
或者
2,将canvas的 mouseShield 样式设为 true,容器会自动给自己绘制一个alpha=0,白色的背景
backgroundAlpha="0" backgroundColor="#ffffff"(可以参考mx.skins.halo::HaloBorder类的drawBackground函数)
为什么MouseEvent.CLICK,MouseEvent.DOUBLE_CLICK,MouseEvent.MOUSE_DOWN,MouseEvent.MOUSE_MOVE,
MouseEvent.MOUSE_OVER,MouseEvent.MOUSE_OUT,MouseEvent.MOUSE_UP,
MouseEvent.MOUSE_WHEEL事件不需要这样做,因为当设置这些事件的时候,flex自动的给canvas设置了setStyle('mouseShield', true) 样式(可以参考mx.core::Container 类的addEventListener 函数)。
来自:http://www.flashshe.com/articles/article.asp?id=11
相关文章推荐
- (转)Canvas不能接收 rollOver和roolOut事件的解决方案
- Canvas不能接收 rollOver和roolOut事件的解决方案
- Axure RP Pro - 相关问题 - dynamic panel动态面板上的image图片部件设置了rollover翻转图片后在OnClick事件中不能正确隐藏所在面板
- Android Canvas不能换行,或者不识别\n,\r\n的解决方案
- iphone 最近碰到的一个uibutton不能接收点击事件的问题
- 不能接收彩信的原因及自动收发彩信解决方案
- SharePoint 2013 的页面中window/document.onload/ready 事件不能触发的解决方案
- SharePoint 2013 的页面中window/document.onload/ready 事件不能触发的解决方案
- WindowManger 事件接收 不能接收onTouch
- web中接收不到自定义控件事件的简单解决方案(修改控件)
- IE6和IE7下根Canvas的KeyDown事件都不能被方向键触发
- 关于cocos2d-x 触屏事件不能接收的问题
- SharePoint 2013 页面中window/document.onload/ready 事件不能触发的解决方案
- html2canvas不能识别svg的解决方案
- 快速单击触发双击事件解决方案
- iPhone safari中Document事件不触发的解决方案 [冒泡]
- 接收的事件消息
- 移动端点击a标签和img标签以及添加的js点击事件时的闪屏问题 解决方案
- MMC不能打开文件C:/Program Files/Microsoft SQL Server/80/Tools/Binn/SQL Server Enterprise Manager.MSC的解决方案
- 密码输入框,确认密码输入框不能复制粘贴-----点击事件阻止