zoukankan      html  css  js  c++  java
  • cocos2dx中的层CCLayer

    什么是层,层在cocos2dx里是一个能处理触摸事件的CCNode,因为它负责用户交互,因此大部分游戏细节都在这个类中完成,所以我们经常派生这个图层来完成逻辑交互代码。当然如果你的图层不需要接受交互信息,那么你可以直接使用CCNode来做图层,效率更高


    触摸处理设置:

    默认情况下,CCLayer并不接收触摸事件,只有设置了接收触摸事件才能接受触摸

    CCLayer::setTouchEnabled(true);

    这样Layer就能响应触摸实现了,当触摸开始时

    void CCLayer::ccTouchesBegan(CCSet* pTouches, CCEvent* pEvent);被调用

    当触摸进行时

    void CCLayer::ccTouchesMoved(CCSet* pTouches, CCEvent* pEvent);被调用

    当触摸结束时

    void CCLayer::ccTouchesEnded(CCSet* pTouches, CCEvent* pEvent);被调用

    当触摸过程被打断,比如来电打断了一个触摸事件时

    void CCLayer::ccTouchesCancelled(CCSet* pTouches, CCEvent* pEvent);被调用


    默认触摸是支持多点触摸的,所以被调用上述虚函数,如果不需要支持多点,只要单点,那么应该设置触摸模式

    virtual void setTouchMode(ccTouchesMode mode);

    typedef enum {

    kCCTouchesAllAtOnce,

    kCCTouchesOneByOne,

    } ccTouchesMode;

    其中kCCTouchesAllAtOnce表示支持多点触摸,kCCTouchesOneByOne表示支持单点触摸,在调用了

    setTouchMode(kCCTouchesOneByOne)时,那么调用另外一套虚函数如下:

    // default implements are used to call script callback if exist

    当触摸开始时,虚函数virtual bool ccTouchBegan(CCTouch *pTouch, CCEvent *pEvent);被调用

    当手指移动时,虚函数virtual void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent);被调用

    当手指离开时,虚函数virtual void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent);被调用

    当来电打断触摸过程时,虚函数virtual void ccTouchCancelled(CCTouch *pTouch, CCEvent *pEvent);被调用


    CCLayer除了支持触摸输入之外,还能支持加速计输入,但是默认也是不支持的,需要增加代码来支持,调用

    virtual void setAccelerometerEnabled(bool value);

    可以设置加速计输入相应。


    这时我们可以重载

    virtual void didAccelerate(CCAcceleration* pAccelerationValue);

    函数来处理加速计的输入。









  • 相关阅读:
    页面抛出的"Unable to validate data"错误
    oracle的sqlnet.ora,tnsnames.ora,listener.ora三个配置文件 water
    Win7下完全卸载Oracle 11g water
    抛出多个异常 water
    【转】有关Oracle随机字符串的生成方法及具体应用 water
    【转】oracle 中随机取一条记录的两种方法 water
    【转】Oracle索引列NULL值引发执行计划该表的测试示例 water
    Oracle 取随机数 water
    dbms_output.put_line长度限制问题 water
    oracle 监听启动、停止、查看命令 water
  • 原文地址:https://www.cnblogs.com/new0801/p/6177190.html
Copyright © 2011-2022 走看看