Тема: TimerTask
Показать сообщение отдельно
Старый 13.07.2006, 14:24   #3
SubZer0
Администратор
 
Аватар для SubZer0
 
Регистрация: 03.09.2005
Сообщений: 2,408
Написано 301 полезных сообщений
(для 996 пользователей)
хммм... не работает...

код: Main.java

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

public class Main extends MIDlet implements CommandListener {
    
    public Main midlet = this;
    public Display MD = null;
    public boolean Started=false;
    public Timer timer = null;
    public GameC GC = null;
    public Graphics MG = null;
    public MainLoop ML = null;

    public Stages Stage = null;
    public LayerC LC = null;
    public Image MainTileSet = null;
    
    int i,j;
    
    public void startApp() {

        GC= new GameC();
        GC.CreateScreen();
        MG = GC.CreateScreen();
        Display.getDisplay(this).setCurrent(GC);

        MG.setColor(200,200,50);
        MG.fillRect(0,0,100,100);

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


        Stage = new Stages();

        
        try {
            MainTileSet = Image.createImage("/Tileset Map11.png");
        } catch (IOException ex) {
            ex.printStackTrace();
        }
        
        LC = new LayerC(19,19,MainTileSet,16,16);
        
        for(i=0;i<Stage.TestStageX;i++) for(j=0;Stage.TestStageY<19;j++) {
            LC.setCell(i,j,Stage.TestStage [j][i]);
        }

        TimerTask TT = new MainLoop();
        timer = new Timer();
        timer.schedule( TT, 0, 1000 );

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

    public void PAll() {
        
    }

    
}
 

class MainLoop extends TimerTask {

    public static GameC GC = null;
    public static Display MD = null;
    public static Graphics MG = null;
    public static LayerC LC = null;

    int i=0,j=0;    

    public static Main midlet = null;

    public void pall() {

    }
    
    public void run() {

//        LC.paint(MG);
        System.out.println(3);
        
        GC.PAll();

    }
    
}
в классе GameC:

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 {
    
    int i=0,j=0;
    public static GameC GC = null;
    public static Display MD = null;
    public static Graphics MG = null;
    public static LayerC LC = null;

    public GameC() {
        super(true);
    }
    
    public Graphics CreateScreen() {
        return getGraphics();
    }
    
    public synchronized void PAll() {

        //MG = getGraphics();
        //MG.setColor(200,200,50);
        //i++;
        //if (i>10) {i=0;j++;}
        //if (j>10) {i=0;j=0;}
        
        //MG.fillRect(i,j,10,10);

        
        //flushGraphics();

    }
    

    
}
короче виснет даже на вызове ПУСТОГО метода... даже midlet.PAll(); виснет... только если такой создаешь в самом классе таймера, тогда робит, но если потом из него опять ченить вызываешь все виснет

ммдя... как я уже 100 раз говорил Маркс с Энгельсом пролетают по полной по напрягу умственной деятельности... они на яве никогда не кодили, ламо блин ушастые...

__________________
Как минимум я помог многим (с)
(Offline)
 
Ответить с цитированием