flash 原生UI 与 starling 鼠标事件冲突解决办法
发布时间:2020-12-15 17:32:11 所属栏目:百科 来源:网络整理
导读:package com.util.core.commands{import com.game.ui.main.WindowState;import flash.display.Stage;import flash.events.MouseEvent;/** * 作用于判断是否点击到原生的FLASH UI 界面 如果是的话就不向starling 发送 点击事件 如果不是的话则继续发送事件 *
package com.util.core.commands { import com.game.ui.main.WindowState; import flash.display.Stage; import flash.events.MouseEvent; /** * 作用于判断是否点击到原生的FLASH UI 界面 如果是的话就不向starling 发送 点击事件 如果不是的话则继续发送事件 * @author Administrator * */ public class StarlingEventShield { public function StarlingEventShield() { } static public var mouseDown:Boolean = false; static public var mouseDrag:Boolean = false; static private var stage:Stage; static public function activate( stage:Stage ) : void { if ( StarlingEventShield.stage ) return; StarlingEventShield.stage = stage; stage.addEventListener( MouseEvent.MOUSE_DOWN,onStage_MouseDown,false,1,true ); stage.addEventListener( MouseEvent.MOUSE_UP,onStage_MouseUp,true ); } static private function onStage_MouseDown(e:MouseEvent):void { if(WindowState.windows == WindowState.MFightWindow) { if(e.target == MClient.client) { mouseDown = true; }else if ( e.target != stage ) e.stopImmediatePropagation(); else mouseDown = true; } } static private function onStage_MouseMove(e:MouseEvent):void { if ( mouseDown ) mouseDrag = true; if ( e.target != stage && !mouseDrag ) e.stopImmediatePropagation(); } static private function onStage_MouseUp(e:MouseEvent):void { if(WindowState.windows == WindowState.MFightWindow) { if ( e.target != stage && !mouseDrag ) e.stopImmediatePropagation(); mouseDown = mouseDrag = false; } } static public function deactivate() : void { if ( !stage ) return; stage.removeEventListener( MouseEvent.MOUSE_DOWN,onStage_MouseDown ); stage.removeEventListener( MouseEvent.MOUSE_UP,onStage_MouseUp ); mouseDown = mouseDrag = false; stage = null; } } } 在项目中出现过当前问题本来以为在程序里面用事件截断处理就可以不会出现事件渗透到starling,而且在pc上是可以实现当前的目标。 但是 真正在移动设备上使用的时候就不是那么简单的了。事件还是能够被starling监控到。咋办呢--直接上源码吧 这也是在一个外文的网站上看到的一个代码哪个网址不记得了不好意思。 希望能够帮助到其他人吧。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- 为什么我会收到警告:(接近初始化’ptr’)和运行时的分段错误
- @XMLRootElement与@XmlType
- c# – 调用Stream.Write和使用StreamWriter有什么区别?
- Sqlite学习笔记(四)&&SQLite-WAL原理 Write ahead
- 正则表达式参考 TCL语言版收藏
- swift – 无法调用非函数类型UIAlertAction的值
- cocos2dx动画常见22种特效
- 如何使用C#代码检测XSLT转换中的“解析时间”?
- ruby-on-rails – Rails / Ember – active_model_serializ
- c – 文件读取:二进制文件的feof()