STDIO
Tìm kiếm gần đây
    Nội dung
    0
    0
    Chia sẻ

    Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 2: Hiện Thực LoadScene

    Hướng dẫn cách để hiện thực một scene trong game, cũng như cách để chuyển scene với Cocos2d-x
    Ryan Lê

    Ryan

    01/03/2015 30/09/2020 2 phút đọc
    Hướng Dẫn Viết Game Zero Với Cocos2d-x - Phần 2: Hiện Thực LoadScene

    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

    LOADSCENE.ZIP

    RESOURCES.ZIP

    Bài chung series

    0 Bình luận
    Lập Trình Game

    Lập Trình Game

    Kiến thức, kỹ thuật, kinh nghiệm lập trình game.

    Khi bạn nhấn vào sản phẩm do chúng tôi đề xuất và mua hàng, chúng tôi sẽ nhận được hoa hồng. Điều này hỗ trợ chúng tôi có thêm kinh phí tạo nhiều nội dung hữu ích. Tìm hiểu thêm.
    STDIO

    Trang chính

    Công ty TNHH STDIO

    • 30, Trịnh Đình Thảo, Hòa Thạnh, Tân Phú, Hồ Chí Minh
      +84 28.36205514 - +84 942.111912
      developer@stdio.vn
    • 383/1 Quang Trung, Phường 10, Quận Gò Vấp, Hồ Chí Minh
      Số giấy phép ĐKKD: 0311563559 do sở Kế hoạch và Đầu Tư TPHCM cấp ngày 23/02/2012
    ©STDIO, 2013 - 2021