Просьба указать причину отстутствия анимированного спрайта на экране
В чём причина отстутствия анимированного спрайта на экране
Уважаемые J2ME-User'ы.
С учётом того, что Eclipse показывает чистый код,
реализация анимированного спрайта на экране мобильного телефона, после прочтения соответствующего материала в книгах по J2ME, результата не показала. По этой причине прошу объяснить причину в программном коде, блокирующая реализацию данной задачи.
Спрайт содержит 8 кадров, каждый по 23х28. Горизонтальное расположение.
С уважением
MidletUser
Программный код
import java.io.IOException;
import javax.microedition.lcdui.Display;
import javax.microedition.midlet.*;
public class MyMidlet extends MIDlet {
Display display;
MyGameCanvas mygamecanvas;
public MyMidlet() throws IOException{
display = Display.getDisplay(this);
mygamecanvas = new MyGameCanvas();
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
// TODO Auto-generated method stub
}
protected void pauseApp() {
// TODO Auto-generated method stub
}
protected void startApp() throws MIDletStateChangeException {
mygamecanvas.setFullScreenMode(true);
display.setCurrent(mygamecanvas);
// TODO Auto-generated method stub
}
}
import java.io.IOException;
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;
import javax.microedition.io.*;
public class MyGameCanvas extends GameCanvas implements Runnable {
Graphics g;
boolean working;
Thread thread;
LayerManager layermanager;
Sprite mysprite;
Image image2;
public MyGameCanvas() throws IOException{
super(true);
working = true;
thread = new Thread(this);
thread.start();
}
public void run() {
try {
image2 = Image.createImage("/animated_sprite.png");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
mysprite = new Sprite ( image2, 23, 28 ) ;
mysprite.defineReferencePixel(0, 0);
mysprite.setPosition(10, 10);
layermanager = new LayerManager();
layermanager.append(mysprite);
g = getGraphics();
if(working){
layermanager.paint(g, 0, 0);
mysprite.paint(g);
mysprite.nextFrame();
flushGraphics();
repaint();
try {
Thread.sleep(10);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
// TODO Auto-generated method stub
}
public void paint(Graphics g){
g.setColor(255, 255, 255);
g.fillRect(0, 0, 240, 320);
int [] sequence = {0,1,2,3,4,5,6,7};
mysprite.setFrameSequence(sequence);
mysprite.nextFrame();
}
}
Последний раз редактировалось MidletUser, 30.09.2011 в 19:58.
|