CustomClick.js 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. cc.Class({
  2. extends: cc.BaseClass,
  3. properties: {
  4. m_ClickAni:cc.Prefab,
  5. },
  6. onLoad: function() {
  7. this.m_Pool = new cc.NodePool('ClickAni');
  8. var initCount = 10;
  9. for (var i = 0; i < initCount; ++i) {
  10. var ani = cc.instantiate(this.m_ClickAni); // 创建节点
  11. this.m_Pool.put(ani); // 通过 put 接口放入对象池
  12. }
  13. this.node.on(cc.Node.EventType.TOUCH_START, this.onTouchBegan, this);
  14. this.node._touchListener.setSwallowTouches(false);
  15. },
  16. getClickAni: function (parentNode) {
  17. let ani = null;
  18. if (this.m_Pool.size() > 0) { // 通过 size 接口判断对象池中是否有空闲的对象
  19. ani = this.m_Pool.get(this);
  20. } else { // 如果没有空闲对象,也就是对象池中备用对象不够时,我们就用 cc.instantiate 重新创建
  21. this.m_Pool.put(cc.instantiate(this.m_ClickAni));
  22. ani = this.m_Pool.get(this);
  23. }
  24. ani.parent = parentNode; // 将生成的敌人加入节点树
  25. return ani;
  26. },
  27. onClickAniKilled: function (ani) {
  28. // ani 应该是一个 cc.Node
  29. this.m_Pool.put(ani); // 和初始化时的方法一样,将节点放进对象池,这个方法会同时调用节点的 removeFromParent
  30. },
  31. Copy: function(pos) {
  32. var pNode =this.getClickAni(g_CurScene.node);
  33. pNode.x = pos.x;
  34. pNode.y = pos.y;
  35. },
  36. //触摸事件
  37. onTouchBegan: function (event) {
  38. this.Copy(this.node.convertToNodeSpaceAR(event.getLocation()));
  39. return false;
  40. },
  41. });