1. 程式人生 > >【笨木頭Cocos2dx 039】戰爭迷霧效果 第02章_先把地圖加進來

【笨木頭Cocos2dx 039】戰爭迷霧效果 第02章_先把地圖加進來

 錯過了前面章節?

沒關係,傳送門在這:

正文:

現在我們要載入一張TMX地圖,這張地圖有點複雜,大家打起精神。

(小若:吼!)

1. 建立TMX地圖

現在,開啟我們的Tiled地圖編輯器,新建一個地圖:【新建】->【新建檔案】,地圖寬為10,地圖高為10

然後將瓦片圖素拖動到圖塊區域,新增圖塊,寬高分別為128畫素,邊距和間距都為0

然後,最重要的一步來了!選中第一個圖素,塗滿地圖,效果如下:

(小若:喂,什麼意思?塗滿地圖了?為什麼還是空白的!)

於是,我們完成了這張複雜的TMX地圖了,好好儲存起來吧!【檔案】-【儲存】。

(小若:你是不是故意忽略我的啊!)

啊,對了,圖素圖片如下:

圖素在TMX格式地圖中按從左到右,從上到下,從1開始編號,如下圖所示:

由於圖素1是全透明的,所以我們畫出來的地圖看起來是空白的,實際上全都填充了圖素1的瓦片。

(小若:我就知道有問題!)

OK,我把地圖檔案儲存為“cloudMap.tmx

2. 在Cocos2d-x載入地圖

好,進入正題,先新建一個Cocos2d-x專案(我就不列出詳細步驟了,預設大家都有基礎)。然後,直接開啟HelloWorldScene.cppinit函式,把預設的程式碼刪除,新增如下程式碼:

bool HelloWorld::init()
 
{
 
    bool bRet = false;
 
    do 
 
    {
 
        CCLayerColor::initWithColor(ccc4(255, 255, 255, 255));
 
  
 
cloudMap = CCTMXTiledMap::create("cloudMap.tmx");
 
  
 
this->addChild(cloudMap);
 
  
 
this->setTouchEnabled(true);
 
        bRet = true;
 
    } while (0);
 
  
 
    return bRet;
 
}


cloudMap是成員變數,我們來看看標頭檔案:

class HelloWorld : public cocos2d::CCLayerColor
 
{
 
public:
 
    virtual bool init();  
 
    static cocos2d::CCScene* scene();
 
    CREATE_FUNC(HelloWorld);
 
  
 
virtual bool ccTouchBegan( CCTouch *pTouch, CCEvent *pEvent );
 
  
 
virtual void registerWithTouchDispatcher( void );
 
  
 
private:
 
CCTMXTiledMap* cloudMap;
 
};

(小若:不對!有問題!你是不是寫多了很多東西啊!)

被發現了,是的,因為我們將要用的螢幕觸控事件,所以我在init函式裡添加了一句程式碼:

this->setTouchEnabled(true);

然後重寫了ccTouchBeganregisterWithTouchDispatch函式,在registerWithTouchDispatch函式執行以下程式碼,這樣才能獲取螢幕觸控事件:

void HelloWorld::registerWithTouchDispatcher( void )
 
{
 
CCDirector::sharedDirector()->getTouchDispatcher()->addTargetedDelegate(this, 0, true);
 
}

已經懂的朋友請耐心等待,我得照顧不太熟悉Cocos2d-x的朋友們。

(小若:我知道你在說我,你就直接說吧!)

那麼,編譯執行專案,我們將看到以下效果:

(小若:不對!我發現你剛剛的程式碼是CCLayerColor,而不是CCLayer,這是為什麼?)

是的,在這裡要解釋一下,因為我們的迷霧是黑色,而CCLayer預設的螢幕背景也是黑色的,這樣即使我們的迷霧消失了,那背景還是黑色的,根本看不出效果。

(小若:我明白了!黑布上面蓋一層黑霧,即使黑霧消失了,那看到的還是黑色的!)

好了,這一節基本上是鋪墊,下一節還要繼續鋪墊。

(小若:喂!)

相關推薦

木頭Cocos2dx 039戰爭迷霧效果 02_地圖進來

 錯過了前面章節? 沒關係,傳送門在這: 正文: 現在我們要載入一張TMX地圖,這張地圖有點複雜,大家打起精神。 (小若:吼!) 1. 建立TMX地圖 現在,開啟我們的Tiled地圖編輯器,新建一個地圖:【新建】->【新建檔案】,地圖寬為10,地圖高為10。

木頭Cocos2dx 038戰爭迷霧效果 01_要探索,不要地圖全開!

這次我要介紹一個很好玩的東西——戰爭迷路。 (小若:喂!迷路?) 其實這麼解釋不太好解釋,我們舉個例子。魔獸爭霸相信大家都玩過,遊戲開始時,地圖上到處都是黑濛濛的一片,什麼都看不到,我們必須一邊走一邊探路。 (小若:我知道了!不就是地圖探索嘛!) 就是這樣,我們來看看

(轉載)木頭Lua專欄基礎補充20:面向對象——類和繼承

笑話 ava span 生成 code BE 手機 情況 忽略 終於來了,在Lua中的面向對象編程,相信目前學習Lua的大部分人都是為了開發手機網遊吧。而且基本都是奔著腳本語言的熱更新特性去的,所以全腳本開發變得十分流行。 對於普及不太廣的Lua(相對於C++、Java等主

(轉載)木頭Lua專欄基礎補充22:弱引用table

ive AC -c 所在 lan contain 函數 貢獻 缺陷 這次要介紹的內容比較少,就一個——弱引用table 笨木頭花心貢獻,哈?花心?不,是用心~ 轉載請註明,原文地址:http://www.benmutou.com/archives/1808 文章來源:

(轉載)木頭Lua專欄基礎補充21:面向對象——多重繼承、私密性

子類 先來 nta 參數 hive lua 封裝 完成 存在 在Lua中的多重繼承和私密性可能用得比較少,也可能只是我個人用得比較少。 本來想偷懶不寫這文章的,因為我今天剛買了個漂移板,連起步都還沒學會啊,想多學一會。 咳咳,本著堅持不懈、負責到底的態度,我還是決定隨便寫幾

木頭Lua專欄基礎補充01:巧說table的幾種構造方式

之前對於Lua的研究都是紙上談兵,沒有真正的專案練手,現在公司的專案基本上都是用Lua開發,是時候補充一下我那蹩腳的Lua知識了。 基礎資料型別、表示式、迴圈結構什麼的我就不說了,這麼簡單的東西說了也要被大家噴。 今天我想說說table的幾種構造方式。 本文來自[

廖雪峰python3.0-課後習題:5:高階特性

#5.1切片 # 利用切片操作,實現一個trim()函式,去除字串首尾的空格,注意不要呼叫str的strip()方法: def trim(s): if(s[:1]==" "):

木頭Unity入門之旅010(完結):Demo之四處找死(五)_UI

UI是遊戲裡必不可少的元素,在Unity裡新增UI是比較輕鬆的事情,但要玩好它,可就不那麼輕鬆了。 沒關係,先入門。   笨木頭花心貢獻,啥?花心?不,是用心。 轉載請註明,原文地址:http://www.benmutou.com/archives/2196

方法學PAT對字串的reverse

一、reverse string s; reverse(s.begin(),s.end()); 標頭檔案:#include<algorithm> 二、程式碼 #include<iostream> #include<string> #incl

方法學PAT1013 Battle Over Cities(25 分)

一、題目 It is vitally important to have all the cities connected by highways in a war. If a city is occupied by the enemy, all the highways from/towa

方法學PAT1012 The Best Rank(25 分)

一、題目 To evaluate the performance of our first year CS majored students, we consider their grades of three courses only: C - C Programmin

方法學PAT1011 World Cup Betting(20 分)

一、題目 With the 2010 FIFA World Cup running, football fans the world over were becoming increasingly excited as the best players from the best teams

方法學PAT1010 Radix(25 分)

一、題目 Given a pair of positive integers, for example, 6 and 110, can this equation 6 = 110 be true? The answer is yes, if 6 is a decimal numbe

方法學PAT1009 Product of Polynomials(25 分)

一、題目 This time, you are supposed to find A×B where A and B are two polynomials. Input Specification: Each input

方法學PAT1008 Elevator(20 分)

一、題目 The highest building in our city has only one elevator. A request list is made up with N positive numbers. The numbers denote at wh

cocos2dx 實現戰爭迷霧效果

遊戲裡面的戰爭迷霧或者刮刮樂效果可以用下面的方法實現 function MainScene:onCreate() local strVertSource = "attribute vec4 a_position;\n".. "attribute vec2 a_te

三、辦法學python學習隨筆之一:格式化字元

python中的格式化字元 語法 我們舉個例子來說明格式化字串的語法 \>>> 'Hello, %s' % 'world' 'Hello, world' \>>> 'Hi, %s, you have $%d.' % ('Michael

未完成方法學PAT1018 Public Bike Management (30 分)

一、題目 There is a public bike service in Hangzhou City which provides great convenience to the tourists from all over the world. One may rent a bike

方法學PAT1149 Dangerous Goods Packaging (25 分)

一、題目 When shipping goods with containers, we have to be careful not to pack some incompatible goods into the same container, or we might get ourse

方法學PAT1150 Travelling Salesman Problem (25 分)

一、題目 The "travelling salesman problem" asks the following question: "Given a list of cities and the distances between each pair of cities, what is