COCOS2DX的场景切换and动作

关于场景切换:

首先要明确的一点就是,在一个cocos程序执行之前,第一个展示出来的场景是利用applicationDidFinishLaunching() 函数里面的 director->runWithScene(scene);这个函数来运行的,这个函数只在程序一开始运行还没有场景的时候进行,也就是一个场景初始化的函数。一旦场景被初始化了,那么下一次想展示别的场景就需要使用场景切换函数,即ReplaceScene.

利用director对象,进行场景切换。其实cocos2dx中,甚至是大部分计算机的东西,一定不要死记硬背,那是没用的。计算机里面的所有东西都是有道理的,比如这个场景切换,场景切换那么肯定是整个程序的导演管理,一个程序只有一个导演。

那么就利用

Director::getInstance()->replaceScene(自己创建的场景);

这样的方法来实现场景的切换。


关于动作:

动作的执行其实主要是一个API就是RunAction.

可以对层中的游戏元素设置动作。其实这个内容看api就可以。

我直接把我的源码放上来,应该很容易理解:


auto label = LabelTTF::create("xuran", "宋体", 36);
	label->setPosition(visibleSize.width/2, visibleSize.height/2);
	addChild(label);

	auto listener = EventListenerTouchOneByOne::create();
	listener->onTouchBegan = [label](Touch *t, Event *e)
	{
		if(label->getBoundingBox().containsPoint(e->getCurrentTarget()->convertToNodeSpace(t->getLocation())))
		{
			//label->runAction(MoveBy::create(1,Point(-50,-50))->reverse());												执行反向动作
			//label->runAction(Spawn::create(MoveBy::create(1,Point(50,50)), RotateBy::create(1,360), NULL));				执行并行动作
			//label->runAction(Sequence::create(MoveBy::create(1,Point(100,100)), RotateBy::create(1,360), NULL));          执行序列动作
			//label->runAction(RepeatForever::create(RotateBy::create(1,180)));                                             执行永久重复动作
			//label->runAction(Sequence::create(MoveBy::create(1,Point(100,100)), RotateBy::create(1,360), CallFunc::create([]()
			//{
			//	MessageBox("action finish", "hahahahah");
			//}),NULL));    
			//Director::getInstance()->replaceScene(ImageScene::CreateScene());                                             场景切换
		}
		return false;
	};

	//label->runAction(RepeatForever::create(RotateBy::create(1,180)));
	Director::getInstance()->getEventDispatcher()->addEventListenerWithSceneGraphPriority(listener, label);




你可能感兴趣的:(COCOS2DX的场景切换and动作)