• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
linux_ios
博客园    首页    新随笔    联系   管理    订阅  订阅

cocos2dx 多点触屏事件

CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }
    
//    开启多点触摸监听务必调用此函数
    setTouchEnabled(true);
    
    CCSprite * sp1 = CCSprite::create("Icon.png");
    sp1->setColor(ccc3(255, 255, 0));//便于区分
    sp1->setPosition(ccp(150,100));
    addChild(sp1, 0 , 91);
    
    CCSprite *sp2 = CCSprite::create("Icon.png");
    sp2->setPosition(ccp(150,200));
    addChild(sp2,0 , 92);
    return true;
}


//    重写多触摸点回调函数

//注册多触点的委托监听
 void HelloWorld:: registerWithTouchDispatcher(void)
{
    CCDirector::sharedDirector()->getTouchDispatcher()->addStandardDelegate(this, 0);
    
}
//用户手指第一次触摸
void HelloWorld:: ccTouchesBegan(CCSet * pTouches,CCEvent * pEvent)
{
    CCSetIterator iter = pTouches->begin();
    for (; iter!=pTouches->end(); iter++) {
        CCTouch * pTouch = (CCTouch * )(* iter);
        CCPoint location = pTouch->getLocation();
        if (pTouch->getID() == 0) {
//            第一个触点
            CCSprite * sp1 = (CCSprite* )this->getChildByTag(91);
            sp1->setPosition(location);
        }else if (pTouch->getID()==1){
            CCSprite * sp2 =  (CCSprite* )this->getChildByTag(92);
            sp2->setPosition(location);
        
        }
    }
}

//用户手指进行移动或者拖拽
void HelloWorld:: ccTouchesMoved(CCSet *pTouches, CCEvent *pEvent)
{
    CCSetIterator iter = pTouches->begin();
    for (; iter!=pTouches->end(); iter++) {
        CCTouch * pTouch = (CCTouch * )(* iter);
        CCPoint location = pTouch->getLocation();
        if (pTouch->getID() == 0) {
            //            第一个触点
            CCSprite * sp1 = (CCSprite* )this->getChildByTag(91);
            sp1->setPosition(location);
        }else if (pTouch->getID()==1){
            CCSprite * sp2 =  (CCSprite* )this->getChildByTag(92);
            sp2->setPosition(location);
            
        }
    }
}

//用户手指拾起
void HelloWorld:: ccTouchesEnded(CCSet *pTouches, CCEvent *pEvent)
{
     CCSetIterator iter = pTouches->begin();
    for (; iter!=pTouches->end(); iter++) {
        CCTouch * pTouch=(CCTouch * )(* iter);
        CCPoint loaction = pTouch->getLocation();
        CCLog("pTouch 触摸点%i坐标:x=%f , y=%f",pTouch->getID(),loaction.x ,loaction.y);
    }
}
//    生命周期函数
void HelloWorld:: onExit()
{
    CCDirector::sharedDirector()->getTouchDispatcher()->removeDelegate(this);
    CCLayer::onExit();
    
}

 

posted @ 2013-04-13 18:02  linux_ios  阅读(1244)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3