zoukankan      html  css  js  c++  java
  • cocos2d-html5学习之三-为sprite添加触摸事件

    在斗地主中,使用了cc.Sprite来实现扑克,但是cc.Sprite默认并不能接收触摸事件,需要手动将它注册到事件分配器中。

    1. 在onEnter中注册为代理,由于扑克牌会产生重叠,在选择的时候不能让触摸事件传递到被覆盖的牌上,因此不能使用standardTargetedDelegate。

    onEnter:function(){
            cc.registerTargetedDelegate(0, true, this);
            this._touchEnabled=true;
            this._super();
        }

    2. 实现其它几个触摸事件,其中onTouchBegan中需要返回true,否则不会调用后面的onTouchEnded方法。

    onTouchBegan:function(touches,event){
        	var rect = this.touchRect();
        	var point = touches.getLocation();
            if(cc.rectContainsPoint(this.touchRect(),touches.getLocation())){
                this._touchBegan=true;
                return true;
            }
    
            return false;
        }
    
        onTouchEnded:function(touches,event){
            if(this._touchBegan){
                this._touchBegan=false;
    
                if(this.active) {
            		this.active = false;
    
            		this.setPositionY(this.getPositionY() - 30);
            	}
            	else {
            		this.active = true;
    
            		this.setPositionY(this.getPositionY() + 30);
    	        }
            }
        }

    详情见:戴维营教育

  • 相关阅读:
    循环链表问题
    非常有用的编程学习网站
    我的单例模式(C++)
    C# xml解析
    设计模式趣解
    简单工厂(C++)
    贝塞尔曲线 原理
    C++ 1.#QNAN0;1.#QNAN0
    [NOI2018]屠龙勇士 excrt
    [NOI.AC#30]candy 贪心
  • 原文地址:https://www.cnblogs.com/jsxh/p/3495158.html
Copyright © 2011-2022 走看看