中文字幕二区_国产精品免费在线观看_黄色网站观看_人人草人人澡_日本真实娇小xxxx

您的位置: 首頁(yè) > 技術(shù)文檔 > 多媒體制作 > Flash 區(qū)塊游戲開(kāi)發(fā)
Flash MX 2004 pro 幫助 CHM 版 回到列表 如何防止SWF文件被反編譯
 Flash 區(qū)塊游戲開(kāi)發(fā)

作者:qhwa 時(shí)間: 2004-05-22 文檔類(lèi)型:原創(chuàng) 來(lái)自:藍(lán)色理想

第 1 頁(yè) 歡迎
第 2 頁(yè) 為什么用方塊?
第 3 頁(yè) 地圖
第 4 頁(yè) 關(guān)于地圖的東西
第 5 頁(yè) 創(chuàng)建方塊
第 6 頁(yè) 再談?wù)剠^(qū)塊原型的定義
第 7 頁(yè) 英雄/主角
第 8 頁(yè) 鍵盤(pán)控制的移動(dòng)
第 9 頁(yè) 碰撞檢測(cè)
第 10 頁(yè) 芝麻開(kāi)門(mén)-地圖切換
第 11 頁(yè) 跳躍
第 12 頁(yè) 騰云駕霧
第 13 頁(yè) 梯子
第 14 頁(yè) 愚蠢的敵人
第 15 頁(yè) 更多關(guān)于敵人的東西
第 16 頁(yè) 射擊
第 17 頁(yè) 拾取物品
第 18 頁(yè) 浮動(dòng)區(qū)塊
第 19 頁(yè) 卷屏
第 20 頁(yè) 未完待續(xù) | coming soon

創(chuàng)建方塊

現(xiàn)在我們將會(huì)讓方塊在屏幕上顯示出來(lái)、定位到合適的地方,然后顯示正確的幀。就像這個(gè):

首先我們先定義一些對(duì)象和值:

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]
];
game={tileW:30, tileH:30};
//可通行的方塊
game.Tile0= function () {};
game.Tile0.prototype.walkable=true;
game.Tile0.prototype.frame=1;
//墻
game.Tile1= function () {};
game.Tile1.prototype.walkable=false;
game.Tile1.prototype.frame=2;

你可以看到,我們把地圖保存在myMap數(shù)組中。
地圖定義的下一行,定義了一個(gè)叫g(shù)ame的對(duì)象。
我們會(huì)把所有用到的其他對(duì)象(方塊、敵人……)都作為game的子對(duì)象,我們也可以不這樣做,直接把所有的對(duì)象都放在主場(chǎng)景_root或者其他任何地方,
但是這樣做(把對(duì)象都放在一個(gè)固定的地方)更加清晰一些。

注意我們給了game對(duì)象2個(gè)屬性:tileW和tileH,
兩個(gè)屬性的值都是30。那表示我們的方塊的寬度(tileW)和高度(tileH)。方塊不一定是個(gè)正方形,你也可以使用長(zhǎng)寬不相等的矩形。
一旦我們想要知道,方塊的寬度和高度,我們可以這樣寫(xiě):

game.tileW
game.tileH

而且如果你想要改變方塊的大小,只要在一行代碼中改就行了。

下面的幾行代碼在game對(duì)象里面構(gòu)造了Tile0對(duì)象,然后用prototype構(gòu)造了他的2個(gè)屬性。
game.Tile0= function () {};
game.Tile0.prototype.walkable=true;
game.Tile0.prototype.frame=1;

第一行的 game.Tile0=function(){} 聲明了一個(gè)新的對(duì)象類(lèi)型。
當(dāng)我們從地圖的二維數(shù)組中得到0時(shí),我們就會(huì)使用Tile0作為相應(yīng)方塊的類(lèi)型。

下面2行告訴我們Tile0對(duì)象和所有用Tile0創(chuàng)建的對(duì)象都具有的一些屬性。我們會(huì)設(shè)置他們的walkable為true(意味著無(wú)法通行)還有frame為1(復(fù)制方塊mc后,顯示在第一幀)。

顯示地圖

你準(zhǔn)備好做整個(gè)地圖了嗎?我們將要寫(xiě)個(gè)函數(shù)來(lái)布置所有的方塊了,函數(shù)名取做buildMap。如果你要顯示別的地圖,你也可以使用這個(gè)函數(shù)。buildMap將要做的是:

+復(fù)制一個(gè)空mc作為容器(放置各種對(duì)象)
+遍歷地圖數(shù)組
+為每個(gè)小格子創(chuàng)建相應(yīng)的方塊對(duì)象
+復(fù)制所有的方塊mc
+定位所有的方塊mc
+讓所有的方塊mc顯示在正確的幀

這是代碼:

function buildMap (map) {
 _root.attachMovie("empty", "tiles", ++d);
 game.clip=_root.tiles;
 var mapWidth = map[0].length;
 var mapHeight = map.length;
 for (var i = 0; i < mapHeight; ++i) {
 for (var j = 0; j < mapWidth; ++j) {
  var name = "t_"+i+"_"+j;
  game[name]= new game["Tile"+map[i][j]];
  game.clip.attachMovie("tile", name, i*100+j*2);
  game.clip[name]._x = (j*game.tileW);
  game.clip[name]._y = (i*game.tileH);
  game.clip[name].gotoAndStop(game[name].frame);
 }
 }
}

第一行聲明了buildMap作為一個(gè)函數(shù),并且參數(shù)是map。當(dāng)我們調(diào)用這個(gè)函數(shù)的時(shí)候,我們會(huì)同時(shí)傳遞地圖數(shù)組給他。

下面的一行復(fù)制了一個(gè)空mc到舞臺(tái)上:
_root.attachMovie("empty", "tiles", ++d);

你需要一個(gè)空mc(里面沒(méi)有任何東西)在庫(kù)中。
在庫(kù)面板中右鍵單擊這個(gè)mc,選擇”Linkage…”(鏈接),選擇”Export this symbol”(導(dǎo)出這個(gè)符號(hào)),在ID欄填上”empty”。
現(xiàn)在,attachMovie命令會(huì)在庫(kù)中查找鏈接名稱是empty的mc,
找到之后他會(huì)在舞臺(tái)上復(fù)制一個(gè)這樣的mc,并給他一個(gè)新的名字tiles。
這個(gè)mc將會(huì)收容舞臺(tái)上所有的方塊,就相當(dāng)于一個(gè)容器。
使用這樣的容器有個(gè)很美妙的事情,就是每當(dāng)我們想要?jiǎng)h除所有的方塊時(shí)(比如游戲結(jié)束),
我們只需要?jiǎng)h除tiles這個(gè)mc就行了,然后所有的方塊都消失了。
如果你不用容器,直接把方塊都復(fù)制到_root(主場(chǎng)景)中,
那么當(dāng)你進(jìn)入下一場(chǎng)景的時(shí)候(比如游戲結(jié)束),這些復(fù)制的方塊不會(huì)消失,你不得不使用更多的actionscript來(lái)刪除他們。

復(fù)制了這個(gè)tiles之后,我們還要把他連接到我們的game對(duì)象中:
game.clip = _root.tiles
現(xiàn)在,當(dāng)我們需要訪問(wèn)tiles時(shí),我們只需要使用game.clip,這很便利。
如果我們需要把tiles放到別的地方,我們只需要改一下這行就行了,不需要改動(dòng)整個(gè)代碼。

然后我們創(chuàng)建了兩個(gè)新的變量:mapWidth和mapHeight。
我們通過(guò)這兩個(gè)變量遍歷整個(gè)地圖數(shù)組。
mapWidth的值是地圖數(shù)組的第一個(gè)元素的長(zhǎng)度。
如果你忘了地圖數(shù)組什么樣子,回頭看看。
地圖數(shù)組的第一個(gè)元素是一個(gè)數(shù)組[1,1,1,1,1,1,1,1],mapWidth就是他的長(zhǎng)度值(數(shù)組的長(zhǎng)度就是數(shù)組的元素個(gè)數(shù)),在這里就是8。
現(xiàn)在我們從地圖數(shù)組中知道了地圖的寬度。

同理,mapHeight的值就是地圖數(shù)組的長(zhǎng)度值,他是數(shù)組的行數(shù),也是地圖的行數(shù)。

我們這樣遍歷地圖數(shù)組:

for (var i = 0; i < mapHeight; ++i) {
for (var j = 0; j < mapWidth; ++j) {

我們讓變量i從0開(kāi)始,每次自加1,直到他比mapHeight大。
變量j從0循環(huán)到mapWidth。
var name = "t_"+i+"_"+j
變量name的到的值是和i、j的值有關(guān)的。
假設(shè)i=0,j=1,那么name=”t_0_1”;
如果i=34,j=78,那么name=”t_34_78”。

現(xiàn)在我們創(chuàng)建新的方塊
game[name]= new game["Tile"+map[i][j]]

左邊的game[name]表示新的方塊對(duì)象將會(huì)放置在game對(duì)象里面,就像其他對(duì)象一樣。
map[i][j]的值告訴我們這個(gè)點(diǎn)(i,j)的方塊類(lèi)型,
如果是0,就創(chuàng)建一個(gè)Tile0對(duì)象;如果是1,就創(chuàng)建一個(gè)Tile1對(duì)象。
這個(gè)點(diǎn)的方塊具有的屬性在相應(yīng)的Tile對(duì)象中都事先定義好了。
當(dāng)i=0,j=0時(shí),相當(dāng)于這樣的形式:
game[“t_0_0”]=new game[“Tile0“]

記。核械姆綁K都作為game對(duì)象的子對(duì)象。

在下一行中,我們復(fù)制了一個(gè)新的mc到舞臺(tái)上,并使用game.clip[name]來(lái)訪問(wèn)他。
mc的坐標(biāo)可以通過(guò)i,j值乘以方塊寬度和方塊高度得到。
我們通過(guò)gotoAndStop命令讓他跳到正確的幀,借助他繼承得到的frame屬性。

當(dāng)我們需要?jiǎng)?chuàng)建地圖時(shí),我們這樣調(diào)用buildMap函數(shù)就行了:
buildMap(myMap);

下載源文件

出處:藍(lán)色理想
責(zé)任編輯:qhwa

上一頁(yè) 關(guān)于地圖的東西 下一頁(yè) 再談?wù)剠^(qū)塊原型的定義

◎進(jìn)入論壇Flash專欄版塊參加討論

相關(guān)文章 更多相關(guān)鏈接
Flash 酷站獵手
中文ID3亂碼問(wèn)題MX解決方案
用AS2解決中文ID3的亂碼
Flash常用效果-移動(dòng)模糊效果
Flash MX 2005 制作環(huán)境預(yù)覽
作者文章 更多作者文章
中文ID3亂碼問(wèn)題MX解決方案
Flash 區(qū)塊游戲開(kāi)發(fā)
Flash 中如何顯示清晰的字體
JavaScript 和 Flash 的通信
在 ListBox 組件中應(yīng)用 HTML
關(guān)鍵字搜索 常規(guī)搜索 推薦文檔
熱門(mén)搜索:CSS Fireworks 設(shè)計(jì)比賽 網(wǎng)頁(yè)制作 web標(biāo)準(zhǔn) 用戶體驗(yàn) UE photoshop Dreamweaver Studio8 Flash 手繪 CG
站點(diǎn)最新 站點(diǎn)最新列表
周大!熬•自然”設(shè)計(jì)大賽開(kāi)啟
國(guó)際體驗(yàn)設(shè)計(jì)大會(huì)7月將在京舉行
中國(guó)國(guó)防科技信息中心標(biāo)志征集
云計(jì)算如何讓安全問(wèn)題可控
云計(jì)算是多數(shù)企業(yè)唯一擁抱互聯(lián)網(wǎng)的機(jī)會(huì)
阿里行云
云手機(jī)年終巨獻(xiàn),送禮標(biāo)配299起
阿里巴巴CTO王堅(jiān)的"云和互聯(lián)網(wǎng)觀"
1499元買(mǎi)真八核 云OS雙蛋大促
首屆COCO桌面手機(jī)主題設(shè)計(jì)大賽
欄目最新 欄目最新列表
淺談JavaScript編程語(yǔ)言的編碼規(guī)范
如何在illustrator中繪制臺(tái)歷
Ps簡(jiǎn)單繪制一個(gè)可愛(ài)的鉛筆圖標(biāo)
數(shù)據(jù)同步算法研究
用ps作簡(jiǎn)單的作品展示頁(yè)面
CSS定位機(jī)制之一:普通流
25個(gè)最佳最閃亮的Eclipse開(kāi)發(fā)項(xiàng)目
Illustrator中制作針線縫制文字效果
Photoshop制作印刷凹凸字體
VS2010中創(chuàng)建自定義SQL Rule
>> 分頁(yè) 首頁(yè) 前頁(yè) 后頁(yè) 尾頁(yè) 頁(yè)次:5/20頁(yè) 1個(gè)記錄/頁(yè) 轉(zhuǎn)到 頁(yè) 共20個(gè)記錄

藍(lán)色理想版權(quán)申明:除部分特別聲明不要轉(zhuǎn)載,或者授權(quán)我站獨(dú)家播發(fā)的文章外,大家可以自由轉(zhuǎn)載我站點(diǎn)的原創(chuàng)文章,但原作者和來(lái)自我站的鏈接必須保留(非我站原創(chuàng)的,按照原來(lái)自一節(jié),自行鏈接)。文章版權(quán)歸我站和作者共有。

轉(zhuǎn)載要求:轉(zhuǎn)載之圖片、文件,鏈接請(qǐng)不要盜鏈到本站,且不準(zhǔn)打上各自站點(diǎn)的水印,亦不能抹去我站點(diǎn)水印。

特別注意:本站所提供的攝影照片,插畫(huà),設(shè)計(jì)作品,如需使用,請(qǐng)與原作者聯(lián)系,版權(quán)歸原作者所有,文章若有侵犯作者版權(quán),請(qǐng)與我們聯(lián)系,我們將立即刪除修改。

您的評(píng)論
用戶名:  口令:
說(shuō)明:輸入正確的用戶名和密碼才能參與評(píng)論。如果您不是本站會(huì)員,你可以注冊(cè) 為本站會(huì)員。
注意:文章中的鏈接、內(nèi)容等需要修改的錯(cuò)誤,請(qǐng)用報(bào)告錯(cuò)誤,以利文檔及時(shí)修改。
不評(píng)分 1 2 3 4 5
注意:請(qǐng)不要在評(píng)論中含與內(nèi)容無(wú)關(guān)的廣告鏈接,違者封ID
請(qǐng)您注意:
·不良評(píng)論請(qǐng)用報(bào)告管理員,以利管理員及時(shí)刪除。
·尊重網(wǎng)上道德,遵守中華人民共和國(guó)的各項(xiàng)有關(guān)法律法規(guī)
·承擔(dān)一切因您的行為而直接或間接導(dǎo)致的民事或刑事法律責(zé)任
·本站評(píng)論管理人員有權(quán)保留或刪除其管轄評(píng)論中的任意內(nèi)容
·您在本站發(fā)表的作品,本站有權(quán)在網(wǎng)站內(nèi)轉(zhuǎn)載或引用
·參與本評(píng)論即表明您已經(jīng)閱讀并接受上述條款
推薦文檔 | 打印文檔 | 評(píng)論文檔 | 報(bào)告錯(cuò)誤  
專業(yè)書(shū)推薦 更多內(nèi)容
網(wǎng)站可用性測(cè)試及優(yōu)化指南
《寫(xiě)給大家看的色彩書(shū)1》
《跟我去香港》
眾妙之門(mén)—網(wǎng)站UI 設(shè)計(jì)之道
《Flex 4.0 RIA開(kāi)發(fā)寶典》
《贏在設(shè)計(jì)》
犀利開(kāi)發(fā)—jQuery內(nèi)核詳解與實(shí)踐
作品集 更多內(nèi)容

雜⑦雜⑧ Gold NORMANA V2