?? 在J2ME手機游戲開發(fā)中,MIDP2.0以上版本提供了一個有助于游戲制作的類,該類稱為游戲精靈Sprite,在J2ME中使用游戲精靈Sprite可以簡單的管理角色動畫使用的frame圖像。
?? 以下我將歸納一下游戲精靈Sprite的一些核心內(nèi)容。
?? 一、圖像分割
?? 在使用Sprite類時候,只需要準備一張圖像就可以構(gòu)造出生動的動畫效果,將要制作的動畫效果使用的圖像按照順序排列后制作成一張圖片,在Sprite構(gòu)造方法中設定圖片源跟圖片的分割frame數(shù),Sprite就能自動根據(jù)frame數(shù)對圖片進行分割。
?? Sprite常用構(gòu)造方法為:public Sprite(Image i, int frameWidth, int frameHeight)。
?? 需要注意的是,組成圖片的各個幀寬度必須相同,且像素數(shù)需要跟圖片對應,否則將出現(xiàn)IO異常。
?? 二、圖片frame設置
?? 經(jīng)過Sprite的分割后,圖片將被分成不同的獨立小圖片,例如一副圖片由4幀圖片組成,則圖片的index將從0-3個不同幀對象。利用Sprite類的setFrame(int index)方法可以在游戲過程中任意指定顯示哪一個frame。
?? 相應其他方法還有nextFrame()和prevFrame()取得前后幀圖像等方法。
?? 三、精靈定位與描繪
?? Sprite類利用setPosition方法來指定精靈描繪的坐標點(固定點是圖片的左上頂點坐標),從而定位了精靈在屏幕中的位置;在描繪精靈時,只需要把Graphics對象傳遞到Sprite中的paint方法中的參數(shù)就能將精靈顯示。
?? 例如:精靈對象plane
?? 設置位置:plane.setPosition(getWidth()/2, getHeight()/2);
?? 顯示精靈:plane.paint(g);
?? 四、精靈轉(zhuǎn)動跟翻轉(zhuǎn)
?? 在游戲中經(jīng)常需要使游戲?qū)ο笥修D(zhuǎn)動跟翻轉(zhuǎn)的功能使得游戲更加生動逼真,在Sprite類中提供了方法void setTransform(int transform)來設定精靈的轉(zhuǎn)動跟翻轉(zhuǎn)效果,利用它我們就可以容易的讓圖片動起來。
?? 參數(shù)transform預先設定了八種常量定義,這八種常量對應的效果如下:
?? 1、TRANS_NONE: 沒有進行轉(zhuǎn)動和翻轉(zhuǎn);
? 2、TRANS_ROT90: 90度轉(zhuǎn)動;
? 3、TRANS_ROT180: 180度轉(zhuǎn)動;
? 4、TRANS_ROT270: 270度轉(zhuǎn)動;
? 5、TRANS_MIRROR: 左右翻轉(zhuǎn);
? 6、TRANS_MIRROR_ROT90: 左右翻轉(zhuǎn)后90度轉(zhuǎn)動;
? 7、TRANS_MIRROR_ROT180: 左右翻轉(zhuǎn)后180度轉(zhuǎn)動;
? 8、TRANS_MIRROR_ROT270: 左右翻轉(zhuǎn)后270度轉(zhuǎn)動。
? 如設定精靈plane轉(zhuǎn)動90度如下:
? plane.setTransform(Sprite.TRANS_ROT90);
? 五、精靈參照點和目標定位
??在Sprite中還有兩個重要的方法,分別為defineReferencePixel(int x,int y)和setRefPixelPosition(int y,int y),用于設定精靈的參照點和對精靈參照點的目標定位。
??如設定精靈plane的參照點跟定位點如下:
??plane.defineReferencePixel(0,12);
??plane.setRefPixelPosition(getWidth()/2,getHeight()/2);
??六、精靈碰撞檢測
??在MIDP1.0中對游戲角色碰撞是通過計算物體的大小以及坐標來判斷的,Sprite中提供了專門的碰撞判斷方法,通過該方法可以容易的對角色是否接觸進行判斷。
??碰撞判斷常用的方法為collidesWith(Sprite sprite,boolean pixelLebel);
??第一個參數(shù)為與自身可能發(fā)生碰撞的精靈對象;
??第二個參數(shù)為是否像素級別碰撞檢測,如果為false,則當精靈圖片的邊框接觸時候?qū)榕鲎舶l(fā)生;如果為true,則需要在當圖片中真實的像素內(nèi)容接觸時碰撞才發(fā)生,通常設定為true使得游戲更加逼真。
?
鳳凰涅槃/浴火重生/馬不停蹄/只爭朝夕
???? 隱姓埋名/低調(diào)華麗/簡單生活/完美人生