地圖的格式
我們將用Flash提供給我們的一個美妙的格式表示地圖:數(shù)組。如果你不知道什么是數(shù)組,打開Flash的幫助,先看看。
二維數(shù)組
我們需要一個二維數(shù)組表示地圖,不,他不是什么空間、時間的維數(shù),它是說一個數(shù)組的每一個元素還是數(shù)組。迷惑了?讓我們來看看。
通常,這是大家經?吹降暮唵蔚臄(shù)組: myArray=["a", "b", "c", "d"];
這很簡單。你可以用myArray[0]得到第一個元素,就是”a”,用myArray[1]得到第二個元素”b”,等等。 現(xiàn)在換個聰明的法子! 如果我們不用”a”,”b”和”c”放在數(shù)組中,但是我們把另外的數(shù)組放進去呢?是的,我們可以這么做的?催@里,讓我們做個這樣的數(shù)組:
a=["a1", "a2", "a3"]; b=["b1", "b2", "b3"]; c=["c1", "c2", "c3"]; myArray=[a, b, c]; 現(xiàn)在我們已經定義了一個數(shù)組,而且他的每一個元素都是數(shù)組。那么,myArray[0]的值現(xiàn)在就是一個數(shù)組 [“a1”,”a2”,”a3”],第二個元素值就是 [“b1”,”b2”,”b3”],等等。如果你這樣寫: myVar=myArray[2]; 那么myVar得到的值是 ["c1", "c2", "c3"]. OK,那又怎么樣?現(xiàn)在你也許會問。我們不會停止在這里的。如果你這樣寫 myVar=myArray[2][0]; 那么他得到的值就是myArray第三個元素的第一個元素的值”c1”。 讓我們試試更多的。 myVar=myArray[0][1] 取得myArray的第一個元素(a)的第二個元素(”a2”)。 myVar=myArray[1][0] 得到值”b1” 你想得到整個圖片? 繼續(xù)看……
創(chuàng)建地圖
首先我們寫出這個地圖的數(shù)組,這個數(shù)組包含了每個方塊的信息 myMap = [ [1, 1, 1, 1, 1, 1, 1, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 0, 1, 0, 0, 0, 0, 1], [1, 0, 0, 0, 0, 1, 0, 1], [1, 0, 0, 0, 0, 0, 0, 1], [1, 1, 1, 1, 1, 1, 1, 1] ]; 正如你所看到的,我們的地圖有6行8列。如果我們的英雄(主角)從左上角開始,他可以往右移動8格,往下移動6格,超出這個范圍,他就會走出這個地圖,走入未知的空間。
但是一些聰明的人已經想到了一個重要的問題:“數(shù)組中的這些數(shù)字是做什么用的呢?”好吧,我們會使用一些OOP(那是面向對象,不過不要逃跑,他們并不是像他們聽起來那樣可怕)來創(chuàng)建方塊,并且管理我們的游戲(可以參閱Flash的OOP教程的鏈接部分)。在開始的時候,我們會定義多種方塊,他們就像模板一樣放到游戲中。然后我們遍歷整個地圖數(shù)組,檢測每個數(shù)字。
例如,如果我們得到數(shù)字1,那么我們就從Tile1模板中創(chuàng)建一個新的方塊,這個方塊的特點我們都事先在模板中定義好了。在游戲中,我們會檢查那個方塊對象的屬性。他可以有許多屬性,最基本的方塊只有2個屬性:walkable(通行性)和frame(幀)。
Walkable是表示一個方塊是不是允許角色從他上面走過去,如果可以,就是true(真);如果不是,就是false(假)。我們不使用hitTest,因為hitTest很慢,而且在區(qū)塊游戲中使用hitTest并不是很好。
Frame是表示顯示方塊的第幾幀。當放置方塊到舞臺時會用到這個參數(shù)。因為我們使用同一個方塊movie clip(影片夾子,檢查mc)來存放不同的方塊。使用時復制這個mc。他們默認是顯示第一幀。在“創(chuàng)建方塊”部分會有更多這方面的內容。
所以,如果我們聲明下面的方塊: //wall tile Tile1= function () {}; Tile1.prototype.walkable=false; Tile1.prototype.frame=2; 那么我們每次在地圖數(shù)組中遇到1的時候,就會創(chuàng)建一個類似的對象(Tile1),我們還定義了這個方塊不能被通行(walkable=false),而且在那個點上的方塊mc顯示第二幀。
出處:藍色理想
責任編輯:qhwa
上一頁 為什么用方塊? 下一頁 關于地圖的東西
◎進入論壇Flash專欄版塊參加討論
|