Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> pauseApp(), пчему не вызываеться? 
:(
    Опции темы
Jlekc
  Дата 12.4.2006, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



По идеи данный код должен реагировать на паузу (входящии звонки, етк.)
Но этого не происходит((
Как зделать чтоб преложении реагировало?
Код

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class Main extends MIDlet implements Runnable {
    Display display = null;
    Screen screen;
    Thread thr;

    protected void startApp()
            throws MIDletStateChangeException {
        screen = new Screen();
        thr = new Thread(this);
        display = Display.getDisplay(this);
        display.setCurrent(screen);
        thr.start();
    }

    protected void pauseApp() {
        screen.str = "paused";
    }

    protected void destroyApp(boolean b)
            throws MIDletStateChangeException {

    }

    public void run() {
        Thread currentThr = Thread.currentThread();
        while(currentThr == thr)
        {
            try {
                screen.repaint();
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
class Screen extends Canvas {
    public String str = "notPaused";
    int count = 0;
    protected void paint(Graphics graphics) {
        graphics.setColor(0xFFFFFF);
        graphics.fillRect(0, 0, getWidth(), getHeight());

        graphics.setColor(0x0);
        graphics.drawString(str + ", " + count, 0, 0, Graphics.TOP | Graphics.LEFT);
        count++;
    }
}

ЗЫ: зарание благодарю


--------------------
PM MAIL ICQ   Вверх
Dancer
Дата 12.4.2006, 17:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



просто когда ты заново после того как поговорил открываешь приложение, то у тебя вызывается твой startApp() там ты делаешь новый screen (идея понятна? ну, сделай просто флаг глобальный, boolean paused=false; в startApp() if(!paused){твой код из startApp()} else {paused = false;} а в pauseApp(){ paused = true;})

Это сообщение отредактировал(а) Dancer - 12.4.2006, 17:23


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Jlekc
Дата 12.4.2006, 17:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



Цитата(Dancer @ 12.4.2006, 17:21)
просто когда ты заново после того как поговорил открываешь приложение, то у тебя вызывается твой startApp() там ты делаешь новый screen (идея понятна?

новый, хмм
у меня в в screen идет счетчик, есе бы он создавался заново - счетчик обнулялся, а этого не происходит.

Есе в startApp засунуть койта print, то он отрабатывает тока один раз.


--------------------
PM MAIL ICQ   Вверх
Nemesis
Дата 12.4.2006, 17:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 3
Всего: 5



Перекрытие канвасовского экрана можно также отловить методом protected void hideNotify(), а его показ
protected void showNotify().
--------------------
PM MAIL   Вверх
Dancer
Дата 12.4.2006, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



Код

import javax.microedition.lcdui.Display;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;

public class PauseApp extends MIDlet implements Runnable {
    Display display = null;
    Screen screen;
    Thread thr;
    private boolean paused = false;

    protected void startApp()
            throws MIDletStateChangeException {
        if(!paused) {
            screen = new Screen();
            thr = new Thread(this);
            thr.start();
        }
        paused = false;
        display = Display.getDisplay(this);
        display.setCurrent(screen);
    }

    protected void pauseApp() {
        screen.str = "paused";
        paused = true;
    }

    protected void destroyApp(boolean b)
            throws MIDletStateChangeException {

    }

    public void run() {
        Thread currentThr = Thread.currentThread();
        while(currentThr == thr)
        {
            try {
                screen.repaint();
                Thread.sleep(100);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
class Screen extends Canvas {
    public String str = "notPaused";
    int count = 0;
    protected void paint(Graphics graphics) {
        graphics.setColor(0xFFFFFF);
        graphics.fillRect(0, 0, getWidth(), getHeight());

        graphics.setColor(0x0);
        graphics.drawString(str + ", " + count, 0, 0, Graphics.TOP | Graphics.LEFT);
        count++;
    }
}


100% рабочий код. Проверянно на Motorola c380
Добавлено @ 17:54
Да, ты ещё скажи на какой аппарат пробуешь, кажется у Нокия с паузой были какие-то проблемы, но могу ошибаться


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Jlekc
Дата 12.4.2006, 18:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



2Nemesis hide/show как понимаю срабатывают на передачу дисплея канвасу.
Это не совсем то что нуна. Событие сработает есе у меня в игре несколько канвасов, и я делаю переходы между ними.
Ставить флаги мона, но кумарно.


2Dancer глобальный флаг, хмм. А не проше это засунуть в конструктор? Но все равно, до повторного вызова startApp() дело не доходит. Похоже насчет Нокии ты не ощибаешся((.

ЗЫ: Тада уточняю задачу, как перехватить паузу под Нокией?


--------------------
PM MAIL ICQ   Вверх
Dancer
Дата 12.4.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 537
Регистрация: 29.4.2005
Где: Nizhniy Novgorod

Репутация: 33
Всего: 37



http://www.forum.nokia.com/info/sw.nokia.c...1_2_en.pdf.html
в этом документе есть раздел Pausing a MIDlet (думаю, будет интересно smile )


--------------------
У программистов есть великая тайна: всё, что только можно, было давно кем-то когда-то написано. Разработчику только нужно знать в какое место кода какие строчки вставить! smile
PM MAIL   Вверх
Jlekc
Дата 12.4.2006, 19:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 520
Регистрация: 10.2.2005
Где: Leopolis

Репутация: нет
Всего: 4



хмм, тип Нокия впереди планеты всей, и плевать она хтела на MIDP спецификацию


--------------------
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0807 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.