as3页游聊天框点击透明区域及普通文本支持寻路方案
2013-02-28 16:20
78 查看
关于聊天模块点击非富文本,支持人物走路的问题,今天在群里和大伙讨论了一下,其中有个兄弟的方案是这样的:
方案一:
1、用一个文本框TF1将聊天信息显示出来;
2、将富文本(超级链接文本)存储在一个数组;
3、用一个TextField去显示一个富文本,然后盖在原富文本上面;
4、将TF1文本框的mouseEnabled设置为false。
对于这个方案,我觉得能够实现,原理和 图文混排 一样。但是要管理那么多 tf,比较消耗性能,也很繁琐。
经过尝试,我用自己的方法实现了此功能,方法非常简单。
方案二:
描述:聊天窗背景是一个MC(panel),所有的聊天信息用一个tf来显示。
1、用panel和tf侦听鼠标点击事件,对tf侦听LINK事件;
2、panel和tf用同一个函数响应,然后抛出一个自定义事件,在这个自定义事件里将MouseEvent作为参数携带;
3、在寻路代码里面侦听这个自定义事件,然后通过参数MouseEvent可以或许点击的舞台坐标,从而计算人物行走
的目的地。这样就实现了点击非富文本可以寻路的功能。
当然,不是这样做就完事了。这里还有个问题:点击富文本的时候,也会触发click鼠标事。,按照策划的要求,
点击富文本是不能寻路的。经测试发现,click事件发生在link事件之后。所以我在link事件里面将tf的click事件移除,
然后延迟100毫秒后再加上,这样就行了
下面是大致的代码:
方案一:
1、用一个文本框TF1将聊天信息显示出来;
2、将富文本(超级链接文本)存储在一个数组;
3、用一个TextField去显示一个富文本,然后盖在原富文本上面;
4、将TF1文本框的mouseEnabled设置为false。
对于这个方案,我觉得能够实现,原理和 图文混排 一样。但是要管理那么多 tf,比较消耗性能,也很繁琐。
经过尝试,我用自己的方法实现了此功能,方法非常简单。
方案二:
描述:聊天窗背景是一个MC(panel),所有的聊天信息用一个tf来显示。
1、用panel和tf侦听鼠标点击事件,对tf侦听LINK事件;
2、panel和tf用同一个函数响应,然后抛出一个自定义事件,在这个自定义事件里将MouseEvent作为参数携带;
3、在寻路代码里面侦听这个自定义事件,然后通过参数MouseEvent可以或许点击的舞台坐标,从而计算人物行走
的目的地。这样就实现了点击非富文本可以寻路的功能。
当然,不是这样做就完事了。这里还有个问题:点击富文本的时候,也会触发click鼠标事。,按照策划的要求,
点击富文本是不能寻路的。经测试发现,click事件发生在link事件之后。所以我在link事件里面将tf的click事件移除,
然后延迟100毫秒后再加上,这样就行了
下面是大致的代码:
package { import flash.display.Scene; import flash.display.Sprite; import flash.events.MouseEvent; import flash.events.TextEvent; import flash.text.TextField; import flash.utils.setTimeout; public class Text extends Sprite { private var _tf:TextField; private var _panel:Sprite; public function Text() { _tf = new TextField(); _panel = new Sprite(); //... _tf.addEventListener(TextEvent.LINK,onLink); _tf.addEventListener(MouseEvent.CLICK,onClick); _panel.addEventListener(MouseEvent.CLICK,onClick); } private function onLink(e:TextEvent):void { // ... //为了点击富文本,不触发click事件,所以临时移除 if(_tf.hasEventListener('click')) _tf.removeEventListener(MouseEvent.CLICK,onClick); setTimeout(setEvent,100); } private function setEvent():void { _tf.addEventListener(MouseEvent.CLICK,onClick); } private function onClick(e:MouseEvent):void { var event:SceneEvent = new ScneEvent();//自定义事件 event.data = e; eventDispatcher(event); } } }
相关文章推荐
- as3页游聊天框点击透明区域及普通文本支持寻路方案
- 点击文本区域背景色改变
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- cocos2dx 检测是否点击到了图片的透明区域
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- iOS实现UIImageView透明区域点击事件穿透(OC&swift)
- 支持按行号区域文本选择的NotePad++插件开发
- IOS 文本输入时,文本框上移。 点击空白区域 取消键盘的代码
- cocos2dx 检测是否点击到了图片的透明区域
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html
- BitMapData位图相交区域透明 解决深度管理方案
- Android RichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- DD_belatedPNG透明,解决IE6不支持PNG绝佳方案
- IOS-升级101 非RectButton(透明区域不可点击View)
- IOS 多个ImageView图片层叠透明区域点击事件穿透
- DD_belatedPNG透明,解决IE6不支持PNG绝佳方案
- 支持按行号区域文本选择的NotePad++插件开发
- java 利用spring JavaMailSenderImpl发送邮件,支持普通文本、附件、html、velocity模板
- AndroidRichText 让Textview轻松的支持富文本(图像ImageSpan、点击效果等等类似QQ微信聊天)