Hướng dẫn hiện thực lại game ZERO 1 cách đơn giản. Giúp làm quen cách để hoàn thành 1 game, cũng như cách tổ chức project trong game.
Hướng dẫn cách để hiện thực 1 scene trong game, cũng như cách để chuyển scene. LoadScene chính là đối tượng được hướng đến trong bài viết này.
Hiện thực
LoadScene.h
Thêm vào biến m_loadingStep và override lại hàm update của scene như sau:
#ifndef __LOAD_SCENE_H__
#define __LOAD_SCENE_H__
#include "cocos2d.h"
class LoadScene : public cocos2d::Layer
{
public:
// there's no 'id' in cpp, so we recommend returning the class instance pointer
static cocos2d::Scene* createScene();
// Here's a difference. Method 'init' in cocos2d-x returns bool, instead of returning 'id' in cocos2d-iphone
virtual bool init();
//
void update(float dt);
// implement the "static create()" method manually
CREATE_FUNC(LoadScene);
private:
int m_loadingStep;
};
#endif // __LOAD_SCENE_H__LoadScene.cpp
Định nghĩa lại hàm update vừa khai báo ở trên như sau:
void LoadScene::update(float dt)
{
switch (m_loadingStep)
{
// Load sprite
case 0:
SpriteFrameCache::getInstance()->addSpriteFramesWithFile("spr_sheet_zero.plist",
"spr_sheet_zero.png");
break;
// Load position
case 1:
break;
// Load sounds
case 2:
break;
case 3:
Director::getInstance()->replaceScene(MainMenuScene::createScene());
break;
}
m_loadingStep++;
}Hàm này có chức năng load vào cái sprite, sounds, position,... Sau đó chuyển đến MainMenuScene. Để làm được điều này nhớ thêm #include "MainMenuScene.h" vào đầu file LoadScene.cpp.
Trong hàm init của scene khởi tạo m_loadingStep = 0 và gọi this->scheduleUpdate() như sau:
bool LoadScene::init()
{
//////////////////////////////
// 1. super init first
if (!Layer::init())
{
return false;
}
Size visibleSize = Director::getInstance()->getVisibleSize();
Vec2 origin = Director::getInstance()->getVisibleOrigin();
m_loadingStep = 0;
this->scheduleUpdate();
return true;
}Download LoadScene và Resources
Bài chung series
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 1: Tạo Scene
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 2: Hiện Thực LoadScene
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 3: Thiết Kế Kích Thước Màn Hình, Quản Lý Đối Tượng
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 4: Hiện thực MainMenuScene
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 5: Hiện thực GameScene - Vẽ Suit
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 6: Hiện thực GameScene - Thêm thời gian
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 7: Hiện thực GameScene - Button
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 8: Hiện thực GameScene - Xử lý sự kiện trong game
- Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 9: Hiện thực GameScene - Điểm Số