| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Java ME (J2ME) > картинка на эмуляторе грузится а на телефоне нет? |
| Автор: Yugine 12.3.2006, 13:15 |
| Эмулятор картинку грузит, а телефон нет. (телефон у меня Siemens CX70)? гружу картинку так: Image I1; //........ try { I1 = Image.createImage("/1.png"); } catch (IOException ioe){} пользуюсь Wirelles Toolkit 2.0 в WTK картинка лежит в папке res если открываь jar архив, то она лежит сразу там, никуда не вложена. |
| Автор: W0LF 12.3.2006, 16:47 |
| а что значит "грузит"? добавь в блок catch вывод на экран какого-нидь сообщения типа "can't load picture '1.png' ". Может картинка загружается, а при отображении какие-нидь проблемы возникают. |
| Автор: Yugine 13.3.2006, 01:09 |
| я так и делал. добавлял сообщение. на эмуляторе норм. а на телефоне оно вылазит |
| Автор: Dancer 13.3.2006, 13:32 | ||
а так пробовал?
|
| Автор: W0LF 13.3.2006, 22:14 | ||
Так правильнее Но вряд ли это поможет. Он не может найти файл. А как его считать, то уже другое дело. |
| Автор: Nemesis 14.3.2006, 03:33 |
| Yugine приведи весь код, мало ли что написал... и каких размеров картинка вообще? |
| Автор: Yugine 14.3.2006, 20:41 |
| вот такой у меня код, проверки и т.п. я оттуда убрал, ну и переписал, как мне Dancer посоветовал: import javax. microedition.lcdui.Canvas; import javax. microedition.lcdui.Command; import javax. microedition.lcdui.CommandListener; import javax. microedition.lcdui.Display; import javax. microedition.lcdui.Displayable; import javax. microedition.lcdui.Graphics; import javax. microedition.lcdui.Image; import javax.microedition.midlet.MIDlet; import javax.microedition.lcdui.game.*; import java.io.IOException; import java.io.*; public class TryCanvas extends MIDlet{ MyCanvas C1; public static TryCanvas midlet; InputStream input = getClass().getResourceAsStream("/bear.png"); Image I1; Display d; public TryCanvas(){super(); midlet=this;} public void destroyApp(boolean destroy) { C1 = null; notifyDestroyed(); } public void pauseApp(){} public void startApp(){ C1 = new MyCanvas(); try { I1 = Image.createImage(input); } catch (IOException ioe){} d=Display.getDisplay(this); d.setCurrent(C1); } } class MyCanvas extends Canvas implements CommandListener{ int width; int height; Command exit = new Command("exit", Command.EXIT,1); int x; public MyCanvas(){ super(); width=getWidth(); height=getHeight(); addCommand(exit); setCommandListener(this); } public void paint (Graphics g){ int cx = g.getClipX(); int cy = g.getClipY(); int ch = g.getClipHeight(); int cw = g.getClipWidth(); int color = g.getColor(); g.setColor(58, 162, 211); g.fillRect(cx, cy, cw, ch); //g.setColor(253, 251, 118); g.drawImage(TryCanvas.midlet.I1, 0, 0, Graphics.TOP | Graphics.LEFT); } public void commandAction (Command c, Displayable d){ if (c==exit){TryCanvas.midlet.destroyApp(true);} } } картинка в формате png имеет размер 30x90 точек |
| Автор: Nemesis 15.3.2006, 01:34 |
| Понимаешь в чем может быть дело, ведь когда ты загружаешь изображение в image, то код дальше исполняется, и получается так, что ты вызываешь дальше d=Display.getDisplay(this);, а потом d.setCurrent(C1);. Когда происходит вызов d.setCurrent(C1);, тогда и происходит вызов метода paint (1 раз, потом просто идет простОй мидлета), который пытается вывести изображение, еще полностю не загрузившееся (это на эмуляторе картинки почти влет грузятся,а на телефоне все по-другому несколько). Это первое что бросилось мне в глаза. Могу посоветовать вынести процедуру загрузки картинки в конструктор TryCanvas(), но честно говоря несколько необычная структура программы, не в обиду будет сказано. Скажи, а заливка срабатывает? g.setColor(58, 162, 211); g.fillRect(cx, cy, cw, ch); |
| Автор: javastic 15.3.2006, 14:39 | ||
Yugine,
Положи картинку в папку с сырцами, не клади в res, и первый вариант у тебя заработает. Ты случаем не перенёс проект из WTK в некое IDE (или наоборот)? Размер картинки какой? |
| Автор: Yugine 16.3.2006, 22:10 |
| картинку я положил уже везде и в паку с ресурсами и с исходником. когда я делаю так как советовал dancer, у меня срабатывает NullPointer exception когда делаю так как я написал в первом случае, тогда просто не загружается картинка. to Nemesis: заливка срабатывает. загрузку изображения я поместил в конструктор канваса - не помогло. может у кого-нить есть телефон siemens и уже писали для него чего-нибудь - киньте пожалуйста рабочий исходник или дайте ссылку |
| Автор: javastic 17.3.2006, 12:54 |
| Yugine, скачай пример по этой ссылке http://vitalich.com/j2me/examples/Imager.rar и положи его в папку apps своего WTK, заупусти, а потом сообщи нам, отобразилась картинка или нет. Пример рабочий. |
| Автор: Yugine 18.3.2006, 17:22 |
| Спасибо огромнейшее, проблема была в том, что у картинки расширение .PNG, а я написал маленькими png. |
| Автор: W0LF 18.3.2006, 19:54 |
| странно как-то... у меня была такая же проблема, но наоборот. нужно было использовать нижний регистр для расширения... |