加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

cocos2d-x3.0的touch事件

发布时间:2020-12-14 20:15:03 所属栏目:百科 来源:网络整理
导读:cocos2d-x3.0 变化不小 弃用了oc的命名规则 还有一种新的写法 lambda (在最后) // v2.2 v3.0 CCDirector Director CCLayer Layer CCScene Scene CCSprite Sprite Scene * HelloWorld ::createScene() { auto scene = Scene :: create (); auto layer = Hel
cocos2d-x3.0 变化不小 弃用了oc的命名规则 还有一种新的写法 lambda (在最后)

//v2.2v3.0

CCDirectorDirector

CCLayer Layer

CCScene Scene

CCSpriteSprite


Scene*HelloWorld::createScene()

{

autoscene =Scene::create();

autolayer =HelloWorld::scene->addChild(layer);

returnscene;

}


boolHelloWorld::init()

if( !Layer::init() )

{

return false;

}

//3.0获得导演的单例Director::sharedDirector()改为了Director::getInstance()但是还是向下兼容的CC_DEPRECATED_ATTRIBUTE static Director* sharedDirector() { return Director::getInstance(); }

SizevisibleSize =Director::getInstance()->getVisibleSize();//获得现实区域

Pointorigin =Director::getInstance()->getVisibleOrigin();获得现实的起点坐标

// autococos2d-x3.0变动大得一面

// auto自动类型变量

//比如原来要指定变量是int还是float,现在可以用auto,在赋值的时候,编译器自动识别类型。

//这个是C++11的新标准,你可以参考C++11新标准文档。

//CC_CALLBACK_1是新的事件回调从0-3各自有自己的回调参数 细节可以看次篇博客http://www.2cto.com/kf/201401/275831.html

autocloseItem =MenuItemImage::create(

"CloseNormal.png",

"CloseSelected.png",255)">CC_CALLBACK_1(menuCloseCallback,this));

closeItem->setPosition(Point(origin.x+ visibleSize.width- closeItem->getContentSize().width/2,255)">origin.y+ closeItem->height/2));

automenu =Menu::create(closeItem,138)">NULL);

menu->Point::ZERO);//以前cppxy现在左边都是Point比如颜色ccWHITE也改成了Color3B::WHITE

this->addChild(menu,138)">2);

autolabel =LabelTTF::create("Hello World","Arial",138)">24);

label->origin.y+ visibleSize.height- label->height));

addChild(label,138)">1,138)">101);


//这种事件的创建方式 比较以前 更加明了 更加直观

//触摸事件(EventListenerTouch

//键盘响应事件(EventListenerKeyboard

//加速记录事件(EventListenerAcceleration

//鼠标相应事件(EventListenerMouse

//自定义事件(EventListenerCustom

//(移除事件监听器

//移除一个已经被添加了的监听器:

//_eventDispatcher->removeEventListener(listener);

//

//移除当前事件分发器中所有监听器:

//_eventDispatcher->removeAllEventListeners();

autolistener =EventListenerTouchOneByOne::create();//创建一个单点触摸事件:EventListenerTouchAllAtOnce为多点

//设置这些事件的的回调方法

listener->onTouchBegan=CC_CALLBACK_2(onTouchBegan,138)">this);

onTouchEnded=onTouchEnded,168)">onTouchMoved=onTouchMoved,138)">this);

_eventDispatcher->addEventListenerWithSceneGraphPriority(listener,this);事件调度器

return true}

voidHelloWorld::onTouchMoved(cocos2d::Touch*touch,Event*event){

printf("move");

boolHelloWorld::onTouchBegan(Touch* touch,0)">Event*event)

{

}

//通过点击结束区域 来设置lable的位置

HelloWorld::onTouchEnded(autolocation = touch->getLocation();

s =getChildByTag(101);

//一下 只是个旋转角度 移动的 无关紧要

s->stopAllActions();

s->runAction(MoveTo::create(Point(location.x,location.y) ) );

floato = location.x- s->getPosition().x;

floata = location.y- s->y;

floatat = (float)CC_RADIANS_TO_DEGREES(atanf( o/a) );

if( a <0)

{

if(o <at =180+fabs(at);

else

180-}

RotateTo:: HelloWorld::menuCloseCallback(Ref* pSender)

automenuItem =static_cast(pSender);获得点击的按钮

"pSender-tag==%d",menuItem->getTag());

MessageBox("你点击了按钮!!","提示"提示框

lambda 写法 挺有意思 下面写的 和上面功能完全一样

获得现实的起点坐标

[](Ref*sender){

static_cast(sender);getTag());

MessageBox("你点击了按钮!!",0)">提示");});

NULL);

menu->setPosition(ZERO);


();

listener->onTouchBegan= [](Touch*touch,Event*event)

return true

;

};

onTouchEnded= [](Event*event){

getLocation();

autotarget =static_cast

(event->getCurrentTarget());

autos = target->getChildByTag(

//一下 只是个旋转角度 移动的 无关紧要

s->stopAllActions();

{

at =}

onTouchMoved= [](};

事件调度器

}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读