forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   JAVA Micro Edition (http://forum.boolean.name/forumdisplay.php?f=52)
-   -   Hello, World! (http://forum.boolean.name/showthread.php?t=17019)

IDOL 1234 10.07.2012 20:43

Hello, World!
 
Помогите пожалуйста..
Нужна максимально простая заготовка программы, которая делает то же, что и Hello World из MP. Ибо примеры в netbeans какие-то дикие, с неудаляемыми комментариями и прочим бредом >_<

Igor 11.07.2012 00:44

Ответ: Hello, World!
 
Класс midlet
Код:

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;

public class Midlet extends MIDlet {

    public static Canv canv;
    public static Display display;
    public static Midlet md;

    public void startApp() {
        md = this;
        canv = new Canv();
        display = Display.getDisplay(this);
        display.setCurrent(canv);
        (new Thread(canv)).start();
    }

    public void pauseApp() {
    }

    public void destroyApp(boolean unconditional) {
        canv = null;
        notifyDestroyed();
    }
}

класс Canv
Код:

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;

public class Canv extends Canvas implements Runnable {

    protected static Image screen;
    protected static Graphics G;

    public Canv() {
        setFullScreenMode(true);
        screen = Image.createImage(getWidth(), getHeight());
        G = screen.getGraphics();
    }

    protected void paint(Graphics g) {
        g.drawImage(screen, 0, 0, 20);
    }

    public void run() {
        //сюда всякий код
    }
   
    //следующая функция не нужна, я её для удобства после MP добавил
    protected void delay(int t) {
        try {
            Thread.sleep(t);
        } catch (InterruptedException ex) {
        }
    }
}


IDOL 1234 11.07.2012 11:36

Ответ: Hello, World!
 
^_^
Спасибо, а то дико неудобно те танкоподобные примеры разбирать.

IDOL 1234 11.07.2012 17:24

Ответ: Hello, World!
 
Оу. Я туплю. А как "Hello, World" написать?
Что бы я ни делал, экран остаётся чистым.

Igor 12.07.2012 01:21

Ответ: Hello, World!
 
repaint() или типа того

IDOL 1234 12.07.2012 01:22

Ответ: Hello, World!
 
Вроде не получалось, сейчас попробую ещё раз..

IDOL 1234 12.07.2012 01:25

Ответ: Hello, World!
 
PHP код:

public void run() 
{
    
G.fillRect(551010);
    
this.repaint();


ЧЯДНТ?

Igor 12.07.2012 01:26

Ответ: Hello, World!
 
Ты там ничего нарисовать не хочешь?
И да, метод delay неспроста добавлен

IDOL 1234 12.07.2012 01:30

Ответ: Hello, World!
 
Цитата:

Ты там ничего нарисовать не хочешь?
Хочу, хочу :crazy: Только не могу.

IDOL 1234 12.07.2012 01:32

Ответ: Hello, World!
 
Я вообще не уверен, что мидлет стартует, ибо белый экран со стрелочкой "назад".

Жека 27.07.2012 14:14

Ответ: Hello, World!
 
Цитата:

Сообщение от IDOL 1234 (Сообщение 232764)
PHP код:

public void run() 
{
    
G.fillRect(551010);
    
this.repaint();


ЧЯДНТ?

Проблема в G. Нельзя сохранять экземпляр графикса из метода paint НА ВРЕМЯ, ПРЕВЫШАЮЩЕЕ ВЫЗОВ МЕТОДА PAINT(). При завершении паинта этой переменной приходит конец.

Решение: рисуй всё в paint'e, управляй содержимым через состояния проги, которые сам назначишь.
В run'e вызывай repaint(); serviceRepaint();

В паинте необязательно делать месиво из кода, можно создать свои функции рисования (передавать в них экземпляр графикса можно) и вызывать их:
Код:

public void paint(Graphics g) {
  if(state == STATE_GAME) {
    drawMap(g);
    drawGui(g);
  }
}
private void drawMap(Graphics g) {
  //карта
}
private void drawGui(Graphics g) {
  //интерфейс
}



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

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