Вниз  RFO BASIC
- 23.12.2016 / 15:55
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
На сколько я понял вопрос:
например экран 1200 точек по оси Х (экран ландшафтный , т.е. боком ),делим экран на три зоны-
первый экран - Х= от 0 до 399
второй экран - Х= от 400 до 799
третий экран - Х= от 800 до 1200
проверяем точку касания для первого экрана - если Х попадает в диапазон 0-399, то переход
на подпрограмму отрисовки первого экрана , если нет то переход на проверку второго экрана.
Аналогично, если попадает в диапазон 400-799, то переход на отрисовку второго экрана,
если нет, то переходим к проверке третьего экрана - если попадает в 800-1200, то переход
на отрисовку третьего экрана, если нет возврат на проверку нажатия первого экрана!
  Ну как то так!
- 23.12.2016 / 17:41
lion1971
  Пользователь

lion1971 
Сейчас: Offline
думал где-то так
  1. do
  2. Gr.bounded.touch zone1, left1, top1, right1, bottom1
  3. ...
  4. Gr.bounded.touch zone4, left4, top4, right4, bottom4
  5. if zone1 then gosub ... endif
  6. ...
  7. if zone3 then gosub ... endif
  8. until zone4
а zone4 типа кнопка для выхода
- 23.12.2016 / 18:05
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
Просто проверка по условию командой IF !
Значения Х только влияют, так как разбивка
экрана по оси Х.

Изменено 1961uvg (23.12 / 18:07) (всего 1 раз)
- 23.12.2016 / 19:05
lion1971
  Пользователь

lion1971 
Сейчас: Offline
вот такой черновой рабочий код
  1. z=0
  2. GR.OPEN 255,0,0,0
  3. GR.COLOR 255,255,255,255
  4. Gr.rect rct1, 10, 10, 250, 450
  5. Gr.rect rct2, 260, 10, 500, 450
  6. Gr.rect rct3, 510, 10, 750, 450
  7. Gr.rect rct4, 510, 500, 750, 550
  8. Gr.text.size 50
  9. Gr.text.draw zone, 10, 550, str$(z)
  10. GR.RENDER
  11.  
  12. do
  13. Gr.bounded.touch zone1, 10, 10, 250, 450
  14. Gr.bounded.touch zone2, 260, 10, 500, 450
  15. Gr.bounded.touch zone3, 510, 10, 750, 450
  16. Gr.bounded.touch zone4, 510, 500, 750, 550
  17. if zone1 then
  18. z=1
  19. endif
  20. if zone2 then
  21. z=2
  22. endif
  23. if zone3 then
  24. z=3
  25. endif
  26. gr.modify zone, "text", str$(z)
  27. gr.render
  28. until zone4
  29. end
вот только через Gr.bounded.touch идет множественное срабатывание пока идет нажатие

Изменено lion1971 (23.12 / 19:08) (всего 1 раз)
- 23.12.2016 / 19:49
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
Возьми просто gr.touch и выполни проверку
по условию по Х с переходом в нужную подпрограмму, зачем тебе нажатие на область
экрана , будет и проще и короче и быстрее.
Не надо усложнять там где это не надо!
- 23.12.2016 / 21:21
lion1971
  Пользователь

lion1971 
Сейчас: Offline
В плане быстродействия программы что лучше: рисовать объекты графическими командами или использовать готовые рисунки? И можно ли менять точку регистрации (привязки) рисунка или это только верхний левый угол?
- 24.12.2016 / 11:41
380679477932
  Пользователь

380679477932 
Сейчас: Offline
Лутше конечно рисовать, а так без разницы
- 24.12.2016 / 14:28
lion1971
  Пользователь

lion1971 
Сейчас: Offline
вот допустим у меня есть такой фон
Открыть спойлер
и несколько рисунков с именами dsk1.png...dsk7.png такого типа
Открыть спойлер
как оптимальней сделать цикл для их загрузки? :)

Изменено lion1971 (24.12 / 14:31) (всего 3 раза)


Прикрепленные файлы:
hanoy1.png (3.28 кб.) Скачано 71 раз
dsk1.png (0.92 кб.) Скачано 72 раза
- 24.12.2016 / 17:37
1961uvg
  Пользователь

1961uvg 
Сейчас: Offline
Для быстродействия лучше готовые спрайты и стрипы.
У этого языка только одна точка привязки - это верхняя левая точка. По этому заставить вращаться объект вокруг центра очень сложно!
- 24.12.2016 / 18:08
lion1971
  Пользователь

lion1971 
Сейчас: Offline
и сам себе отвечаю :)
  1. fn$ = ""
  2. dim dsk[7]
  3. for i = 1 to 7
  4. fn$ = "dsk"+int$(i)+".png"
  5. GR.BITMAP.LOAD p, fn$
  6. GR.BITMAP.DRAW dsk[i], p, x, y
  7. next i
но может у кого идеи получше будут :)
а что такое "стрипы"?

Изменено lion1971 (24.12 / 18:13) (всего 1 раз)
Наверх  Всего сообщений: 2668
Фильтровать сообщения
Поиск по теме
Файлы топика (492)