J2ME游戲API的游戲精靈Sprite

字號:

在J2ME手機游戲開發(fā)中,MIDP2.0以上版本提供了一個有助于游戲制作的類,該類稱為游戲精靈Sprite,在J2ME中使用游戲精靈Sprite可以簡單的管理角色動畫使用的frame圖像。
    以下我將歸納一下游肪镾prite的一些核心內(nèi)容。
    一、圖像分割
    在使用Sprite類時候,只需要準備一張圖像就可以構(gòu)造出生動的動畫效果,將要制作的動畫效果使用的圖像按照順序排列后制作成一張圖片,在Sprite構(gòu)造方法中設(shè)定圖片源跟圖片的分割frame數(shù),Sprite就能自動根據(jù)frame數(shù)對圖片進行分割。
    Sprite常用構(gòu)造方法為:public Sprite(Image i, int frameWidth, int frameHeight)。
    需要注意的是,組成圖片的各個幀寬度必須相同,且像素數(shù)需要跟圖片對應(yīng),否則將出現(xiàn)IO異常。
    二、圖片frame設(shè)置
    經(jīng)過Sprite的分割后,圖片將被分成不同的獨立小圖片,例如一副圖片由4幀圖片組成,則圖片的index將從0-3個不同幀對象。利用Sprite類的setFrame(int index)方法可以在游戲過程中任意指定顯示哪一個frame。
    相應(yīng)其他方法還有nextFrame()和prevFrame()取得前后幀圖像等方法。
    三、精靈定位與描繪
    Sprite類利用setPosition方法來指定精靈描繪的坐標點(固定點是圖片的左上頂點坐標),從而定位了精靈在屏幕中的位置;在描繪精靈時,只需要把Graphics對象傳遞到Sprite中的paint方法中的參數(shù)就能將精靈顯示。
    例如:精靈對象plane
    設(shè)置位置: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)來設(shè)定精靈的轉(zhuǎn)動跟翻轉(zhuǎn)效果,利用它我們就可以容易的讓圖片動起來。
    參數(shù)transform預先設(shè)定了八種常量定義,這八種常量對應(yīng)的效果如下:
    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)動。
    如設(shè)定精靈plane轉(zhuǎn)動90度如下:
    plane.setTransform(Sprite.TRANS_ROT90);
    五、精靈參照點和目標定位
    在Sprite中還有兩個重要的方法,分別為defineReferencePixel(int x,int y)和setRefPixelPosition(int y,int y),用于設(shè)定精靈的參照點和對精靈參照點的目標定位。
    如設(shè)定精靈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ā)生,通常設(shè)定為true使得游戲更加逼真。