flash 遊戲 算24點,掃雷開發備忘。

來源:互聯網
上載者:User

前一陣子,開發了個24點遊戲的,用的as3.0 。

開發前對flash和as3.0並不是很瞭解,簡單的文法是知道的。

flash裡面因為可以做movieclip,建立動畫對象真是很方便。其他語言中的自訂控制項,在as3中幾乎是原生功能。

支援類,支援多個檔案的程式碼群組織,簡單項目用起來還是很方便的。

是否有解,用了個遞迴演算法,感覺效率還是挺高的。

運算式計算走了捷徑,調用了eval。合法性檢測,直接加了點代碼。

試玩地址:

算24點

http://85xt.cn/vod_play.aspx?indexid=0&_id=1448

 掃雷

http://85xt.cn/vod_play.aspx?indexid=0&_id=2261

下面做一個掃雷程式。

用mc作為基本元件,用數組儲存產生的mc對象。banding對象的事件,大致代碼如下。

for(var i:int=0;i<rows;i++)
   {
     for(var j:int=0;j<cols;j++)
   {
    crnt=i*cols+j;
    btns[crnt]=new btn();
    btns[crnt].x=j*17+25;
    btns[crnt].y=i*17+50;
    btns[crnt].addEventListener(MouseEvent.CLICK,btnOnMouseClick);
    btns[crnt].ismine=0;
    btns[crnt].minearound=0;
    btns[crnt].tag=crnt;
    addChild(btns[crnt]);
   }
   }

 

mc有12幀,表示有n課雷等12種狀態。

點擊的時候判斷這個mc附近有幾個類。

flash麼有右鍵,所以,單擊為標記,雙擊為開啟。沒有問號狀態。

雙擊開啟,要支援智能判斷,就是如果是0顆雷,則把這一大片都開啟。

flash本身不支援雙擊。不過簡單的代碼就可以解決這個問題,具體google下。

比較難得是如果點到空白處要把周圍的8個都開啟,並且如果碰到空白的還要開啟。這裡考慮了下,用遞迴來做。

當感覺有時候會卡一下,然後沒有右鍵真的很麻煩。

 

發現gotoandplay代碼的效率很低。有條複位語句和自動開啟空白的遞迴很慢,發現都是gotoandstop造成的。trace了下,基本每個mc佔40ms。

似乎bitmapdate可以解決這個問題。

mc中的每幀改成位元影像,速度有20%左右的提高。

如果把mc中的12幀刪除掉,剩下一幀,速度就很快了。

gotoandstop用draw來做。

有個flash遊戲最佳化技巧的文檔,不錯的。

 

現在的思路是在mc裡放一個bitmap。然後根據情況畫這個bitmap。

如何訪問mc中的子元件呢?

 最後的方法是產生bitmap,然後在一個空的mc裡,addchild。

映像原件不是位元影像,好像不能在as3中使用。外部匯入的bmp檔案,倒是可以匯出到as3種使用。

載入庫中的位元影像對象的代碼如下

var bb1:Bitmap;
   
   if(i==0)
       bb1=new Bitmap(new graybmp(0,0));

 mc.addChild(bb1);   
    

這個速度很快。幀多的話判斷比較多,寫成一個函數,用起來也很方便。

另外stage對象無法在主函數擷取到,相關解釋查google。

我因為想獲得一個全螢幕響應的鍵盤事件而已,所以在第一幀中調用stage就可以了。

然後碰到的問題是改變滑鼠形狀的問題。

只能通過mc跟隨滑鼠來解決。

as3的編譯器還不夠強大,錯誤提示很不爽。

剩下的就是程式邏輯了。

2個程式基本都是300行左右的代碼,寫小程式真是比做大項目有意思。不用考慮複雜的需求。。

 

2012-5-26今天開始想做俄羅斯方塊

第一個問題就是不規則形狀的碰撞檢測,規則形狀可以通過distance來判斷,不規則形狀就難多了。

google下,as3有內建方法,bitmapdata,有hittest方法。所以用兩個bitmapdata就可以了。

每個block是一個bitmap,然後背景是一個bitmap。

檢測到碰撞,則停止移動。並且把對於的內容複寫到背景。

動手了。

 

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.