GameUtil.ts 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. /**
  2. * 游戏工具类
  3. * @description 依据引擎Api的工具类,用于操作引擎相关系统的开关、操作引擎相关的api属性,比如坐标
  4. * @author 冯聪
  5. */
  6. export default class GameUtil {
  7. /** 获取屏幕尺寸 */
  8. public getWinSize(): cc.Size {
  9. return cc.winSize;
  10. }
  11. /** 激活物理系统 */
  12. public enablePhysics() {
  13. cc.director.getPhysicsManager().enabled = true;
  14. }
  15. /** 绘制物理信息 */
  16. public debugDrawPhysicsFlag(ifDraw: boolean = false) {
  17. if (ifDraw) {
  18. cc.director.getPhysicsManager().debugDrawFlags =
  19. cc.PhysicsManager.DrawBits.e_aabbBit |
  20. cc.PhysicsManager.DrawBits.e_jointBit |
  21. cc.PhysicsManager.DrawBits.e_shapeBit;
  22. }
  23. else {
  24. cc.director.getPhysicsManager().debugDrawFlags = 0;
  25. }
  26. }
  27. private btnTimeDic: Object;
  28. /**给按钮做连续点击检测
  29. * @param btn 点击的按钮
  30. * @param delay 按钮连续点击间隔,delay间隔内不能连续点击
  31. * @return true 可以点击
  32. */
  33. public checkContinuousClick(btn:cc.Node, delay: number = 1): boolean {
  34. if (this.btnTimeDic == null) {
  35. this.btnTimeDic = {};
  36. }
  37. let key = (btn as any)._id;
  38. let last: number = this.btnTimeDic[key];
  39. let now: number = new Date().getTime();
  40. var b = last == null || now - last > delay * 1000;
  41. if (b) {
  42. this.btnTimeDic[key] = now;
  43. }
  44. return b;
  45. }
  46. /**
  47. * 获取世界坐标
  48. * @param 需要获取的节点
  49. */
  50. public getWorldPos(node: cc.Node): cc.Vec2 {
  51. let originX = node.x;
  52. let originY = node.y;
  53. let curNode = node;
  54. while (curNode.parent) {
  55. let parent = curNode.parent;
  56. if (parent.name == 'Canvas') {
  57. break;
  58. }
  59. originX += parent.x;
  60. originY += parent.y;
  61. curNode = parent;
  62. }
  63. return new cc.Vec2(originX, originY);
  64. }
  65. /** node的坐标改为全局坐标 中间为原点 */
  66. public localConvertWorldPointARCenter(node: cc.Node) {
  67. let o1 = cc.view.getVisibleSize();
  68. let o2 = node.convertToWorldSpaceAR(cc.v2(0, 0));
  69. o2.x = o2.x - o1.width / 2;
  70. o2.y = o2.y - o1.height / 2;
  71. return o2;
  72. }
  73. }