|
|
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Простое приложение. Каркас JavaFX в рабочей области Canvas и Button. Запускается приложение, создается каркас, запускается поток в котором в цикле с задержкой 10 миллисек. на canvas отрисовывается текст. Рано или поздно текст на canvas встает. На консоль продолжает выводиться. Иногда на canvas отрисовывается 1000 раз, иногда 100 а иногда 300000 раз. Кто знает в чем дело ? Почему в какой то момент текст перестает отрисовываться ? Программа небольшая ... ниже исходники. файл Main.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. файл Draw.java Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 17:30 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700 Код: java 1. сюда добавить использование памяти по всем параметрам solo700 Код: java 1. сюда вывод стека ошибки ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 17:47 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700, Вы вообще не поняли JavaFX. Нет никакой "отрисовки". Вы задаёте JavaFX "векторные" объекты - Node, а он их отрисовывает когда ему надо и как ему надо. UI он, обычно, однопоточный. Инфа по потокам тут https://docs.oracle.com/javase/8/javafx/interoperability-tutorial/concurrency.htm Но вам ещё рано. Вам бы разобраться как оно вообще работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 18:01 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700, вместо написания циклов с задержкой, быть может, вам имеет смысл поискать примеры на тему "javafx.animation.AnimationTimer". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 20:19 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Всё ждал ... кто первый предложит Animation. Конечно можно его использовать ... и даже нужно ... здесь вопрос принципиальный .. почему толком не работает этот код ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 20:57 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700Всё ждал а ты не жди. Делай что тебе написали. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 21:00 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Насколько я понимаю, в JavaFx понятие "animation" и класс AnimationTimer не вполне... кхм... Animation работает и без этого класса, кодом наподобие Код: java 1. 2. 3. 4. , а (под)класс AnimationTimer дёргает кастомный public void handle(long now) шестьдесят раз в секунду. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 21:10 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Victor MetelitsaAnimation работает и без этого класса Хотя исходники я не смотрел, внутри может быть всё, что угодно, просто наружу не видно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 21:12 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Petro123, Извините что значит авторсюда добавить использование памяти по всем параметрам ? Я проверял как работает уборщик мусора ... Runtime.getRuntime().totalMemory()-Runtime.getRuntime().freeMemory() хорошо работает (с 5 мег поднимается до 9 и падает обратно) - т.е. с памятью здесь всё в порядке. Я пытался обработать все исключения catch(Exception ignory) { ... } - не генерятся исключения ... вообще. Я не знаю за что зацепиться. Здесь 2 потока - один главный, он управляет формой, 2-ой с циклом в ктр. дергаю ресурсы формы. Понятно, что первый поток использует те же ресурсы, но я пытаюсь синхронизировать в частности графический контекст. Пробовал вставлять явную блокировку Lock - не помогает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 21:36 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700но я пытаюсь синхронизировать в частности графический контекст. Этот метод не работает. Ты его с потолка взял? Используй другую кучу методов: сцена\ Platform.runLater\передачаВосновнойПоток\....анимация\таймеры ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.07.2017, 23:10 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
Если кому интересно решение следующее ... Добавляем функцию Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. и отрисовка Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. на форуме rsdn подсказали. Всем спасибо ! Вопрос закрыт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 11:40 |
|
||
|
Потоковая отрисовка на canvas в приложении JavaFX
|
|||
|---|---|---|---|
|
#18+
solo700Если кому интересно решение следующее ... Это не "решение". Это нагромождение бесполезного кода. Synchronized??? wait/notify??? Задлянафига они в однопоточном GUI? О какой тут вообще многопоточности идёт речь, если вы все потоки в очередь выстраиваете через synchronized и runLater? solo700на форуме rsdn подсказали. Там ещё и не такое подскажут. У вас принципиальное непонимание в том как работет UI. Прочитайте про очередь событий. Ссылки на туториал, я так понимаю давать бесполезно. Ваше решение сродни тому, что пытаясь рисовать в несолько потоков, вы идёте в магазин за новой кисточкой для каждого нового штриха. Многопоточным может быть только моделирование вашей предметной области. А UI он как был однопоточным, так и остался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.07.2017, 11:49 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=64&tid=2122774]: |
0ms |
get settings: |
8ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
30ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 198ms |
| total: | 312ms |

| 0 / 0 |
