【cocos2d-x游戏开发】动作事件的监听

【cocos2d-x游戏开发】动作事件的监听,第1张

概述1.动作结束监听 Size visibleSize = Director::getInstance()->getVisibleSize(); //获取屏幕尺寸 Sprite* sprite = Sprite::create("sprite.png"); //创建一个精灵 sprite->s 1.动作结束监听
	Size visibleSize = Director::getInstance()->getVisibleSize();                         //获取屏幕尺寸	Sprite* sprite = Sprite::create("sprite.png");                             //创建一个精灵	sprite->setposition(Point(visibleSize.wIDth / 2,visibleSize.height / 2));                //设置精灵的初始位置	this->addChild(sprite);           //将精灵加入到场景中	Moveto* movetoHome = Moveto::create(10.0f,Point(visibleSize.wIDth,visibleSize.height / 2));      //创建一个移动动作	auto callbackFunc = [&]()	{		backHome();	};	CallFunc* callFunc = CallFunc::create(callbackFunc);	Action* actions = Sequence::create(movetoHome,callFunc,NulL);                  	sprite->runAction(actions);               //执行动作    return true;}voID HelloWorld::backHome(){	Size visibleSize = Director::getInstance()->getVisibleSize();	Label* label = Label::create("I am home!","Arial",35);	label->setposition(Point(visibleSize.wIDth / 2,visibleSize.height / 2));	this->addChild(label);}







CallFunc是一个看不见的动作,它的作用就是回调一个函数,它的动作就是调用这个函数。
callbackFunc就是一个lambda函数是一个匿名函数,一个最简单的lambda函数结构如下[](){} []符号就是表示要开始一个lambda函数了。 ()里面填写函数的参数。 {}就是一个函数体。
当我们想在lambda函数里使用外部的变量时,需要做一些改变,在[]符号里加上指定的符号,就可以指定变量捕获模式,常用的模式如下:
[]:不截取任何变量。 [&]:截取外部作用域中所有变量,并且作为引用在lambda函数中使用,可以简单的理解为,只要变量没有被释放,那么在lambda函数中都可以使用。但是局部变量不可以使用,因为局部变量会被释放。 [=]:截取外部作用域中所有变量,并复制一份在lambda函数中使用,即使外部变量的值改变了,但是在lambda函数中使用。 [=,&h]:功能和[=]一样,只是是针对h变量来用的。

看下面代码
	Sprite* sprite = Sprite::create("sprite.png");	sprite->setposition(Point(200,200));	this->addChild(sprite);	auto func = [&](){		sprite->setScale(2);	};	CallFunc* callFunc = CallFunc::create(func);	this->runAction(callFunc);
我们创建了一个精灵,然后想要在func函数改变它的伸缩值。但是会报错的,这是因为我们使用的是[&]模式,这种模式无法在lambda函数里面使用局部变量,因为局部变量在调用lambda前就已经被释放了。这个精灵本身没有被释放,因为它已经在场景中了。但是sprite这个指针会被释放。 总结

以上是内存溢出为你收集整理的【cocos2d-x游戏开发】动作事件的监听全部内容,希望文章能够帮你解决【cocos2d-x游戏开发】动作事件的监听所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1005825.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-22
下一篇 2022-05-22

发表评论

登录后才能评论

评论列表(0条)

保存