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

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

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

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

梯子

在區(qū)塊游戲中梯子是很常見的一種東西。英雄可以在梯子上爬上爬下(我打賭你不知道:)。當(dāng)在梯子上按上下方向鍵的時(shí)候,我們會(huì)讓英雄上下攀爬。

看起來梯子很簡單,實(shí)際上又很多東西需要考慮。首先,有多少種梯子?

在圖中,有4種不同種類的梯子。
梯子A處于一個(gè)不可通行的障礙物中。英雄在上面能做什么呢?他可以上下爬,但是不能左右運(yùn)動(dòng),否則就會(huì)卡在墻里,那可不好受。

qhwa注: 有些游戲中在這種梯子上是可以左右移下來的,這個(gè)功能可以由你自己添加。

梯子B所在的方塊是可通行的,而且它的上面還有梯子,所以英雄可以上下爬,也可以左右移動(dòng)。但是當(dāng)他左右移動(dòng)的時(shí)候,就該掉下來了。

梯子C下面沒有梯子了,英雄只能在它上面向上爬,或者左右移動(dòng)。

梯子D并不是在所有的游戲中都會(huì)出現(xiàn)。有些人認(rèn)為這種梯子是設(shè)計(jì)的失誤,因?yàn)樗麄儾粚?dǎo)向任何地方,在空中就斷掉了。英雄可以爬上去然后站到梯子上面嗎?如果梯子頂部的左右有方塊,英雄可以走過去嗎?這些都是容易出現(xiàn)分歧的。

這些都是梯子的一些例子,當(dāng)然還有其他形式的梯子,但是我希望你能看到在開始寫代碼之前理一下思緒是多么重要。游戲各不相同,可能這里的東西在有的時(shí)候很適用,但是可能在別的地方就未必了,只要你每次寫代碼之前思考一下,不要硬套,就會(huì)事半功倍。

規(guī)則

讓我們列一下關(guān)于梯子的規(guī)則:

1. 通過上下方向鍵,英雄可以在梯子上上下移動(dòng)
2. 當(dāng)英雄和梯子接觸時(shí),他可以爬上去
3. 當(dāng)英雄和梯子接觸,且下方也有梯子時(shí),他可以爬下來
4. 當(dāng)英雄在梯子上,且左右沒有墻時(shí),他可以左右移動(dòng)
5. 英雄不能在梯子上跳躍

這些應(yīng)該夠了。

請給我一把梯子

梯子是顯示在方塊的上面的,所以我們要給他做一個(gè)獨(dú)立的影片夾子。這樣我們就不用為上面說的不同類型的梯子創(chuàng)建不同的圖像了。確定你的梯子mc被導(dǎo)出到as("Export for as"),并且檢查鏈接名是否為"ladder"。

在ladder影片夾子中,畫出如上形狀的梯子,梯子水平方向在方塊的中間。

和其他方塊一樣,我們也要定義梯子的原型:

game.Tile4 = function () {};
game.Tile4.prototype.walkable = false;
game.Tile4.prototype.frame = 2;
game.Tile4.prototype.ladder = true;
game.Tile4.prototype.item = "ladder";

game.Tile5 = function () {};
game.Tile5.prototype.walkable = true;
game.Tile5.prototype.frame = 1;
game.Tile5.prototype.ladder = true;
game.Tile5.prototype.item = "ladder";

這兩個(gè)不同的方塊(Tile4和Tile5)都具有frame屬性,這是用來表示梯子后面(在屏幕上是下面層)的方塊類型。他們還有值為true的ladder屬性(用來表示這里有把梯子),值為"ladder"的item屬性(用來attachMovie用的,復(fù)制ladder影片夾子)

在buildMap函數(shù)中復(fù)制ladder影片夾到方塊中:

game.clip[name].gotoAndStop(game[name].frame);
if (game[name].item != undefined)
{
 game.clip[name].attachMovie(game[name].item, "item", 1);
}

這段代碼首先讓方塊顯示正常的幀(由frame屬性決定),然后判斷item屬性是否為空,如果不是(有值)就復(fù)制item表示的mc。你可以把item屬性設(shè)定成別的值,這樣就可以復(fù)制別的mc,在別的地方也可以用到,只是要注意別在一個(gè)方塊中復(fù)制太多不同的mc。

為了不重復(fù)輸入代碼,我們把moveChar函數(shù)的結(jié)束部分修改一下,調(diào)用一個(gè)新函數(shù)updateChar:

updateChar (ob, dirx, diry);
return (true);


這是updateChar函數(shù):

function updateChar (ob, dirx, diry)
{
 ob.clip._x = ob.x;
 ob.clip._y = ob.y;
 ob.clip.gotoAndStop(dirx + diry * 2 + 3);
 ob.xtile = Math.floor(ob.clip._x / game.tileW);
 ob.ytile = Math.floor(ob.clip._y / game.tileH);
 if (game["t_" + ob.ytile + "_" + ob.xtile].door and ob == _root.char)
 {
  changeMap (ob);
 }
}

在fall函數(shù)中添加:

ob.climb = false;


修改detectKeys函數(shù),添加上下鍵的監(jiān)測:

if (Key.isDown(Key.RIGHT))
{
 getMyCorners (ob.x - ob.speed, ob.y, ob);
 if (!ob.climb or ob.downleft and ob.upleft and ob.upright and ob.downright)
 {
  keyPressed = _root.moveChar(ob, 1, 0);
 }
}
else if (Key.isDown(Key.LEFT))
{
 getMyCorners (ob.x - ob.speed, ob.y, ob);
 if (!ob.climb or ob.downleft and ob.upleft and ob.upright and ob.downright)
 {
  keyPressed = _root.moveChar(ob, -1, 0);
 }
}
else if (Key.isDown(Key.UP))
{
 if (!ob.jump and checkUpLadder (ob))
 {
  keyPressed = _root.climb(ob, -1);
 }
}
else if (Key.isDown(Key.DOWN))
{
 if (!ob.jump and checkDownLadder (ob))
 {
  keyPressed = _root.climb(ob, 1);
 }
}

當(dāng)我們檢測了左右鍵之后,我們判斷英雄是不是不在跳躍過程中(!ob.jump),而且利用checkUpLadder函數(shù)和checkDownLadder函數(shù)判斷附近是不是有梯子,
如果一切正常,調(diào)用climb函數(shù)來移動(dòng)英雄。

攀爬動(dòng)作的函數(shù)

我們將要?jiǎng)?chuàng)建3個(gè)新的函數(shù),1個(gè)為了檢測是否能往上爬,
1個(gè)為了檢測是否能往下爬,還有一個(gè)是實(shí)現(xiàn)攀爬動(dòng)作的函數(shù)。

function checkUpLadder (ob)
{
 var downY = Math.floor((ob.y + ob.height - 1) / game.tileH);
 var upY = Math.floor((ob.y - ob.height) / game.tileH);
 var upLadder = game["t_" + upY + "_" + ob.xtile].ladder;
 var downLadder = game["t_" + downY + "_" + ob.xtile].ladder;
 if (upLadder or downLadder)
 {
  return (true);
 }
 else
 {
  fall (ob);
 }
}

這段代碼首先計(jì)算英雄的上下兩個(gè)y坐標(biāo)(頭和腳),根據(jù)所在的區(qū)塊的ladder屬性就可以判斷是否可以往上爬。如果上下都沒有梯子,我們檢測英雄是否應(yīng)該掉下來。

function checkDownLadder (ob)
{
 var downY = Math.floor((ob.speed + ob.y + ob.height) / game.tileH);
 var downLadder = game["t_" + downY + "_" + ob.xtile].ladder;
 if (downLadder)
 {
  return (true);
 }
 else
 {
  fall (ob);
 }
}


為了檢測往下的攀爬動(dòng)作,我們需要英雄腳底下方塊的ladder屬性。
和往上爬不同,我們還要考慮到英雄接下來(移動(dòng)結(jié)束)所在的方塊的ladder屬性(ob.speed+ob.y+ob.height)。

function climb (ob, diry)
{
 ob.climb = true;
 ob.jump = false;
 ob.y += ob.speed * diry;
 ob.x = (ob.xtile * game.tileW) + game.tileW / 2;
 updateChar (ob, 0, diry);
 return (true);
}

在climb函數(shù)中,我們首先設(shè)置climb標(biāo)記為true,jump標(biāo)記為false。然后計(jì)算新的y坐標(biāo),把英雄放在梯子方塊的中間,
ob.x = (ob.xtile * game.tileW) + game.tileW / 2;

英雄可以在梯子左側(cè)或右側(cè)抓著梯子爬,但是這樣不太雅觀:)

最后我們利用updateChar函數(shù)移動(dòng)英雄到正確的位置。

下載源文件

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

上一頁 騰云駕霧 下一頁 愚蠢的敵人

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

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

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

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

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

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

雜⑦雜⑧ Gold NORMANA V2