查看原文或更新请移步到我的wiki: https://github.com/cheyiliu/All-in-One/wiki/cocos2d-x-3.3-018-joystick4cocos3.3
joystick
- joystick for cocos2d-x v3.3
- 完整代码和资源 https://github.com/cheyiliu/joystick
核心思想
- 解耦,采用事件机制将joystick的事件和目标对象之间的关联进行解耦
实现思路
- 1.继承自layer并注册监听touch event
- 2.若touch事件在joystick的中心点触发的,则继续下面的逻辑
- 3.更新joystick中心点的位置
- 4.计算touch点joystick中心点的角度(角度范围,第一象限[0, 90], 第二象限[90, 180], 第三象限[-180, -90], 第四象限[-90, 0])
- 5.发布自定义的joystick event,目前事件仅包含上面计算的角度值,可根据需要进行增改
- 6.注册joystick event的事件监听器,并在回调函数里实现你的业务逻辑
- 7.joystick event中的userdata的内存释放,交给auto-release-pool了, 具体见JoystickEvent的实现
核心代码
- JoystickEvent主要是规范内存管理,严格按照cocos的'风俗'进行: 两段构造方式create+Ref+pool,使create出的对象像个栈上的局部变量。(mainLoop下次清理pool时自动删除)。
- Joystick的核心代码