1

イメージの一部だけをペイントしようとしています。人間の画像の長さは 159x22 です。

その画像には 8 体の人体があります (左 2 体、右 2 体など)。Frame を に設定しようとするとhumanSprite.setFrame(1);、Sprite コンストラクターで Image のサイズを指定してフレームが 1 つしかないため、エラーが発生します。

さて、私はそれを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

問題はあなたのイメージにあるようです。すべてのフレームの幅と高さは同じでなければならず、画像の最終的な幅と高さはそれらの倍数でなければなりません。

たとえば、すべてのフレームが 1 行に並んでいるとします。フレーム幅が 19 で 8 フレームの場合、最終的な画像幅は 152 でなければなりません。

于 2012-08-08T12:02:19.730 に答える