Flash遊戲製作(作个标记)

上一篇 / 下一篇  2007-02-15 15:31:47

Flash遊戲製作小精灵儿童社区e!f!pWI:L[ ^[
小精灵儿童社区.f1g1@/v"N
原理:
|uE$E+z/?:{B0R0 1.把好玩的flash遊戲下載,
F$uO(|~%r8R6~0 2.然後把swf文件轉成fla文件,
@$gX"N,\2o?F0 3.進行修改,
0? N'}dL V p0 4.發佈.
,nQi,Q%l0 小精灵儿童社区_#`1pv*y-e#N
軟件需求:
5[hnk|6K{1a0 1.SWFDECOMPILER (可在sothink http://www.sothink.com/product/flashdecompiler/download.htm 下載試用版, 或是在網上找綠色版本)
VE1n~ HC/[[0 2.flash mx 2004或以上 (建議使用FLASH 8 版本)小精灵儿童社区C;[2w6a m0P0r

'N U P{!r0 swf quicker 2.5 或以上
rz6h3@ xP7v"f\'Kl0
/[h(dm o|3T[0XS0 詳細說明:小精灵儿童社区(WMz#J}T`(?
(初學者,最好找一些比較簡單,容量較小的遊戲來改造.)小精灵儿童社区*\!F o n }?

O+vx J#]0 1.下載SWF檔
3uX!M.H"OuG]2?&^U0 可以使用SWFDECOMPILER內附的CATCHER協助.小精灵儿童社区m~Xxx `BB
或者使用flash viewer http://www.unhsolutions.net/Flash-Saving-Plugin/downloads.shtml 都是比較方便的.小精灵儿童社区[B0[CZcG6l
小精灵儿童社区d*d]3zs8U m
2.如何把swf轉成FLA文件小精灵儿童社区HliaQl
這裡有一些視象教學. http://ws3.wsps.tyc.edu.tw/sb2/07tools/swfdecompiler2005/小精灵儿童社区1k)W r2m+R6r4d
其實安裝SWF-DECOMPILER後,在swf文件上按右鍵,選convert to fla便可以了.小精灵儿童社区 d7o!o!e |l0t$Td
在過程中,會問用什麼版本解譯,一般都選recommanded的一種.小精灵儿童社区?1H!W!K4R2`j,n`
小精灵儿童社区2Mz[j@
3.測試轉好的FLA文件
\:K p&El0 轉好的fla文件,要先拿到flash8上嘗試發佈測試(按f12),如果發佈成功(沒有錯誤信息),遊戲正常,便可以進行下一步.
c"}Q0P"x?6?J0 以我經驗,有8成以上的swf都是正常可以轉成fla無誤的.小精灵儿童社区#E^0q ?#QmY\e
但也有20%失敗,原因有兩個:
'Sj'\ WvP0 1.swf遊戲太舊,用了一些不支援的語句.此時需要自己除蟲,一般在出問題的地方上按一下f1便有說明檔了
I a(|KAQ[,A0 2.swf被保護了:有大約百分之一的swf被發布人使用了aso(Actionscrīpt Obfuscator)加了保護,防止別人反組譯.        這些swf就很難修改了.暫時只有放棄.
_ khAd0 小精灵儿童社区:I2@I{rUB}Y+L
4.開始修改FLA文件小精灵儿童社区*VjyM4`@ |Mw
a. 在遊戲開始的地方導入資料
/eka RT0 在第一影格加以下的actionscrīpt:
)p'z4x`Q'kT E0 小精灵儿童社区GI$|c(d5Z*c V7Z
function end(score, level, bonus, others) {
Ey6vzl7W$G9j0         nk_now = new Date();
$V O7_ I7~6a&l*`/t0         _root.sendLV.starttime = _root.nk_starttime;
A E3OOgr/w'O0         _root.sendLV.playedtime = Math.round((getTimer() - _root.nk_starttimer) / 1000);小精灵儿童社区dfa*N]*I N5]w
        _root.sendLV.playertime = _root.nk_timediff + Math.round(nk_now.getTime() / 1000);
HY(E,tF'?kg%[!f0         _root.sendLV.fscore = score;小精灵儿童社区}/x"?\T^
        _root.sendLV.level = level;小精灵儿童社区+A[ny M$];W
        _root.sendLV.bonus = bonus;小精灵儿童社区o/Je]+E"d7e d/N4N3~
        _root.sendLV.others = others + '- ' + Math.floor(_root.sendLV.playedtime / 60) + "分" + (_root.sendLV.playedtime % 60) + "秒";小精灵儿童社区0TG?M/Z Fu Z
        _root.sendLV.action = "swfrecord";小精灵儿童社区 Eg2B9Fiv_ }
        _root.loadok = false;
@?;q[)vQ8[s0         _root.sendLV.sendAndLoad("plugins.php", _root.loadLV, "POST");小精灵儿童社区h G;H~R&^'z&kpC
        _root.nk_money = Math.round(score / _root.nk_rate + bonus);        // 用來顯示所得金錢
F4Z [1Qf:pv)OA0         if (_root.nk_money > _root.nk_bonuslimit and _root.nk_bonuslimit > 0) {
&M1fpw)[)]9c/M E/d0                 _root.nk_money = _root.nk_bonuslimit;
r(q2U2ynW0         }小精灵儿童社区vMwY){.eb-\-j+L
}
}$yG)O `;IxTE0 System.useCodepage = true;
o6TG*I/GWH0 _root.sendLV = new LoadVars();
nAi,AD,w0 _root.loadLV = new LoadVars();小精灵儿童社区:kG#A:tu.^3J
_root.loadLV.onLoad = function(success) {
9Uv U3aa}?$?0         if (success) {小精灵儿童社区5R6k(Dg.^v#s?Uh
                if (this.disallow) {
:`Tf Q8e ex9swAC0                         getURL("plugins.php?p=nkflash&game=" + _root.sendLV.game);小精灵儿童社区#{?_!p Fc.m1jbe
                }
'V9BTVN|^!aZ0                 nk_now = new Date();
-nHScICh\/P0                 _root.nk_starttime = this.servertime;
kM7D-aX qb'_0                 _root.nk_starttimer = getTimer();
tu/kX`"w0                 _root.nk_timediff = this.servertime - Math.round(nk_now.getTime() / 1000);
H-m-T D$_#R n0                 _root.nk_rate = this.rate;小精灵儿童社区L;{8OdcQ"U]
                _root.nk_bonuslimit = this.bonuslimit;小精灵儿童社区%Yf:cLK
                _root.nk_toplist = this.toplist;                //排行榜使用的變數小精灵儿童社区i6J+~ m-Ij l
                _root.nk_username = this.username;                //玩家名字
xm9L8hu0                 _root.nk_creditunit = this.creditunit;                //獎金單位
&t\5fe#G8pH,B0                 _root.nk_credittitle = this.credittitle;                //獎金名稱小精灵儿童社区x+Oj,x)k4|6DF)s`-^
                _root.loadok = true;
[N;nA+~%QPXX0         }else{小精灵儿童社区 Q-A(EH{^"U
                _root.nk_toplist = "
(c1[1N+Z!a0 小精灵儿童社区$~Kae&_B'X
小精灵儿童社区)Sw)|t?Xp

]7? ~}T:X0

請勿胡亂連接本遊戲!小精灵儿童社区KP%bS_ T

";
JHbd|pg.bI0         }小精灵儿童社区3h%A+lKEL-^
};小精灵儿童社区F k#L+YD I&HS!q
_root.sendLV.p = "nkflash";
NA x9J7[G0 _root.sendLV.game = "xxxxxxxxxxxx";   // 請修改game_id
,M?7o0t C Kd7I0 _root.sendLV.action = "swfstart";
;Xda1[F1Ep5Cd:KZ0 _root.loadok = false;小精灵儿童社区Uv){*D]C"c'Z
_root.sendLV.sendAndLoad("plugins.php", _root.loadLV, "POST");小精灵儿童社区;D[*C~ T:C
_root.code_loaded = true;小精灵儿童社区eT(@O CY
小精灵儿童社区f `E%yq_
B. 確保正確讀得PHP信息才可開始遊戲.小精灵儿童社区rN c3]r6Hv3s$|
在開始(或重新開始)的按鈕, 加入 一句判斷是否_root.loadok小精灵儿童社区;@)M:z4l.a1w/O$P
例如:原本是:小精灵儿童社区,j.M J4?y R5~r
ON (PRESS) { gotoAndPlay("GAMESTART"); }小精灵儿童社区'f6QR Rw3vPH{&@:IJ
小精灵儿童社区4DSjU|,w#R
, 就要改成:小精灵儿童社区5]1iEvk"y1E Z
ON (PRESS) { if (_root.loadok) gotoAndPlay("GAMESTART"); }
wa I#A+z;pkFM ~0
A#} Z`~0 C.結束時傳迴游戲成績.
7dOn!\ W0 在GameOver時加以下AS碼, 用來傳送成績回網站的資料庫:
Rc@7G T d0 小精灵儿童社区8RAI`8w
_root.end(gamescore, gamelevel, gamebonus, gameothes);
Y6]w }gOL0
wY^c)ps{?[0 以上gamescore, gamelevel, gamebonus, gameothes要自己修改小精灵儿童社区-au/G\.gS)jK.F
gamescore 為遊戲中記錄積分的變數小精灵儿童社区_e H6iE y| ?)j
gamelevel 為遊戲中記錄等級的變數,如果無等級可設為0小精灵儿童社区$n!X.s| TH2MN
gamebonus 遊戲中記錄額外獎金的變數,如果無額外獎金可設為0
5I\^:pW.wG MX0 gameothers 是附加在排行榜的內容,可為空字元小精灵儿童社区 u!xo$I3Y5t pS
例: _root.end(score,0,0,"");小精灵儿童社区l2\ D e7p
小精灵儿童社区Bs)r#er8Te/M
要在何處加這句 _root.end(XXXX) 是一個難點!
YvF.n(S&s,b0 一般會先看主影片,哪一格是遊戲的迴圈,結束在哪裡.小精灵儿童社区6F/WFQ4x _ t
也可以瞭解GAMEOVER的原因,從而判斷迴圈的結束點是何處.
&rYy ~P u0 例如:生命是0時遊戲便結束,可以找顯示生命文字的變數是什麼,再用找尋ctrl+F,找哪些地方與這個變數有關.
w+|d&UN:\s K0 小精灵儿童社区u:`2wd JXg6kg
5.到論壇測試
0JLnqKBX UW,r|0 加入上述程序後,應該開始去論壇測試.看遊戲能否正常記錄分數.小精灵儿童社区OW0|QZD K"X R
要先去前台管理,新增遊戲,類別寫成[未開放].
8B7p_]w wXJC{i0 然後玩兩三局,看能否正常記錄得分.小精灵儿童社区Hg8Br%B%iVfY}
小精灵儿童社区4E |%yk Y:d3k0N
6.美化遊戲
/N bq LLy}0 小精灵儿童社区Q,et+Y!M `0I
A. 加入排行榜.小精灵儿童社区0K v8ha"Rcb6r)r+R"T
先要判斷時間軸中哪一影格比較適合顯示排行榜.繼而修改.小精灵儿童社区r.n?4A(d.Lp
一般會在畫面上加1個文字框,再在屬性中選擇動態文字,小精灵儿童社区8GPp vFl
在變數欄填上 _root.nk_toplist  
1{!E|S#HXL0 選[多行], [], 不選[Ab] 調整行距. 字體顏色和大小.
"[:|| r`fF$^0 但要注意字型必須選用 ()系統預設字型. 小精灵儿童社区t.C4?e t*\
小精灵儿童社区C5y+~5DlI2uX
B.遊戲結束時顯示獎金.
*j QoBz0 可以在GAMEOVER時,顯示遊戲得分的地方,小精灵儿童社区^g2x D3f
插入文字方塊(動態文字),並把變數設成_root.nk_money可顯示遊戲獲得的金錢.
DimtE5bm0
3hhDz }0 C.對遊戲的不良地方進行修改.
.q@?e$Z0 (適合高手)小精灵儿童社区W[@2`!|
小精灵儿童社区A?6~ Ej\V\
7.發佈遊戲
[ s7E3?+qW#n AJ0 1.為遊戲做一幅縮圖,尺寸是 140 X 105
e3`:dM)jS w0 2.調整 遊戲種類,得分限制,獎金比率.小精灵儿童社区 Le&yQQ4?6V)j ^~
3.導出遊戲SQL碼,發佈遊戲
8BG{r6Z@0Q+^vzoq0 (發佈時,請提供演示,SQL碼,圖檔,SWF檔的連結)

TAG:

 

评分:0

我来说两句

显示全部

:loveliness: :handshake :victory: :funk: :time: :kiss: :call: :hug: :lol :'( :Q :L ;P :$ :P :o :@ :D :( :)

关于作者