2010年11月12日 星期五

AS3 遊戲Class 銷銷樂v1.0 分享

先看看範例吧..

用這個Class,可以輕易的作出這樣的遊戲..
首先下載Class與範例

new一個 SaleGame(5, 5, 31);
參數部分,如上例是指 我們宣告一個 5x5 的棋盤 每隔間距 31px (目前僅能設定正方形)
接下來你可以作一些遊戲中的方塊圖案
這些圖案都必須繼承 Cain.saleGame.Squ 這個類別,代表遊戲方塊
關於繼承的Squ物件,你必須覆寫一些效果,這個Squ物件才能正常動作

滑入效果
override protected function mouseOver():void

滑出效果
override protected function mouseOut():void

點選效果
override protected function clickMe():void

取消點選效果
override protected function reclickMe():void

移動時效果
override protected function goMove(_d:int):void
移動要注意的是, _d 這個參數代表的是 每格距離,另外Squ物件裡有屬性
x_g 物件的x位置(格數)
y_g 物件的y位置(格數)
比方說最上面那一排,左邊算過來第2個 他的 x_g與y_g屬性就是 0,1
所以實際的位置必須要再乘上 _d(距離) 所以這個squ的座標就是 x = 0*_d y=1*_d

移除
override public function remove():void
記得這個方法裡面要有 unload(); 才能真正移除

Squ物件設定好之後,宣告一個Vector.陣列
然後把那些Squ物件的Class名稱丟進去
EX=>
var _vec:Vector. = new Vector.();
_vec.push("C1", "C2", "C3", "C4", "C5");
SaleGame.setup(_vec);


上例的意思是指,把元件庫中的"C1", "C2", "C3", "C4", "C5"
當成遊戲的方塊物件

設定完了之後,其實主要的工作都完成了
再來就是設定一些遊戲細節

設定容器
SaleGame.reput(this);
上面的意思是指,把主場景當成Squ物件的置放位置,當然你也可以放在別的地方

物件銷去等待時間 0.5秒
SaleGame.saleWait = .5;
連鎖等待時間0.5秒
SaleGame.removeWait = .5;
以上時間你可以自行變動,你就會知道其意義....
最後記得下
SaleGame.start();
這是開始遊戲的意思
如果要結束,你可以用
SaleGame.stop();
實際的用途,你可以作比方說1分鐘後結束,然後看積分之類的玩法...

最後如果你要計分,可以抓SaleGame物件發出的事件

Squ互換事件
SaleGameEvent_SquChange.SquChange

Squ互換失敗事件,比方說無效的互換行為就會觸發他
SaleGameEvent_SquChange.NO_ANY_SALE

銷去事件
SaleGameEvent.SALEING
接到這個事件,你可以去抓SaleGame.saleingTime屬性,這就是每次銷去連鎖的次數

單一種類銷去事件
SaleingEvent.SALEING
可檢查銷去的Squ種類與數量,主要是為了方便你作計分
這個事件會帶兩個屬性給你

銷去物件的種類
SaleingEvent.squType

這個種類被銷去的數量
SaleingEven.saleNum


以上大致上解說完成,還是不懂的話,裡面都有範例與說明文件,請自行參閱
最後還是一樣,這個Class商業用途,請先知會我...

1 則留言:

Will & Liang 提到...

您好!我下載了您的檔案,有一些小疑問!如果我直接開啟swf是可一運作,但是如果直接以fla檔測試影片都會出現錯誤,是為什麼呢?謝謝