| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- /**
- * 游戏工具类
- * @description 依据引擎Api的工具类,用于操作引擎相关系统的开关、操作引擎相关的api属性,比如坐标
- * @author 冯聪
- */
- export default class GameUtil {
- /** 获取屏幕尺寸 */
- public getWinSize(): cc.Size {
- return cc.winSize;
- }
- /** 激活物理系统 */
- public enablePhysics() {
- cc.director.getPhysicsManager().enabled = true;
- }
- /** 绘制物理信息 */
- public debugDrawPhysicsFlag(ifDraw: boolean = false) {
- if (ifDraw) {
- cc.director.getPhysicsManager().debugDrawFlags =
- cc.PhysicsManager.DrawBits.e_aabbBit |
- cc.PhysicsManager.DrawBits.e_jointBit |
- cc.PhysicsManager.DrawBits.e_shapeBit;
- }
- else {
- cc.director.getPhysicsManager().debugDrawFlags = 0;
- }
- }
- private btnTimeDic: Object;
- /**给按钮做连续点击检测
- * @param btn 点击的按钮
- * @param delay 按钮连续点击间隔,delay间隔内不能连续点击
- * @return true 可以点击
- */
- public checkContinuousClick(btn:cc.Node, delay: number = 1): boolean {
- if (this.btnTimeDic == null) {
- this.btnTimeDic = {};
- }
- let key = (btn as any)._id;
- let last: number = this.btnTimeDic[key];
- let now: number = new Date().getTime();
- var b = last == null || now - last > delay * 1000;
- if (b) {
- this.btnTimeDic[key] = now;
- }
- return b;
- }
- /**
- * 获取世界坐标
- * @param 需要获取的节点
- */
- public getWorldPos(node: cc.Node): cc.Vec2 {
- let originX = node.x;
- let originY = node.y;
- let curNode = node;
- while (curNode.parent) {
- let parent = curNode.parent;
- if (parent.name == 'Canvas') {
- break;
- }
- originX += parent.x;
- originY += parent.y;
- curNode = parent;
- }
- return new cc.Vec2(originX, originY);
- }
- /** node的坐标改为全局坐标 中间为原点 */
- public localConvertWorldPointARCenter(node: cc.Node) {
- let o1 = cc.view.getVisibleSize();
- let o2 = node.convertToWorldSpaceAR(cc.v2(0, 0));
- o2.x = o2.x - o1.width / 2;
- o2.y = o2.y - o1.height / 2;
- return o2;
- }
- }
|