1

我正在尝试仅绘制图像的一部分。人类图像的长度为 159x22。

在该图像中,有 8 个人体(2 个左、2 个右等)。如果我尝试将 Frame 设置为,humanSprite.setFrame(1);则会收到错误消息,因为我在 Sprite 构造函数中指定了 Image 的大小,因此只有一帧。

好吧,我试图将它除以 8,然后我ll getjava.lang.IllegalArgumentException`。

这是课程:

package org.pack.rhynn;

import java.io.IOException;                     
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.Sprite;                
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;  
import java.util.Random;


public class play extends GameCanvas implements Runnable{


int sleep = 30;
private Image map;
private Sprite mapSprite;

private Image human;
private Sprite humanSprite;
private int humanX = getWidth() /2;
private int humanY = getHeight() /2;

public play(){
    super(false);
}

public void start(){

    try {                           
        map = Image.createImage("/mapas.png");
        human = Image.createImage("/human.PNG");
    } catch (IOException ioex) {                
        System.out.println(ioex);           
    }


    mapSprite = new Sprite(map);                    
    mapSprite.defineReferencePixel(100, 150);                   
    mapSprite.setRefPixelPosition(0, 0);

    humanSprite = new Sprite(human,159,22);                 
    humanSprite.defineReferencePixel(1, 10);                    
    humanSprite.setRefPixelPosition(humanX, humanY);


    Thread thr = new Thread(this);
    thr.start();
}

public void run(){
    while(true){

        updateScreen(getGraphics());

    try{
        Thread.sleep(sleep);

    }catch(Exception e){}
}
    }

private void createBackground(Graphics g){

    g.setColor(0x000000);
    g.fillRect(0, 0, getWidth(), getHeight());

}

private void updateScreen(Graphics g){
    createBackground(g);



    mapSprite.setRefPixelPosition(0, 0);                
    mapSprite.paint(g);

    humanSprite.setRefPixelPosition(humanX, humanY);
    humanSprite.setFrame(0);

    humanSprite.setPosition(50,50);
    humanSprite.paint(g);

    flushGraphics();


}



}
4

1 回答 1

2

问题似乎与您的图像有关。所有帧必须具有相同的宽度和高度,并且图像的最终宽度和高度必须是它们的倍数。

例如,假设您的所有帧都在一行中。如果帧宽为 19,而您有 8 帧,则最终图像宽度必须为 152。

于 2012-08-08T12:02:19.730 回答