Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> одновременное рисование неизвестного, количества фигур в peint() 
:(
    Опции темы
Рамирос
Дата 16.2.2010, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 4.2.2010

Репутация: -2
Всего: -3



У меня такой вопрос, мне нада двигать по екране одновременно неизвестное, заранее, количество фигурок. Я непойму как ето можно сделать, ведь цыклы в методе paint() не доступны!
Допустим, нада двигать 100 картинок, еси я их буду в цыкле треда перещитывать а в методе paint токо рисовать один из них, то одновременно они лвигаться небудут, да ещо и пока пройдёт время с первого по 100, то ето вообще будет гон.
Какже заставить двигвться НЕИЗВЕСТНОЕ количество картинок ОДНОВРЕМЕННО?????

Добавлено через 7 минут и 9 секунд
Я кажись понял, для етого нужен флаг!
Когда все картинки передвинулись  - поднимать флаг перерисовки, а перед передвижение картинок проверять флаг перерисовки, опущен ли? 
Правельно?
PM MAIL   Вверх
eugine_s
Дата 16.2.2010, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 581
Регистрация: 14.11.2007
Где: Киев

Репутация: 17
Всего: 17



Нет. Не правильно. 

Правильный ответ - читать книги. 

Ты можешь и в paint-e двигать, никто тебе не запретит. 

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

Так как передвижение картинки (если все правильно сделано), это всего лишь изменение двух величин int x и int y - (положение по X, и по Y), картинок всего 100, тогда нужно изменить 200 значение - т.е. время "сдвига" картинки практически нулевое. Основное время будет занимать перерисовка этих картинок. 

Что-нибудь типа такого: 
Код


public void run () {
    while (running) {
       for (int i = 0; i<100;i++) {
          img[i].x = new_x;
          img[i].y = new_y;
       }
     repaint();
     Thread.sleep(50);
    }
}

public void paint(Graphics g) {
  for (int i = 0; i < 100; i++) {
     drawImage(img[i], img[i].x, img[i].y);
  }
}



То что про флаги ты написал - может и правИльно, а может и нет. Нужно видеть код. 
А зачем вообще поднимать какой-то флаг для перерисовки? Метод repaint() - это фактически и есть флаг перерисовки. repaint() = хочу_чтобы_вызвалась_перерисовка_экрана 
PM MAIL   Вверх
Рамирос
Дата 16.2.2010, 23:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 4.2.2010

Репутация: -2
Всего: -3



чтото вы нащот перерисовки в треде и цикла в пеинте - ошибаетесь, ето ошибка так как вы, eugine_s, написали, наверное!

Это сообщение отредактировал(а) Рамирос - 17.2.2010, 00:09
PM MAIL   Вверх
W0LF
Дата 17.2.2010, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20




 ! 
W0LF
Рамирос, последнее предупреждение!


eugine_s все написал верно! в потоке идет присвоение координат! потом, после этого, перерисовываются все картинки, идет рендер картинок на экран! paint их рисует! поток присваивает им координаты и далее вызывает рендер их, в гугле немеряно объяснений и кода!


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Рамирос
Дата 17.2.2010, 14:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 4.2.2010

Репутация: -2
Всего: -3



WOLF, а что я такого сделал, вродебы вопрос нормальный!, а какие тогда, например. темы создавать?
И ето, когда я ставлю в методе run - repaint();, то выходит ошибка, repaint воспринимается как какойто метод, который нада ещо написать.
Что ет может значит? И про цыкл в пеинте - тожесамое!!

И ето. можно я создам 1 тему и там буду задавать разные вопросы, кто захочет - будет мне помогать, подсказывать?
только однутему! 

Да и ещо, какая конструкцыя быстрее: if, или switch?

Это сообщение отредактировал(а) Рамирос - 17.2.2010, 15:55
PM MAIL   Вверх
W0LF
Дата 17.2.2010, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

WOLF, а что я такого сделал, вродебы вопрос нормальный!, а какие тогда, например. темы создавать?
И ето, когда я ставлю в методе run - repaint();, то выходит ошибка, repaint воспринимается как какойто метод, который нада ещо написать.
Что ет может значит? И про цыкл в пеинте - тожесамое!!

в папке WTK есть стандартные примеры! там есть змейка, например, ну возьми ты и посмотри код!
ты задаешь очень простые вопросы и очень глупые, на которые ответ можешь найти сам!

Цитата

И ето. можно я создам 1 тему и там буду задавать разные вопросы, кто захочет - будет мне помогать, подсказывать?
только однутему!

НЕТ! Есть правила!
вот там есть такое - 
Цитата

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


Цитата

Да и ещо, какая конструкцыя быстрее: if, или switch?

это уже лучше вопрос, НО -
1. Этот вопрос не касается j2me, это общая java, не в этой ветке нужно его спрашивать!
2. Ты создал топик это с другим вопросом, этот здесь уже задавать нельзя!
3. Ты можешь сам найти ответ на свой вопрос, сделав две конструкции switch-case и if-else, и прогнать их в цикле например 1000 раз, и посмотреть сколько будет занимать одна времени и сколько другая и сам ответить на свой вопрос.


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Рамирос
Дата 18.2.2010, 00:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 4.2.2010

Репутация: -2
Всего: -3



Ну теперь понял)))))

Добавлено через 46 секунд
Ну теперь понял)))))

Добавлено через 1 минуту и 22 секунды
Ну теперь понял)))))
PM MAIL   Вверх
jk1
Дата 18.2.2010, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: нет
Всего: 75



Цитата

две конструкции switch-case и if-else, и прогнать их в цикле например 1000 раз, и посмотреть сколько будет занимать одна времени и сколько другая 


W0LF,
Насколько мне известно,  в J2SE за счет динамической компиляции и некоторых других причин  микротесты производительности показывают все что угодно, вплоть до погоды. Написать тест, который даст объективный результат довольно сложно.
В ME все по-другому?

заранее спасибо.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
W0LF
Дата 18.2.2010, 20:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



jk1, значит я, скорее всего, не прав. а j2me этот тот же j2se, только урезанный. Так что все идентично будет.
тогда мое мнение такое - 
использовать switch-case для конкретных значений, if-else для диапазонов.

Это сообщение отредактировал(а) W0LF - 18.2.2010, 20:02


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
Рамирос
Дата 19.2.2010, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 80
Регистрация: 4.2.2010

Репутация: -2
Всего: -3



логично, но кто его знает))))))))
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0705 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.