4.02.2011 / 13:43 | |
LPzhelud Пользователь Сейчас: Offline
Имя: Коля Откуда: Москва Регистрация: 02.06.2010
| Zvers, После того, как на объект теряется ссылка, он считается мусором. Следовательно твое предложение даже хуже, чем первое, динамическое
__________________
Эль Презеденте |
6.02.2011 / 11:24 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| Нашел очень хорошую статью про оптимизацию J2ME приложений. __________________
let live |
6.02.2011 / 11:29 | |
kiriman Пользователь Сейчас: Offline
Имя: Кирилл Откуда: Красноярск Регистрация: 18.01.2010
| aNNiMON (06.02.2011/11:24) Нашел очень хорошую статью про оптимизацию J2ME приложений.aNNiMON [i] [16.01.11 17:53] * - Не перестараться, а то прога будет маленькой и глючной) [ответить] [жалоба] [удалить] У мя эти статьи в пдф были. Они с какой-то конференции. |
6.02.2011 / 13:49 | |
Zvers Пользователь Сейчас: Offline
Регистрация: 06.02.2010
| ух ты спасибо! +
|
7.02.2011 / 00:13 | |
dzanis Пользователь Сейчас: Offline
Имя: Жаник Откуда: Rezekne Регистрация: 18.11.2010
| Я вот нашол сколько ставить паузу в игре. Тестируя на эмуляторе ставлю Thread.sleep(20),результат хороший,но у меня на реальном телефоне это слишком медленно... а у когото на мошьном мобильнике всё слишком быстро двигается и играть невозможно. Вот моё решение как контролировать fps. final long MAX_FPS = 25;//это максимальный fps
final long MAX = 1000/MAX_FPS;
// цикл
public void run() {
while (true) {
long begin=System.currentTimeMillis();
//...
// бла-бла ... всякий код и прорисовка ...
//...
long delay = System.currentTimeMillis() - begin;
try {
Thread.currentThread().sleep( delay > MAX ? 0 : MAX - delay ) ;
} catch (InterruptedException e) {}
}
}
|
23.11.2011 / 21:19 | |
Alsawin Пользователь Сейчас: Offline
Откуда: Минск Регистрация: 05.09.2011
| |
11.02.2012 / 19:12 | |
nitsu Пользователь Сейчас: Offline
Имя: Виктор Откуда: Севастополь Регистрация: 03.05.2011
| Бывает к примеру, когда во время игры вам позвонили или пришло смс. То когда вы возвращаетесь в игру если ее написал непрофессиональный программист, то она начинается с нуля. Я расскажу вам как сделать фильтр, чтобы после того как вы ответили/завершили вызов мидлет продолжился. Главный класс midlet имеет 3 метода : startApp, pauseApp и destroyApp. Когда вам позвонили автоматически вызывается метод pauseApp, когда вы закончили то снова startApp. Но если у вас в startApp написано например: canvas canvas = new canvas(); display.setCurrent(canvas); то если после паузы заново вызовется startApp то canvas создастся 2 раз и его текущее состояние аннулируется. По этому мы: инициализируем булеан например private boolean fc = false; и в методе startApp ставим фильтр:
public static startApp(); { if (!fc) { canvas canvas = new canvas(); fc = true; } display.setCurrent(canvas); }
теперь если приложение запустится 1 раз то поставит fc на true а если этот метод запустится 2 раз то если параметр fc будет true то метод просто передаст управление canvas и он дальше будет продолжать работать. вроде все
|
11.02.2012 / 20:31 | |
aNNiMON Супервизор Сейчас: Offline
Имя: Витёк Регистрация: 11.01.2010
| nitsu, так вот оно что... А я всё ломал голову, почему на Nokia такие проблемы. Предлагаю два варианта: private Canv canv;
public void startApp() {
if (canv == null) {
canv = new Canv();
}
display.setCurrent(canv);
}
private Canv canv;
public Main() {
canv = new Canv();
}
public void startApp() {
display.setCurrent(canv);
}
__________________
let live |
11.02.2012 / 20:54 | |
Salat-Cx65 Пользователь Сейчас: Offline
Имя: Сергей Откуда: Кременчуг Регистрация: 23.03.2010
| Не только Нокиа. Последние Семены, Флай. Это с чем сам сталкивался
|
11.02.2012 / 20:57 | |
AlexeyW Пользователь Сейчас: Offline
Имя: Алексей Откуда: Волгоград Регистрация: 05.06.2010
| Маленькое исправление (из личного опыты): public void startApp() {
if(canvas == null) {
canvas = new Canvas();
Display.getDisplay(this).setCurrent(canvas);
}
}
Метод setCurrent(canvas) достаточно вызвать в startApp() один раз. При сворачивании приложения текущий Displayable некуда не улетучивается. Он как был в памяти приложения на экране, так там и остался. Если только в методах pauseApp() или destroyApp() будет смена текущего кьюрента, тогда надо будет выводить каждый раз canvas при вызове startApp()'а. |