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);




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章