forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   FAQ (http://forum.boolean.name/forumdisplay.php?f=48)
-   -   Пишем либы для MidletPascal на JAVA (http://forum.boolean.name/showthread.php?t=440)

Phantom 19.07.2008 23:59

Ответ: Пишем либы для MidletPascal на JAVA
 
А я как раз заметил, что FW всегда одинаковый... Во всех проектах =) Вроде...
- - -
PHP код:

public void destroyApp(boolean flag){
   
null;
   
M.null;
   
M.null;
   
CD null;
   
null;
   
TB null;
   
null;
   
null;
   
fw null;
   
LC null;
   
notifyDestroyed();
 } 

Скажите мне, нафига он это делает? Ведь дестрой происходит при выходе из приложения вроде как. А не пофиг ли уже джава машине, если уже прогу закрывать надо? Она сама потом и оперативу почистит и всё в порядок приведёт...
- - -
PHP код:

public class extends Canvas
    
implements Runnable

Что обозначает implements Runnable? Если написано extends, то это, на сколько я знаю, наследование, а implements - это что?

Piligrim 20.07.2008 11:51

Ответ: Пишем либы для MidletPascal на JAVA
 
implements появляется если класс включает в себя какой-то interface
С их помощью удобно делать callback и т.д.
ЗЫ: Давайте уж такие серьезные вопросы по яве задавать в соответствующей теме. Уж это к написанию библиотек имеет косвенное значение.

Phantom 26.07.2008 19:49

Ответ: Пишем либы для MidletPascal на JAVA
 
Тут писали, что размер дисплея получается так:
PHP код:

FW.CD.getWidth;  
FW.CD.getHeight

Не работает:
Код:

cannot find symbol
symbol  : variable getHeight
location: class javax.microedition.lcdui.Displayable
h=FW.CD.getHeight-y*2;
      ^

- - -
Добавил позже:
Долго же я сам до истины допирал =) Оказывается, надо писать так:
PHP код:

FW.CD.getWidth();   
FW.CD.getHeight(); 

Со скобочками.
- - -
What eto da...
Взгляните сюда. Написал либу. Класс содержит два метода. Первый - init - Высчитывает по специальной формуле размер окошка и создаёт два полупрозрачных чёрных объекта типа Image (рисунка, грубо говоря). Второй - frame - Рисует эти полупрозрачные рисунки на канвасе в четырёх местах таким образом, что получается как бы полупрозрачная рамка.
PHP код:

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 - нет. Кто подскажет, в чём дело? Ничего не зависает, просто рамочка не рисуется, мидлет дальше без неё выполняется...

Piligrim 27.07.2008 11:39

Ответ: Пишем либы для MidletPascal на JAVA
 
Цитата:

public static Graphics g=M.G;
public static Displayable d=FW.CD;
я бы так не делал. static отрабатывает при запуске программы, когда эти переменные еще не имеют значений. Перенеси в init

Phantom 27.07.2008 15:56

Ответ: Пишем либы для MidletPascal на JAVA
 
Переделал. Ничего не изменилось. В эмуляторе работает, в телефоне нет. Сделал так:
Запускается мидлет, проверяется память, вызывается init, проверяется память, загружается и рисуется картинка, проверяется память, вызывается frame, проверяется память. Так вот.
1) при запуске задействовано 17% памяти
2) после вызова init - 19%
3) после рисования картинки - 23%
4) после вызова frame - 26%
- - -
Проверил на Nokia N72:
Работает как надо... С полупрозрачностью раньше уже играл, на сименсе она работает, но в данном случае не хочет... :'(

ViNT 28.07.2008 02:56

Ответ: Пишем либы для MidletPascal на JAVA
 
PHP код:

WM.l.getWidth();
H=M.l.getHeight(); 

должно сработать.

Phantom 28.07.2008 03:37

Ответ: Пишем либы для MidletPascal на JAVA
 
Так эту проблему я решил, выше написано, в том же посте =) Но с сименсом ничего так и не могу поделать, не выводит он на экран рамку =(

KASPER 19.10.2008 19:18

Ответ: Пишем либы для MidletPascal на JAVA
 
А где скачать прогу JGRASP?

temned 09.01.2009 20:13

Ответ: Пишем либы для MidletPascal на JAVA
 
http://spider.eng.auburn.edu/user-cg...ad_jgrasp.html

temned 24.01.2009 20:15

Ответ: Пишем либы для MidletPascal на JAVA
 
Парни проблема: Я компилирую либы с помощью JCreator. Пытаюсь компильнуть первый пример odda-там где текст. Куда надо кинуть m.class? И какой? Это тот который мона выдернуть из любого мидлета MP? Не компилируется-2errors(package javax.microedition.lcdui does not exist; package M does not exist)

temned 24.01.2009 22:05

Ответ: Пишем либы для MidletPascal на JAVA
 
У мя установлено
J2ME Wireless Toolkit 2.2
jdk-1_5_0_16
jgrasp
JCreator 4.50 Pro
Короче, шо надо добавлять(я не знаю-M.class иль F.java иль ешо што-нить), штоб компилировалось
компилировались проекты с использованием MP классов?

Piligrim 25.01.2009 00:00

Ответ: Пишем либы для 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

temned 25.01.2009 14:23

Ответ: Пишем либы для MidletPascal на JAVA
 
pilgrim, сорри за флуд. Просто я не понял. Я не понимаю в bat файлах. как создавать, где писать, што писать. Если мона еще раз поподробнее, или обьясни без БАТ файлов, типа куда шо-кинуть, например ерез jcreator, создается папка, в папке есть папвка src-где лежит мой java. Обьяните, я просто начинаю в этом деле.
Цитата:

А как компилить либы с использованием MP классов? Скажем, я хочу обратитьься к M.G. компилятор ругается на отсутствие этих классов, может надо прилагать M.java к файлу библиотеки? Опишите plz такую компиляцию, а то я чисто java классы могу использовать, а к классам MP нет доступа.

Piligrim 25.01.2009 17:40

Ответ: Пишем либы для MidletPascal на JAVA
 
Вложений: 1
bat файлы - это простые текстовые файлы с командами. Создать можно любом текстовом редакторе. Выполняются простым двойным кликом в эксплорере или TotalCommander.
Во вложении, исходники FW и M классов. Просто кладем их в папку src и ваша библиотека при компиляции их увидит. Аналогично поступаем с любыми другими системными классами. Декомпилятор тоже есть во вложении.
При использовании jcreator поступаем аналогично. Исходники кладем в папку src. По идее нужно еще вызывать preverify после компиляции для проверки корректности классов. Как это сделать в jcreator не знаю, сам пользуюсь NetBeans.

temned 25.01.2009 19:53

Ответ: Пишем либы для 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


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

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