forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Программирование (http://forum.boolean.name/forumdisplay.php?f=54)
-   -   еще вопрос (http://forum.boolean.name/showthread.php?t=1136)

SubZer0 12.07.2006 14:43

еще вопрос
 
блин... Маркс с Энгельсом пролетают (ламо несчастные), они не пробовали на яве программировать... еще и без литературы.

короче пошарился я и понял, что главный цикл игры вешают или на отдельную нить с регуляцией ФПС, или просто на таймер. Пробую повешать на таймер:

Код:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

public class Main extends MIDlet {
    Timer timer = null;
    MyTask Mtt = null;

   
    public void startApp() {
       
        Mtt = new MyTask();
        timer = new Timer();
        timer.schedule( Mtt, 0, 1000 );
    }
   
    public void pauseApp() {
    }
   
    public void destroyApp(boolean unconditional) {
       
    }
   
    public void exit() {
        timer.cancel();
        destroyApp( true );
        notifyDestroyed();
    }
}

class MyTask extends TimerTask {
   
    public void run() {
        System.out.println( "Запуск задачи" );
    }
}

все вешается, и все работает... теперь вопрос как из этого выйти!

из самого класса MyTask нельзя вызвать какойнить метод класса Main, или я просто не знаю как это сделать.

короче вопрос: как из метода run() вызвать метод exit()???

:)

pax 12.07.2006 20:45

Код:

import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.util.*;

public class Main extends MIDlet {
    Timer timer = null;
    MyTask Mtt = null;
    public static Main m = null;


   
    public void startApp() {
        m=this;
        Mtt = new MyTask();
        timer = new Timer();
        timer.schedule( Mtt, 0, 1000 );
    }
   
    public void pauseApp() {
    }
   
    public void destroyApp(boolean unconditional) {
       
    }
   
    public void exit() {
        timer.cancel();
        destroyApp( true );
        notifyDestroyed();
    }
}

class MyTask extends TimerTask {
    public static Main midlet = null;

    public void run() {
        System.out.println( "Запуск задачи" );
        midlet.m.Exit();
    }
}

Решается статическими переменными ;) (см. исправленный код выше)

:)

SubZer0 12.07.2006 21:47

Урраааа!!! хоть ктото ответил мне в этом интернете... спасиб! респект!

только у меня в мидлете не дает статичное ничего определить... просто паблик, а в классах ужо можно... и самое главно евсё работает!!!

:)


Часовой пояс GMT +4, время: 07:33.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot