1. 程式人生 > >【Cocos2D-X 】初窺門徑(1) 製作一個動態的精靈

【Cocos2D-X 】初窺門徑(1) 製作一個動態的精靈

原理:

Cocos2D中有個導演控制整個遊戲流程,導演將場景新增到螢幕上,場景中有各種各樣的演員。

先通過顯示一張圖片來看看Cocos2D遊戲的流程:

AppDelegate.cpp

bool AppDelegate::applicationDidFinishLaunching()
{
    // 初始化導演
    CCDirector *pDirector = CCDirector::sharedDirector();
    pDirector->setOpenGLView(CCEGLView::sharedOpenGLView());

    // 開啟FPS
    pDirector->setDisplayStats(true);

    // 設定FPS the default value is 1.0/60 if you don't call this
    pDirector->setAnimationInterval(1.0 / 60);

    // 建立一個場景
	CCScene *pScene = GameScence::scene();

    // 執行此場景
    pDirector->runWithScene(pScene);
    return true;
}
上邊的程式碼添加了一個場景GameScence,下面看看具體實現:

GameScence.h

#include "cocos2d.h"
#include "Box2D/Box2D.h"

class GameScence : public cocos2d::CCLayer
{
public :
	bool init();
	//必須重寫scene()
	static cocos2d::CCScene* scene();
	//相當於create函式,是重寫了CCLayer裡的create函式
	CREATE_FUNC(GameScence);
};
GameScence.cpp
#include "GameScene.h"

using namespace cocos2d;

CCScene* GameScence::scene()
{
	CCScene * scene = NULL;
	do
	{
		scene=CCScene::create();

		GameScence* gameScene=GameScence::create();
		scene->addChild(gameScene);
	}while(0);

	return scene;
};

bool GameScence::init()
{
	bool bRet = false;
	do
	{
		//從圖片建立一個精靈
		CCSprite* pSprite = CCSprite::create("bg.png");
		//獲取螢幕大小
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		// 設定精靈在場景中的位置,座標從左下角0,0
		pSprite->setPosition(ccp(size.width/2, size.height/2));
		// 新增精靈到場景中
		this->addChild(pSprite, 0);
	}while(0);

	bRet=true;

	return bRet;
};

程式碼中有註釋,就不在重複敘述了,

下面是效果圖:

怎麼讓其顯示一個動態的精靈呢,下面是修改後的init()

bool GameScene::init()
{
	bool bRet = false;
	do
	{
		CCSprite* pMap = CCSprite::create("bg.png");
		CCSize size = CCDirector::sharedDirector()->getWinSize();
		pMap->setPosition(ccp(size.width/2, size.height/2));
		this->addChild(pMap, 0);

		CCSprite* sprite ;
		CCArray* pSpriteArray=CCArray::createWithCapacity(4);
		for(int i=0;i<4;i++)
		{
			//擷取frame
			CCSpriteFrame* pFrame =CCSpriteFrame::create("role.png",CCRectMake(i*82,62*2,82,62));
			pSpriteArray->addObject(pFrame);

			//將精靈新增到場景,預設第一幀圖片
			if(i==0){
				sprite= CCSprite::createWithSpriteFrame(pFrame);
				sprite->setPosition(ccp(200,100));
				addChild(sprite);
			}
		}
		//從array建立動畫
		CCAnimation *splitAnimation=CCAnimation::createWithSpriteFrames(pSpriteArray,0.1f);
		sprite->runAction(CCRepeatForever::create(CCAnimate::create(splitAnimation)));

	}while(0);

	bRet=true;

	return bRet;
};


製作動態的圖片麻煩,就直接貼圖了:


相關推薦

Cocos2D-X 門徑1 製作一個動態精靈

原理: Cocos2D中有個導演控制整個遊戲流程,導演將場景新增到螢幕上,場景中有各種各樣的演員。 先通過顯示一張圖片來看看Cocos2D遊戲的流程: AppDelegate.cpp bool AppDelegate::applicationDidFinishLaunch

Cocos2D-X 門徑5CCAction:動作

//移動到,1s, pRole->runAction(CCMoveTo::create(1,ccp(300,300))); //跳躍到,1s,高度50,分為5步 pRole->runAction(CCJumpTo::create(1,ccp(300,300),50,5)); //放

Cocos2D-X 門徑10解決中文亂碼

用資原始檔儲存字串,格式UTF-8,這樣讀取xml檔案,然後顯示就不會亂碼了。 這樣做還有一個好處就是方便以後國際化。 xml檔案: <dict> <key>Hello</key> <string>Hi~可以正常顯示中

Cocos2D-X 門徑2 場景的切換及特效

//CCTransitionJumpZoom::transitionWithDuration(t, s);//跳躍式,本場景先會縮小,然後跳躍進來  //CCTransitionFade::transitionWithDuration(t, s);//淡出淡入,原場景

Cocos2D-X 遊戲引擎門徑11CCUserDefault:儲存資料

儲存簡單的資料用CCUserDefault和Android中的SharedPreferences一樣,都是以鍵值對儲存的。 //獲取bool型值 bool getBoolForKey(const char* pKey, bool defaultValue = fals

軟考——面向物件技術1

面向物件???——》一種具有構造繼承性、 封裝性和多型的程式設計語言族的命名;               ???——》一種程式設計風格; 面向物件???——》物件 + 分類 + 繼承 + 

網路學習TCP/IP協議1

什麼是TCP/IP? 上帝創造了人類,雖然都是人但是語言不一樣,交流起來也是很不明白,當我們中國人與外國人交流的時候就需要一種共同的交流方式比如【漢語】,協議顧名思義則是商量謀劃而制定的規則 TCP\IP中文譯為傳輸控制協議\因特網互聯協議,TCP\IP不是一個

資料結構基礎知識點整理1

1.線性是線性,順序是順序,線性是邏輯結構,順序是儲存結構,兩者不是一一個概念,線性是指一一個元素後繼只有唯一的一一個元素或節點,非線性是一一個元素後面可以有多個後繼或前繼節點,順序是指儲存結構連續,例如陣列是順序的,連結串列不是順序的,但他們都是線性的。當然順序也可以是非線

iOS開發CoreText的使用1

本文技術點涉及到NSAttrbutedString 簡述 CoreText是用於處理文字和字型的底層技術,它直接和Core Graphics(又名Quartz2D)交流。Quartz是一個2D圖形渲染引擎,能夠處理OS X和iOS的圖形顯示問題 Quartz能夠直接處理

尚矽谷spring學習筆記1:HelloWorld

1、安裝SPRING TOOL SUITE 這個 Eclipse 外掛。2、搭建spring開發環境,引入jar包。3、建立spring專案3.1、建立一個HelloWorld類public class HelloWorld { private String name;

C++11物件訊息匯流排1

部分Demo和結論引用自<深入應用C++11程式碼優化與工程>這本書 什麼是訊息匯流排? 物件的關係之間一般有:依賴、關聯、聚合、組合和繼承,他們的耦合程度也是依次加強!大規模開發過程中,物件很多,關聯關係很複雜,沒有統一、簡介的方法去管理物

Cocos2d-x坐標系和圖層

pac 多說 pan art world 地圖 分辨 play instance 在Cocos2D-X中,存在四種坐標系: 1、OpenGL坐標系:該坐標系原點在屏幕左下角。x軸向右,y軸向上。這也就是cocos2dx中用到的坐標系所以沒啥好說的。 2、屏幕坐標系(UI

JZOJ5947. NOIP2018模擬11.02音未來miku

Description Hercier作為一位喜愛Hatsune Miku的OIer,痛下決心,將Vocaloid買回了家。開啟之後,你發現介面是一個長為n的序列,代表音調,並形成了全排列。你看不懂日語,經過多次嘗試,你只會用一個按鈕:將一段區間按升序排序。不理解音樂的Hercier決定

Cocos2d-x截圖分享功能

Cocos2d-x截圖實現 #include "cocos2d.h" USING_NS_CC; // 設定紋理寬、高、畫素質量 CCRenderTexture* tx = CCRenderTexture::create(CCDirector::sharedDirec

Cocos2d-x圖片描邊的一種比較好的shader實現方法

轉載: http://blog.csdn.net/u011281572/article/details/44999609 圖片描邊需求如下: 1. 可指定描邊寬度2. 可指定描邊顏色3. 可用於字型 圖片描邊我所知道的方式有以下幾種: 1. Cocos2d-x 3.x中,

Cocos2d-x之編譯so檔案出錯

現在用的是cocos2d-x3.6版本,這個版本新建的工程第一次在eclipse上跑的時候,會出現找不到Cocos2d-x在Android平臺的Java類,錯誤如圖: 這些類位於:<遊戲工程路

Cocos2d-x物理引擎使用入門

相關概念 什麼是物理引擎? 科學模型:科學研究中對事物的合理簡化。 物理引擎是一個計算機程式模擬牛頓力學模型,使用質量、速度、摩擦力和空氣阻力等變數。 可以用來預測這種不同情況下的效果。它主要用在科學模擬和電子遊戲中。 一般,物理引擎只負責物理計算,而不進行畫面渲染。

cocos2d-x建構函式與初始化

出自圖書《製作自己的捕魚達人》 在cocos2d-x中建立物件的方法與C++開發者的習慣不同,在C++中,我們只需要呼叫類的建構函式即可建立一個物件,即可直接建立一個棧上的值物件,        也可以使用new操作符建立一個指標,指向堆上的物件,而在cocos2d-

cocos2d-xcocos2d-x 3.2 在 NDK10下編譯出錯的解決方法

最近使用cocos2d-x 3.2 在NDK10 版本下打包APK,出現了一個特別奇怪的錯誤。 1. /Users/minggo/SourceCode/cocos2d-x/build/../cocos/./3d/CCBundleReader.cpp:94:

Cloud FoundryCould Foundry學習——Could Foundry淺談

art lock mod out isp ted 組成 .com pop 在閱讀的過程中有不論什麽問題。歡迎一起交流 郵箱:[email protected]/* */ QQ:1494713801 Cloud Foundry是VMware