Показать сообщение отдельно
Старый 23.07.2006, 18:22   #1
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
Сообщение и снова нифига не работает

Я думаю, что у меня опять та-же проблема... но поскольку ни IDE, ни в процессе выполнения никакой ошибки не выскакивает, и по моей примитивной логике все нормально, прошу совета...

есть у меня три файла:

main.java
import java.io.IOException;
import java.util.*;
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

public class Main extends MIDlet implements CommandListener
{
    public Main midlet = this;
    public static Display MD = null;
    public static Timer timer = null;
    public static GameC GC = null;
    public static Graphics MG = null;
    public static MainLoop ML = null;
    public static Image TestTile = null;
    public static Spr SprC = null;
    
    int i,j;

    public void startApp()
    {
        GC = new GameC();
               
        GC.CreateScreen();
        MG = GC.CreateScreen();
        Display.getDisplay(this).setCurrent(GC);

        GC.addCommand(new Command("Exit", Command.EXIT, 1));
        GC.setCommandListener(this);

        TimerTask TT = new MainLoop();
        timer = new Timer();
        timer.schedule( TT, 0, 500 );
        try {
            TestTile = Image.createImage("/Tank1red.png");
        } catch (IOException ex) {
            ex.printStackTrace();
        }

        
        SprC = new Spr(TestTile,20,20);
        
    }
    
    public void pauseApp()
    {
    }
    
    public void destroyApp(boolean unconditional)
    {
    }

    public void commandAction(Command command, Displayable displayable) {
       if (command.getCommandType() == Command.EXIT) {
       destroyApp(true);
       notifyDestroyed();
      }
    }

}
class MainLoop extends TimerTask {

    public static GameC GC = null;
    public static Display MD = null;
    public static Graphics MG = null;
    public static Spr SprC = null;
    public static Image TestTile = null;


    int i=0,j=0;    

    public static Main midlet = null;

    
    public void run() {

        //System.out.println(3);
        //midlet.SprC.paintSprite(MG);
        //midlet.GC.paint(MG);
        //midlet.SprC.paint(MG);
        midlet.GC.PAll();
        
    }
    
}
Spr.java
import javax.microedition.lcdui.game.Sprite;
import javax.microedition.lcdui.*;


public class Spr extends Sprite

{

    public static GameC GC = null;
    public static Spr SprC = null;
    public static Image TestTile = null;
    public static Graphics MG = null;
    
    public Spr(Image image, int x,int y)
    {
        super(image, x, y); 
   
    }
    
    public void paintSprite(Graphics MG)
    {
        paint(MG);
    }
    
}
GameC.java
import javax.microedition.lcdui.Command;
import javax.microedition.lcdui.Display;

import javax.microedition.lcdui.Displayable;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;

public class GameC extends GameCanvas {
    
    static int i=0,j=0;
    public static GameC GC = null;
    public static Display MD = null;
    public static Graphics MG = null;
    public static Main midlet = null;
    
    public GameC() {
        super(true);
    }
    
    public Graphics CreateScreen() {
        return getGraphics();
    }
    
    public static void PAll() {

        midlet.MG.setColor(128,128,128);
        

        if (i>100) {i=0;j=+10;}
        if (j>100) {i=0;j=0;}
        i+=10;
        
        midlet.MG.fillRect(i,j,10,10);


        midlet.GC.flushGraphics();

    }
    


    
}
если все это дело откомпилить и запустить, то всё работает... на экране рисуюццо квадратики... гут... но как нарисовать спрайт? раскомментирую "midlet.SprC.paintSprite(MG);" или "midlet.SprC.paint(MG);" то сразу все виснет... опять видать чето "нестатичное" вызываеццо... и что я проследить не могу... вроде все статичное... плиз хелп!
__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием