|
FAQ Часто задаваемые вопросы |
19.07.2008, 23:59
|
#76
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
А я как раз заметил, что FW всегда одинаковый... Во всех проектах =) Вроде...
- - -
public void destroyApp(boolean flag){ m = null; M.I = null; M.G = null; CD = null; F = null; TB = null; A = null; L = null; fw = null; LC = null; notifyDestroyed(); }
Скажите мне, нафига он это делает? Ведь дестрой происходит при выходе из приложения вроде как. А не пофиг ли уже джава машине, если уже прогу закрывать надо? Она сама потом и оперативу почистит и всё в порядок приведёт...
- - -
public class M extends Canvas implements Runnable{
Что обозначает implements Runnable? Если написано extends, то это, на сколько я знаю, наследование, а implements - это что?
Последний раз редактировалось Phantom, 20.07.2008 в 00:57.
|
(Offline)
|
|
20.07.2008, 11:51
|
#77
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
implements появляется если класс включает в себя какой-то interface
С их помощью удобно делать callback и т.д.
ЗЫ: Давайте уж такие серьезные вопросы по яве задавать в соответствующей теме. Уж это к написанию библиотек имеет косвенное значение.
|
(Offline)
|
|
26.07.2008, 19:49
|
#78
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Тут писали, что размер дисплея получается так:
w = FW.CD.getWidth; h = FW.CD.getHeight;
Не работает:
cannot find symbol
symbol : variable getHeight
location: class javax.microedition.lcdui.Displayable
h=FW.CD.getHeight-y*2;
^
- - -
Добавил позже:
Долго же я сам до истины допирал =) Оказывается, надо писать так:
w = FW.CD.getWidth(); h = FW.CD.getHeight();
Со скобочками.
- - -
What eto da...
Взгляните сюда. Написал либу. Класс содержит два метода. Первый - init - Высчитывает по специальной формуле размер окошка и создаёт два полупрозрачных чёрных объекта типа Image (рисунка, грубо говоря). Второй - frame - Рисует эти полупрозрачные рисунки на канвасе в четырёх местах таким образом, что получается как бы полупрозрачная рамка.
import javax.microedition.lcdui.*; public class Lib_ramka{ // *********************************** public static int x,y,w,h; public static Image a1,a2,bg; public static Graphics g=M.G; public static Displayable d=FW.CD; // *********************************** public static void init(){ x=(d.getWidth()*6)/100; w=d.getWidth()-x*2; y=(d.getHeight()-(w*86)/100)/2; if(y<x)y=x; h=d.getHeight()-y*2; int p[]=null; p=new int[x*d.getHeight()]; for(int i=0;i<p.length;i++) p[i]=0xbb000000; a1=Image.createRGBImage(p,x,d.getHeight(),true); p=new int[w*y]; for(int i=0;i<p.length;i++) p[i]=0xbb000000; a2=Image.createRGBImage(p,w,y,true); } // *********************************** public static void frame(){ g.drawImage(a1,0,0,g.LEFT|g.TOP); g.drawImage(a1,d.getWidth(),0,g.RIGHT|g.TOP); g.drawImage(a2,x,0,g.LEFT|g.TOP); g.drawImage(a2,x,d.getHeight(),g.LEFT|g.BOTTOM); } // *********************************** }
В эмуляторе работает. На моём сименсе С75 - нет. Кто подскажет, в чём дело? Ничего не зависает, просто рамочка не рисуется, мидлет дальше без неё выполняется...
Последний раз редактировалось Phantom, 27.07.2008 в 01:01.
|
(Offline)
|
|
27.07.2008, 11:39
|
#79
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
public static Graphics g=M.G;
public static Displayable d=FW.CD;
|
я бы так не делал. static отрабатывает при запуске программы, когда эти переменные еще не имеют значений. Перенеси в init
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
27.07.2008, 15:56
|
#80
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Переделал. Ничего не изменилось. В эмуляторе работает, в телефоне нет. Сделал так:
Запускается мидлет, проверяется память, вызывается init, проверяется память, загружается и рисуется картинка, проверяется память, вызывается frame, проверяется память. Так вот.
1) при запуске задействовано 17% памяти
2) после вызова init - 19%
3) после рисования картинки - 23%
4) после вызова frame - 26%
- - -
Проверил на Nokia N72:
Работает как надо... С полупрозрачностью раньше уже играл, на сименсе она работает, но в данном случае не хочет... :'(
Последний раз редактировалось Phantom, 27.07.2008 в 16:26.
|
(Offline)
|
|
28.07.2008, 02:56
|
#81
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
W= M.l.getWidth(); H=M.l.getHeight();
должно сработать.
|
(Offline)
|
|
28.07.2008, 03:37
|
#82
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Так эту проблему я решил, выше написано, в том же посте =) Но с сименсом ничего так и не могу поделать, не выводит он на экран рамку =(
|
(Offline)
|
|
19.10.2008, 19:18
|
#83
|
AnyKey`щик
Регистрация: 19.10.2008
Адрес: Краснодар
Сообщений: 2
Написано 0 полезных сообщений (для 0 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
А где скачать прогу JGRASP?
__________________
Век Живи-Век Учись,но серавно дураком памрёшь!
Афтор Коротаев Павел
|
(Offline)
|
|
09.01.2009, 20:13
|
#84
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
24.01.2009, 20:15
|
#85
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Парни проблема: Я компилирую либы с помощью JCreator. Пытаюсь компильнуть первый пример odda-там где текст. Куда надо кинуть m.class? И какой? Это тот который мона выдернуть из любого мидлета MP? Не компилируется-2errors(package javax.microedition.lcdui does not exist; package M does not exist)
|
(Offline)
|
|
24.01.2009, 22:05
|
#86
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
У мя установлено
J2ME Wireless Toolkit 2.2
jdk-1_5_0_16
jgrasp
JCreator 4.50 Pro
Короче, шо надо добавлять(я не знаю-M.class иль F.java иль ешо што-нить), штоб компилировалось
компилировались проекты с использованием MP классов?
|
(Offline)
|
|
25.01.2009, 00:00
|
#87
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
Этого более чем достаточно.
Я пользуюсь вот таким bat файлом
@SET JDK=C:\Program Files\Java\jdk1.6.0_11
@SET WTK=C:\Program Files\NetBeans 6.5\mobility8\WTK2.5.2
@rem @SET SDK=C:\Borland\SDK_5.2.1\EmulatorA.1\lib
@rem del tmpclasses\*.class
@"%JDK%\bin\javac" -bootclasspath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -classpath tmpclasses -source 1.3 -target 1.3 -d tmpclasses src\*.java
@"%WTK%\bin\preverify" -classpath "%WTK%\lib\midpapi20.jar";"%WTK%\lib\cldcapi11.jar";"%WTK%\lib\jsr75.jar";"%WTK%\lib\mmapi.jar";"%WTK%\lib\jsr082.jar";"D:\Java\lib\tinylinegzip.zip";tmpclasses -d D:\java\MIDletPascal\Libs D:\java\MIDletPascal\Libs\Lib\tmpclasses
pause
Пути естественно исправить на свои
Дерево папок у меня такое
MIDletPascal
-Libs
--Lib
---src
---tmpclasses
Соответственно, после компиляции библиотека автоматически попадает в папку Libs МР и ее можно тестировать.
Чтобы компилировать библиотеки работающие с основными классами, декомпилируем их и кладем в папку src
Последний раз редактировалось Piligrim, 25.01.2009 в 00:05.
|
(Offline)
|
|
25.01.2009, 14:23
|
#88
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
pilgrim, сорри за флуд. Просто я не понял. Я не понимаю в bat файлах. как создавать, где писать, што писать. Если мона еще раз поподробнее, или обьясни без БАТ файлов, типа куда шо-кинуть, например ерез jcreator, создается папка, в папке есть папвка src-где лежит мой java. Обьяните, я просто начинаю в этом деле.
А как компилить либы с использованием MP классов? Скажем, я хочу обратитьься к M.G. компилятор ругается на отсутствие этих классов, может надо прилагать M.java к файлу библиотеки? Опишите plz такую компиляцию, а то я чисто java классы могу использовать, а к классам MP нет доступа.
|
|
(Offline)
|
|
25.01.2009, 17:40
|
#89
|
Оптимист
Регистрация: 07.01.2006
Сообщений: 961
Написано 105 полезных сообщений (для 259 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
bat файлы - это простые текстовые файлы с командами. Создать можно любом текстовом редакторе. Выполняются простым двойным кликом в эксплорере или TotalCommander.
Во вложении, исходники FW и M классов. Просто кладем их в папку src и ваша библиотека при компиляции их увидит. Аналогично поступаем с любыми другими системными классами. Декомпилятор тоже есть во вложении.
При использовании jcreator поступаем аналогично. Исходники кладем в папку src. По идее нужно еще вызывать preverify после компиляции для проверки корректности классов. Как это сделать в jcreator не знаю, сам пользуюсь NetBeans.
|
(Offline)
|
|
25.01.2009, 19:53
|
#90
|
Знающий
Регистрация: 29.07.2008
Адрес: Россия,Саратов
Сообщений: 206
Написано 22 полезных сообщений (для 33 пользователей)
|
Ответ: Пишем либы для MidletPascal на JAVA
pilgrim, пробовал и с bat файлом шо-нить сдлелать, и те исходники которые ты дал кинул-не компилируется. Вот Сяс ь у мя пишет такие ошибки: package javax.microedition.lcdui does not exist
cannot access javax.microedition.lcdui.Graphics
Может пример-гове***?
Вот которй я птаюсь скомпилировать
import javax.microedition.lcdui.Graphics;
class Lib_test
{
public static void printtext(String s, int x, int y)
{
M.G.drawString(s, x, y, 20);
}
}
если мона дайте самый простой пример, мона с использованием классов MP
Последний раз редактировалось temned, 25.01.2009 в 20:01.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 10:52.
|