j2me精灵不工作

时间:2016-07-19 13:14:01

标签: java-me sprite

首先,我很抱歉我的英语不好。我是新手J2ME

在我看了一些教程之后我写了下面的代码,但它没有用。我不知道它会发生什么。

AnimationCanvas.java

package example;

import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;

public class AnimationCanvas extends GameCanvas implements Runnable {

    private Sprite ca;
    private int frameWidth = 14;
    private int frameHeight = 14;
    private boolean playing = true;
    private int a=1;

    public AnimationCanvas(){
        super(true);
        try {
            ca = new Sprite(Image.createImage("ca.png"), frameWidth, frameHeight);
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }

    public void start() {
        Thread runner = new Thread(this);
        runner.start();
    }

    public void run(){
        while (playing){
            drawDisplay(getGraphics());
            try{
                Thread.sleep(10);
            } catch(Exception e){}
        }
    }

    public void drawDisplay(Graphics g){
        g.setColor(0x000000);
        g.fillRect(0,0,getWidth(),getHeight());
        ca.setFrame(1);
        ca.paint(g);
        flushGraphics();
    }

    public void stop(){
        playing=false;
    }
}

和AnimationMidlet.java

 package example;

 import java.io.IOException;
 import javax.microedition.midlet.*;
 import javax.microedition.lcdui.*;

 public class AnimationMidlet extends MIDlet {
      private Display display;
      private AnimationCanvas canvas;

      public AnimationMidlet() throws IOException {
           display = Display.getDisplay(this);
           canvas = new AnimationCanvas();
      }

      private void initialize() {                                         
           // write pre-initialize user code here

           // write post-initialize user code here
      }                            

      public void startMIDlet() {                                      
           // write pre-action user code here

           // write post-action user code here
      }                             



      public void resumeMIDlet() {                                       
           // write pre-action user code here

           // write post-action user code here
      }                              

      public void switchDisplayable(Alert alert, Displayable nextDisplayable) {                                            
           // write pre-switch user code here
           Display display = getDisplay();                                               
           if (alert == null) {
                display.setCurrent(nextDisplayable);
           } else {
                display.setCurrent(alert, nextDisplayable);
           }                                             
           // write post-switch user code here
      }                                   


      public Display getDisplay() {
           return Display.getDisplay(this);
      }
      public void startApp() {
           if(canvas!=null){
                display.setCurrent(canvas);
                canvas.start();
           }
      }

      public void pauseApp() {
      }

      public void destroyApp(boolean unconditional) {
           canvas.stop();
      }

 }

和输出

在identified_third_party安全域中运行 java.io.IOException异常 未捕获的异常java / lang / NullPointerException。     在javax.microedition.lcdui.ImmutableImage.getImageFromStream(Image.java:968)     在javax.microedition.lcdui.ImmutableImage。(Image.java:939)     在javax.microedition.lcdui.Image.createImage(Image.java:313)     在example.AnimationCanvas。(AnimationCanvas.java:25)     at example.AnimationMidlet。(AnimationMidlet.java:25)     在java.lang.Class.runCustomCode(+0)     在com.sun.midp.midlet.MIDletState.createMIDlet(+34)

感谢您的阅读!

0 个答案:

没有答案