Cocos2d + lua 触摸机制
来源:互联网 发布:淘宝最好的沉香卖家 编辑:程序博客网 时间:2024/06/13 23:04
项目中有这样一个面板Main,里面有两个页签Tab1和Tab2,通过点击页签来切换对应的Layer1和Layer2,不显示的Layer执行setPosition(ccp(999999,0))和setVisible(false),显示的Layer执行setPosition(ccp(0,0))和setVisible(true),其中Layer2设置了触摸机制,代码如下:
self.bgLayer=CCLayer:create()
local function tmpHandler(...)
return self:touchEvent(...)
end
self.bgLayer:registerScriptTouchHandler(tmpHandler,false,-(self.layerNum-1)*20-3,false)
self.bgLayer:setTouchPriority(-(self.layerNum-1)*20-3)
self.bgLayer:setTouchEnabled(true)
self.bgLayer:setBSwallowsTouches(false)
现在的问题是显示Layer2后再切回Layer1的显示的话,点击Layer1会触发Layer2的触摸事件。
通过查询资料才知道:
CCLayer无论是隐藏还是显示都会收到触摸消息,如果希望窗口(一个CCLayer)在显示的时候才收到触摸,那么可以在began的时候返回isVisible()。
问题解决了,现在让我们整理一下cocos2dx的触摸机制:触摸消息类型
触摸有开始(ccTouchBegan)、移动(ccTouchMoved)、结束(ccTouchEnded)、取消 (ccTouchCancelled)类型的消息。一个点击动作会有以下消息顺序:began->ended。cancel只有在手机上按到 home键或者有电话的情况下才会触发。
代码示例如下:(在began的时候返回true或1,后续才会收到end、move和cancel。)
function MainTab2:touchEvent(fn,x,y,touch)
if fn=="began" then--开始elseif fn=="moved" then--移动elseif fn=="ended" then--结束else--取消end
end
- setTouchEnabled(true)注册完触摸事件后如果setTouchEnabled(true)则触摸事件生效,否则触摸没有响应。
- CCLayer::registerScriptTouchHandler()一共有4个参数,用于回调的函数,是否接受多点触摸,优先级,是否吞并。~~~~~~~~有时间看下底层逻辑~~~~~~~~
0 0
- Cocos2d + lua 触摸机制
- cocos2d-x 2.2.2 在lua中使用触摸机制
- cocos2d-lua 触摸事件
- cocos2d-x lua 触摸事件
- Cocos2d-x Lua 触摸事件
- Cocos2d-x 3.0---触摸机制
- Cocos2d-x 3.0---触摸机制
- Cocos2d-x 3.0 触摸机制
- Cocos2d-x 3.0 触摸机制
- Cocos2d-x 3.0-触摸机制
- Cocos2d-x 3.0 触摸机制
- 【cocos2d-x 3.5】Lua触摸事件
- cocos2d lua 设置触摸回调
- cocos2d-x-lua 单点触摸事件
- cocos2d-x 触摸事件处理机制
- cocos2d-x的触摸消息分发机制
- Cocos2d-x 3.0 触摸事件处理机制
- cocos2d-x 3.0 触摸机制的使用
- 【1】Oracle_PL/SQL
- hdu1087(DP)
- Java多线程之 生产者与消费者
- linux修改IP方法
- git详细学习
- Cocos2d + lua 触摸机制
- slidingmenu
- 整数划分问题 【俩方法:1.dp 2.dfs枚举】
- VS2010调试低版本的项目,提示:“无法启动程序”
- 转:巧用CAS解决数据一致性问题
- 【Qt开发】【Gstreamer开发】Qt error: glibconfig.h: No such file or directory #include <glibconfig.h>
- Activity的六种关闭方式
- 学会使用 Gson @SerializedName
- oracle11g broker使用