導航

          統計
          • 隨筆 - 317
          • 文章 - 13
          • 評論 - 874
          • 引用 - 0

          留言簿(22)

          隨筆分類(268)

          隨筆檔案(281)

          Software

          • Unlocker
          • 當出現“無法刪除,訪問被拒絕”,就可以用unlocker查看占用該文件的進程,可以解除與文件的關聯(不是結束進程哦),這樣就可以正常刪除操作了(這在刪除播放過的avi電影時尤為有用,呵呵,不然就要重啟電腦了),軟件很小100多k

          朋友的博客

          搜索

          •  

          積分與排名

          • 積分 - 331098
          • 排名 - 170

          最新評論

          評論排行榜

           

          構建J2ME游戲:用TiledLayer構造背景

          在這一節中,我們要使用TiledLayer類為游戲添加一個背景。游戲界面分為三個區域:頂部表示天空,couple小精靈所在的中部是地面,底部是大海。每個區域分別使用一個32*32像素的不同顏色圖片進行填充,填充的工作由TiledLayer類完成。

          首先將屏幕分成32*32的小方格,行和列的索引都從0開始,如圖4。

          j2me3_figure4.gif

          ?????????? 圖 4. 均勻分割屏幕

          (0,0)到(1,4)的方格表示天空,(2,0)到(2,4)表示地面,(3,0)到(4,4)表示海面。我們用圖5中的圖片填充對應方格。

          tiledlayer1.gif

          圖 5. 背景圖片

          背景圖片的第一部分(32*32)表示地面,第二部分表示大海,第三部分表示天空。使用TiledLayer時,圖片的索引是從1開始的(不是0,所以地面圖像的位置是1,大海是2,天空是3)。TiledLayer類可以將圖5分割成三張圖片,然后用每張圖片填充對應的方格。在這里,我們用三個 32*32大小圖片填充5行5列的背景,部分代碼如下:

          //?加載圖片
          backgroundImg?=?Image.createImage("/tiledLayer1.gif");

          //?創建TiledLayer背景
          background?=?new?TiledLayer(5,?5,?backgroundImg,?32,?32);


          TiledLayer構造器的前兩個參數表示背景大小,第三個是圖像,最后兩個是每個格子的長和寬。TiledLayer類將根據格子的大小切割圖像,然后放到背景的對應方格中。

          最后剩下的就是設置每個方格里放置的圖像了。創建背景的所有代碼都在createBackground()方法里,如下所示。在MyGameCanvas 類的start()里調用這個方法,然后在buildGameScreen()方法的最后添加background.paint(g),這使得 TiledLayer實例將自己繪制到屏幕上。

          //?使用TiledLayer創建背景
          private?void?createBackground()?throws?IOException
          {
          ????
          //?加載圖片
          ????backgroundImg?=?Image.createImage("/tiledLayer1.gif");

          ????
          //?創建tiledLayer背景
          ????background?=?new?TiledLayer(5,?5,?backgroundImg,?32,?32);

          ????
          //?布置圖像的數組
          ????int[]?cells?=?{
          ????????
          3,?3,?3,?3,?3,??//?天空
          ????????3,?3,?3,?3,?3,??//?天空
          ????????1,?1,?1,?1,?1,??//?地面
          ????????2,?2,?2,?2,?2,??//?大海
          ????????2,?2,?2,?2,?2???//?大海
          ????};

          ????
          //?設置背景
          ????for(int?i?=?0;?i?<?cells.length;?i++)
          ????{
          ????????
          int?column?=?i?%?5;
          ????????
          int?row?=?(i?-?column)?/?5;
          ????????background.setCell(column,?row,?cells[i]);
          ????}

          ????
          //?設置背景位置
          ????background.setPosition(GAME_ORIGIN_X,?GAME_ORIGIN_Y);
          }


          最終效果如圖6。

          j2me3_figure6.gif

          ??? 圖 6. 添加了背景的游戲截屏

          原文見:http://today.java.net/pub/a/today/2005/07/07/j2me3.html?page=4


          版權所有 羅明
          posted on 2005-12-16 19:58 羅明 閱讀(1178) 評論(0)  編輯  收藏 所屬分類: Java 、J2ME
           
          主站蜘蛛池模板: 怀安县| 东宁县| 沈丘县| 贵港市| 积石山| 夏津县| 梅河口市| 唐山市| 工布江达县| 神池县| 即墨市| 金堂县| 焉耆| 东阿县| 康定县| 贺兰县| 嘉义县| 宝坻区| 衡水市| 宣化县| 腾冲县| 黔江区| 富源县| 汉源县| 营山县| 北流市| 九寨沟县| 西华县| 右玉县| 华阴市| 湖北省| 和平区| 竹溪县| 澄城县| 黑山县| 灌阳县| 玉树县| 葫芦岛市| 通山县| 仲巴县| 孟连|