Cocos2dx 3.0 一些新用法。

来源:互联网 发布:致远oa数据库删除协同 编辑:程序博客网 时间:2024/06/06 01:17

        在用到3.0的时候会有很多函数用法的改变,下面只是自己在使用的过程中常出现的。

单点触摸:

auto listener = EventListenerTouchOneByOne::create();listener->setSwallowTouches(true);listener->onTouchBegan = CC_CALLBACK_2(AnimationCollide::onTouchBegan, this); _eventDispatcher->addEventListenerWithSceneGraphPriority(listener, this);

 

同样下面这种也是:

// Make sprite1 touchableauto listener1 = EventListenerTouchOneByOne::create();listener1->setSwallowTouches(true);listener1->onTouchBegan = [](Touch* touch, Event* event){auto target = static_cast<Sprite*>(event->getCurrentTarget());Point locationInNode = target->convertToNodeSpace(touch->getLocation());Size s = target->getContentSize();Rect rect = Rect(0, 0, s.width, s.height);if (rect.containsPoint(locationInNode)){//target->setOpacity(180);return true;}return false;};listener1->onTouchMoved = [](Touch* touch, Event* event){// auto target = static_cast<Sprite*>(event->getCurrentTarget());// target->setPosition(target->getPosition() + touch->getDelta());};listener1->onTouchEnded = [=](Touch* touch, Event* event){auto target = static_cast<Sprite*>(event->getCurrentTarget());log("sprite onTouchesEnded.. ");//target->setOpacity(255);if (target == sprite2){sprite2->setLocalZOrder(100);}else{sprite2->setLocalZOrder(20);}if(target == sprite1)
{sprite1->setLocalZOrder(100);
}else{sprite1->setLocalZOrder(10);}if(target == sprite3){sprite3->setLocalZOrder(100);}else{sprite3->setLocalZOrder(30);}};

这个方法是在Testcpp里面,具体的效果是点击到那张图片后可以拖动,同时它的Zorder会升高。

在上面的代码中出现了 CC_CALLBACK_2 和

listener1->onTouchBegan = [](Touch* touch, Event* event)、listener1->onTouchEnded = [=](Touch* touch, Event* event)


 

第一个:

CC_CALLBACK_0CC_CALLBACK_1CC_CALLBACK_2CC_CALLBACK_3

关于上面我简单的理解就是回调函数中所使用的几个参数。更加详细的可以看这个位置 详细讲解

第二个:

listener1->onTouchBegan = [](Touch* touch, Event* event)、listener1->onTouchEnded = [=](Touch* touch, Event* event)

关于onTouchBegan 的不明白的 详细的讲解   点击打开链接

 

暂时写这么多。。。

 

0 0