Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition > Программирование

Программирование Вопросы связанные с программированием в JAVA

Ответ
 
Опции темы
Старый 28.02.2011, 00:15   #1
foldel
Оператор ЭВМ
 
Аватар для foldel
 
Регистрация: 18.11.2010
Сообщений: 23
Написано 0 полезных сообщений
(для 0 пользователей)
Проблема с getGraphics()

В чем ошибка?


import javax.microedition.midlet.*;

public class Midlet extends MIDlet {

public void startApp() {
javax.microedition.lcdui.Display.getDisplay(this). setCurrent(new MIDPCanvas());
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

import javax.microedition.lcdui.*;

public class MIDPCanvas extends Canvas {

public NewClass NC;

public MIDPCanvas() {
NC = new NewClass();
}

public void paint(Graphics g) {
for (int i = 0; i < 255; i++) {
g.drawImage(NC.I, 10, 10, 20);
repaint();
}
}
}

import javax.microedition.lcdui.*;

public class NewClass {

public Image I;

public NewClass() {
try {
I = Image.createImage("/Back.png");
Graphics G = I.getGraphics();/// Ошибка возикает здесь ///
G.setColor(0x00ff00);
G.fillRect(0, 0, 10, 10);
} catch (Exception Ex) {
Ex.printStackTrace();
}
}
}

java.lang.IllegalStateException
at javax.microedition.lcdui.Image.getGraphics(), bci=16
at NewClass.<init>(NewClass.java:11)
at MIDPCanvas.<init>(MIDPCanvas.java:9)
at Midlet.startApp(Midlet.java:7)
at javax.microedition.midlet.MIDletTunnelImpl.callSta rtApp(), bci=1
at com.sun.midp.midlet.MIDletPeer.startApp(), bci=7
at com.sun.midp.midlet.MIDletStateHandler.startSuite( ), bci=269
at com.sun.midp.main.AbstractMIDletSuiteLoader.startS uite(), bci=52
at com.sun.midp.main.CldcMIDletSuiteLoader.startSuite (), bci=8
at com.sun.midp.main.AbstractMIDletSuiteLoader.runMID letSuite(), bci=161
at com.sun.midp.main.AppIsolateMIDletSuiteLoader.main (), bci=26
javacall_lifecycle_state_changed() lifecycle: event is JAVACALL_LIFECYCLE_MIDLET_SHUTDOWNstatus is JAVACALL_OK

NetBeans IDE 6.9
(Offline)
 
Ответить с цитированием
Старый 28.02.2011, 12:00   #2
YellowAfterlife
ПроЭктировщик
 
Аватар для YellowAfterlife
 
Регистрация: 19.02.2011
Сообщений: 134
Написано 81 полезных сообщений
(для 219 пользователей)
Ответ: Проблема с getGraphics()

Первая (логичная) приходящая в голову мысль - файла нет, или он назван не так (Back.png != back.png). Попробуйте вставить следующие две строчки после I = Image...:
System.out.println("Image width: " + I.getWidth());
System.out.println("Image height: " + I.getHeight());
В консоль \ панель вывода должно вывести размеры изображения. Если будет 0, 0 то значит с изображением что-то не так.
__________________

Мой сайт-блог. Игры, обновления, примеры для Haxe, JavaScript(+HTML5), GameMaker, Love2d...
(Offline)
 
Ответить с цитированием
Старый 30.03.2011, 07:26   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Проблема с getGraphics()

foldel, тут дело в том, что нельзя рисовать в "неизменяющиеся" (immutable) картинки. загруженная из файла картинка именно такой и является.
Как быть? Вот:

а. Грузишь свою картинку из файла [img1]
б. Создаёшь новую картинку, с размерами той, которую грузил, через Image.createImage(width, height) [img2]
в. Получаешь Graphics у картинки img2 [gfx]
г. Рисуешь в gfx картинку img1
д. Рисуешь в gfx всё что нужно было нарисовать поверх img1

Замечание: при создании картинки img2 она заливается белым фоном автоматически, поэтому теряется прозрачность, если она была в img1.
Вернуть её можно, пробежав по всем пикселям картинки img2 и заменив точки с цветом фона на точки с цветом 0.
Пиксели можно получить через img2.getRGB(), а заново картинку создать через Image.createRGBImage().
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Aarrgghh (03.10.2011)
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


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


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com