![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
сначало нарисовать 10 картинок.. потом показать их пользователю.. как осуществить?
народ.. представьте, что одна картина складывается при помощи многих.. так вот, если каждую картинку показывать юзеру на экране, то, естественно всё мигает как мне сначало нарисовать картинки, а потом показать их? я не могу себе позволить работать пиксельно с большими Array-ами, так как всё будет тормозить НА НЕТ мне нужна здесь если не молнееносная реакция, то хотябы приблежение к ней.. может кто что хорошее предложит |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
я не понял, как нарисовать и что нарисовать? если задача в том, чтобы сделать из 10 разных картинок 1 рисунок, то нужно просто создать BufferedImage, взять у него графику (getGraphics()) и нарисовать туда эти рисунки.
-------------------- |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Если нужно, чтобы 10 отдельных картинок только "выглядели", как одна, то можно использовать JLayeredPane, разместив каждую картинку в отдельном слое, самый верхний слой предварительно "залить" каким-нибудь нейтральным фоном. По окончании загрузки всех картинок "утопить" (moveToBack) верхний слой и перерисовать JLayeredPane
-------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Окончание загрузки не означает что все картинки будут прорисовываться одновременно и не будет мерцания. В момент "утопления" верхнего слоя мы получим то же самое, что было бы при прорисовке картинок на одной панели.
Мерцание возникает из-за того, что прорисовать 10 рисунков медленнее, чем один большой. Потому лучше рисовать в один рисунок, тем более что если его составляющие со временем не меняются, то нужно будет делать эту прорисовку 1 раз. Это называется двойным буффированием. -------------------- |
|||
|
||||
| polosatij |
|
||||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
что-то не получается у меня.. где я ошибаюсь
где я ошибся? Добавлено @ 09:08
нет.. у меня не получиться этого.. картинка каждый раз - разная.. возможных вариантов 100^100, если не больше.. |
||||||
|
|||||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Насчет черного фона - нужно канве сделать setOpaque.
ну так тем более -------------------- |
||||
|
|||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Никак не удается воспроизвести мерцание при отображения 10 отдельных фрагментов общей картинки (PIII-800, ОЗУ 512, Win2000, JDeveloper10) при использовании JLayeredPane.
-------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
И не получится без дабл баффера, хоть тут в лепешку расшибись
-------------------- |
|||
|
||||
| igon |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
=> для мерцания нужен дабл баффер => счастье - это когда тебя понимают -------------------- Хотите поговорить об этом? |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Извиняюсь - действительно не разобрался
Проблемкa будет если тебe нужнo постоянно меняtь рисунок или его части (непрерывно). Поскольку здесь речь об игре, то я предполагаю что-то вроde этогo. Тогдa прорисовыват' придется нe 1 раз, а Н раз в секунду, ну i тогда мерцание будет -------------------- |
|||
|
||||
| igon |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 327 Регистрация: 30.10.2004 Репутация: 1 Всего: 21 |
Мдя, похоже, я опять не совсем понял исходную проблему - подразумевалась-то, оказывается, анимация. В этом случае ты прав: о такой проблеме я слыхал и решается она как раз двойной буферизацией (сам, увы, не сталкивался). Хотя, таскание мышой одного (величиной с полэкрана) фрагмента при наличии других - чем не анимация? А мерцание так таки и не появилось, несмотря на усердие в таскании (уж и не знаю,
-------------------- Хотите поговорить об этом? |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Ну вроде как polosatij об игрe говорил. А насчет таскания мышой - там fps поменьше
-------------------- |
|||
|
||||
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
млин.. Domestic Cat, мучаюсь всё ещё с Траблой..
очень долго не мог понять где ошибка.. и теперь вижу, что перерисовка BufferedImage мне ничего не даёт.. почему-то содержание остаётся прежним.. странно.. мне нужно как-нибудь очищать содержимое BufferedImage странно.. в paint-е всё получается замечательно (можно проверить, поменяв активное окно), а вот те же самые строчки в анонимном классе (при нажатии мыши) не работают.. хм.. |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
А можно код твой посмотреть? А то так непонятно.
-------------------- |
|||
|
||||
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
млин.. не знаю.. может BufferedImage надо затерать прежде? может другой использовать? может еще что ------------------- посмотрел вчера, оказывается в Canvas вообще ничего нарисовать нельзя!!! может быть можно, но оно не отображается Это сообщение отредактировал(а) polosatij - 22.11.2004, 14:34 |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
Рисовать в канвe можно, тy просто делаешь неправильно. Воt пример :
Это сообщение отредактировал(а) Domestic Cat - 22.11.2004, 18:27 Присоединённый файл ( Кол-во скачиваний: 3 )
B.java-------------------- |
|||
|
||||
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
Domestic Cat
почему-то очень многие дают мне пример именно так:
а почему не анонимным классом? это дело вкуса я, например, не люблю когда лишние строки валяются.. (= строки интерфейса) за пример, паси сегодня попробую чуть по другому |
|||
|
||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
можно и анонимным классом, но так увеличивается размер программы (за счет создания отдельного MyCanvas$1.class)
-------------------- |
|||
|
||||
| Zandr |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 433 Регистрация: 16.7.2004 Где: Новосибирск Репутация: 9 Всего: 13 |
И дело вкуса тоже.
Когда у тебя фрейм с одной кнопкой, можно
А если у тя куча кнопок, то извиняй |
|||
|
||||
| polosatij |
|
||||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
Domestic Cat, я посмотрел вчера твой вариант.. и свои.. привожу здесь переделку твоего варианта, под мой: (у меня пара тысяч строк в проекте, мне так просто не переделать это всё на твой лад, поэтому хочу разобраться, где и что я не правильно делаю):
почему картинка перерисовывается только после смены активных окон заранее паси Добавлено @ 13:37
до BufferedImage у меня всё работало замечательно (не устраивало лишь мигание и "частота процессора") |
||||
|
|||||
| Domestic Cat |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
repaint() должен перерисовывать канву, а не фрейм, как у тебя:
-------------------- |
|||
|
||||
| polosatij |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 22.2.2004 Где: Stuttgart<-> ;Karlsruhe, Germany Репутация: 1 Всего: 8 |
У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-У-Уря-я-я-я-я-я-я.. Заработало! (с) Простоквашино
точно.. а я думал.. нужно только еще один кусок подогнать.. вечером принесу.. Domestic Cat кидай домашний адрес, придётся тебе из германии пива прислать и всё-таки коты понимают друг друга (с) полосатый |
|||
|
||||
| Domestic Cat |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 5452 Регистрация: 3.5.2004 Где: Dallas, US Репутация: 50 Всего: 172 |
АААА так ты тоже Кот??? Растет силa кошачья на форумe -------------------- |
||||
|
|||||
| AntonSaburov |
|
|||
![]() Штурман ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 5658 Регистрация: 2.7.2002 Где: Санкт-Петербург Репутация: 51 Всего: 118 |
Пора сынишку на форум выводить, он у меня в год Собаки родился, а то засилье какое-то. Я тут уже видел участника WildCat. Кошмар
|
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |