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)

ViNT 16.07.2008 16:24

Ответ: Пишем либы для MidletPascal на JAVA
 
По первому вопросу: из-за одинаковых переменных точно не может быть, чтобы понять в чем дело, нужен код библиотек и код на MP. По второму - массив передать нельзя, можно сделать так, чтобы массив с определенным именем создавался в программе, а библиотека напрямую читала данные из него. В java массивы создаются так:
PHP код:

public static String mass[]=null;

.....

mass=new String[10];//10-число элементов, нумерация с 0. 


Phantom 16.07.2008 16:44

Ответ: Пишем либы для MidletPascal на JAVA
 
А джава умеет увеличивать размер массива по ходу ввыполнения программы? Ну, например, я выделил 10 ячеек, а мне потом 11 понадобилось? На сколько я знаю, так нельзя ни в Джава, ни в С++... Почему такая недоработка языков?
Цитата:

mass=new String[10];//10-число элементов, нумерация с 0.
Это значит, что я буду иметь 10 ячеек: с mass[0] по mass[9] ИЛИ я буду иметь 11 ячеек с mass[0] по mass[10]?
А добавлять в массив значение обязательно с указанием индекса?
Или можно так: mass[]="Привет";
А ещё я читал, что массиввы в Джава памяти много кушают оперативной.
Какой размер массивва считается приемлемым, а какой перебором?
Ну вот, например, я хочу держать в памяти массив из 100 строковых ячеек, в каждой строка около 40 символов. Это нормально?
- - -
Извиняюсь, что осыпаю вопросами, но просто больше негде спрашивать.
Вот предположим мне нужно сделать такой эффект:
На экране что-то нарисовано. Нужно как бы наложить серую плёнку на весь экран. То есть выглядеть это будет, словно экран потемнел, потускнел типа =)
А потом взять и вернуть экран в предыдущее состояние. Видел подобный эффект в некоторых играх. Как это сделать - я даже не знаю с какой стороны подойти. В теории есть некоторые мысли. Скопировать в некий буфер (например в массив aarrggbb) каким-нибудь образом весь экран, потом пересчитать каждый пиксел в потускневший вид и вывести на экран. Потом вывести из буфера первоначальный вид экрана.
Есть другая мысль, без пересчёта пикселов вручную. Просто залить весь экран серым цветом с альфа-прозрачностью. Но его перед этим разумеется копировать, чтобы потом опять восстановить.
Так вот. Стоит ли вообще это всё делать? Возможно вся эта операция будет на столько медленной, что мой сименс, к примеру, будет 10 секунд эту "пелену" накладывать. О_о
- - -
Блин, где можно исходников на Джава найти? Побольше бы. Того глядишь, я сам разбираться буду потихоньку =)
= = =
Добавил позже:
Нашёл инфу по drawRGB()... Заюзал... Сделал типа тест...
Мой сименс показал 1 fps :'( То есть он успевает только одно перекрытие пеленой в секунду сделать. То есть собственно сама операция и длится секунду... Это очень плохо...

ViNT 16.07.2008 21:09

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

Сообщение от Phantom_wc (Сообщение 82385)
А джава умеет увеличивать размер массива по ходу ввыполнения программы? Ну, например, я выделил 10 ячеек, а мне потом 11 понадобилось? На сколько я знаю, так нельзя ни в Джава, ни в С++... Почему такая недоработка языков?

Похоже никак нельзя, хотя, как вариант - переписать данные в другой массив, и пересоздать его заново с новым размером.

Цитата:

Сообщение от Phantom_wc (Сообщение 82385)
Это значит, что я буду иметь 10 ячеек: с mass[0] по mass[9] ИЛИ я буду иметь 11 ячеек с mass[0] по mass[10]?

10 ячеек c mass[0] по mass[9]

Цитата:

Сообщение от Phantom_wc (Сообщение 82385)
А добавлять в массив значение обязательно с указанием индекса?

Только по индексу.

Цитата:

Сообщение от Phantom_wc (Сообщение 82385)
А ещё я читал, что массиввы в Джава памяти много кушают оперативной.
Какой размер массивва считается приемлемым, а какой перебором?
Ну вот, например, я хочу держать в памяти массив из 100 строковых ячеек, в каждой строка около 40 символов. Это нормально?

Берешь LIb_memory и смотришь, сколько оперативки есть, сколько ест прога без массива, сколько ест с массиво, сколько остается, и смотришь, приемлемо это или нет.

Цитата:

Сообщение от Phantom_wc (Сообщение 82385)
- - -
Извиняюсь, что осыпаю вопросами, но просто больше негде спрашивать.
Вот предположим мне нужно сделать такой эффект:
На экране что-то нарисовано. Нужно как бы наложить серую плёнку на весь экран. То есть выглядеть это будет, словно экран потемнел, потускнел типа =)
А потом взять и вернуть экран в предыдущее состояние. Видел подобный эффект в некоторых играх. Как это сделать - я даже не знаю с какой стороны подойти. В теории есть некоторые мысли. Скопировать в некий буфер (например в массив aarrggbb) каким-нибудь образом весь экран, потом пересчитать каждый пиксел в потускневший вид и вывести на экран. Потом вывести из буфера первоначальный вид экрана.
Есть другая мысль, без пересчёта пикселов вручную. Просто залить весь экран серым цветом с альфа-прозрачностью. Но его перед этим разумеется копировать, чтобы потом опять восстановить.
Так вот. Стоит ли вообще это всё делать? Возможно вся эта операция будет на столько медленной, что мой сименс, к примеру, будет 10 секунд эту "пелену" накладывать. О_о
- - -

А просто. В PhotoShop'е делаешь изображение пленки(серый прямоугольник с нужной альфой), и в нужный момент просто выводишь его поверх сцены с помощью DrawImage. Это самый быстрый вариант.


Цитата:

Сообщение от Phantom_wc (Сообщение 82385)
Блин, где можно исходников на Джава найти? Побольше бы. Того глядишь, я сам разбираться буду потихоньку =)
= = =

Искать надо, сайтов с исходниками очень много. Но лучше брать не только исходники, но и хороший самоучитель - там вся объектная модель расписана, стандартные классы и все такое. Ну и доки из WTK читать, естесно.

Piligrim 16.07.2008 22:17

Ответ: Пишем либы для MidletPascal на JAVA
 
в Java есть еще понятие вектора, это безразмерный массив, грубо говоря, но и скорость его работы в разы ниже.

Phantom 17.07.2008 01:49

Ответ: Пишем либы для MidletPascal на JAVA
 
Я читал немного про вектор, и в классе мультистрочном он используется. Но я больно-то не вдавался в его работу пока.

Phantom 17.07.2008 23:09

Ответ: Пишем либы для MidletPascal на JAVA
 
А аналог delay() какой в Джаве? Читал что-то про таймер, но больно он заумный какой-то...

ViNT 18.07.2008 01:59

Ответ: Пишем либы для MidletPascal на JAVA
 
Аналога delay как такового нет, MP запускает код в потоке (Thread), а Delay - это вызов Thread.sleep.

Phantom 18.07.2008 14:48

Ответ: Пишем либы для MidletPascal на JAVA
 
Поставил я НетБеанс... И как там j2me проект создать? О_о что-то я не пойму...

odd 19.07.2008 08:13

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

Сообщение от Phantom_wc (Сообщение 82520)
Поставил я НетБеанс... И как там j2me проект создать? О_о что-то я не пойму...

Выбираешь File --> New Project.
В визарде проектов выбираешь Mobility --> MIDP Application (если хочешь написать программку) или Mobile Class Library (если библиотеку функций).
Набираешь имя проекта и всё.
Теперь чтобы добавить Java файл в проект нажимаешь в левом окне Project по своему проекту правой кнопкой мыши и выбираешь New --> Java Class. Пишешь имя класса, потом компилишь. Всё просто.

Может такое быть, что у тебя модуль плагинов Mobility не установлен. Зайди в Tools --> Plugins и убедись, что данный модуль есть и он подключен. Если нету - загрузи его.

Phantom 19.07.2008 19:00

Ответ: Пишем либы для MidletPascal на JAVA
 
Так и есть: нет у меня этого модуля. Зашёл в плагины, там есть список всякой всячины, можно напротив каждой галочку поставить, а внизу кнопка Инсталл... Так вот, там куча всяких мобилитей. Какую именно инсталлить? Пока ставлю просто "мобилити", посмотрим, может прокатит =)
- - -
Чуть позже:
Поставил, появилось мобилити в создании проекта. Нажимаю next и мне выдаёт вот это: http://wapcode.ru/O_o.png (9 Kb)
Это что? У меня всякие jdk, jre, wtk - всё установлено. Чё ему ещё-то нужно?
- - -
Гораздо позже:
Ыы... Там просто нажал кнопачку, там указал папку с WTK и всё работает вроде... Пойду Хэллоу ворлд писать =)
- - -
Блин...
Не работает мой Хэллоу ворлд... Ну это ладно, разберусь. Скажите мне, какую структуру программы лучше делать? В главном классе лучше только объявить
startApp()
pauseApp()
destroyApp()
, а всё остальное писать в отдельном классе/классах. Так удобнее или нет? Как вообще делают?

ViNT 19.07.2008 22:14

Ответ: Пишем либы для MidletPascal на JAVA
 
В любом случае, Canvas, формы и все прочее нужно делать отдельными классами.

Phantom 19.07.2008 22:33

Ответ: Пишем либы для MidletPascal на JAVA
 
:blink: :blink: :blink: Чё, реально что ли? Блин, почему всё так сложно??? Я вообще не могу понять структуру джава программ...

ViNT 19.07.2008 22:47

Ответ: Пишем либы для MidletPascal на JAVA
 
Поковыряйся декомпилятором в бинарниках MP, может что-то прояснится(я java так изучать начинал =) ). А вообще, советую купить хороший самоучитель.

Phantom 19.07.2008 23:19

Ответ: Пишем либы для MidletPascal на JAVA
 
У меня есть книжки Пирумяна и Горнакова. В электронном виде. Пирумяна я вообще не понимаю, а Горнакова ооочень немного =) А английский я почти не знаю. Если читать описание функций - это ещё ладно, как-нибудь соображу, но если учиться по английским учебникам - это для меня нереально.
- - -
А классы мидлетпаскалевские всегда байт в байт одинаковые? Кроме M.class. Ну, например, FW, P, S...

ViNT 19.07.2008 23:40

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

Сообщение от Phantom_wc (Сообщение 82632)
А классы мидлетпаскалевские всегда байт в байт одинаковые? Кроме M.class. Ну, например, FW, P, S...

На счет FW сказать не могу, а остальные по-моему всегда одинаковые.


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

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