Нужна помощь!

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Mr.Kibernetik! Написал программу календаря на год. Дни решил отобразить кнопками. Получилось на странице сразу выводится 504 кнопки! Машина с трудом перерабатывает эту информацию... Скажите: одновременное отображение такого количества кнопок-критично для иос6 или что то не так я сделал в программе.
Вот упрощенный вариант массива на 504 кнопки:

Code: Select all

graphics
draw color 0,0,0
option base 1
Dim e1(18,28)
e1(1,1)=1
For k=1 to 18
For m=1 to 28
If k=1 and m=1 then 10
If m=1 and k>1 then e1(k,m)=e1(k-1,28)+1 else e1(k,m)=e1(k,m-1)+1
10 x=x+1
button (x) title (e1(k,m)) at 50+30*m, 60+30*k size 30,30
next m
Next k
end

User avatar
Mr. Kibernetik
Site Admin
Posts: 4782
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

Могу только порадоваться, что и программа, и система могут отобразить столько кнопок :D
Не на каждом устройстве можно их столько вообще вместить в экран.
Можно отображать помесячно. Можно вместо кнопок использовать их рисунок и определять координаты касания вместо физических кнопок.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Спасибо! Я Вас понял! Что самое интересное это работает-тяжело но все же работает! Помесячно этот вариант у меня есть и сейчас он самый оптимальный)).над касаниями я думал но если честно не представляю как это реализовать)). Их тоже как и кнопки надо представить в виде массива? Верно?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4782
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

Фант wrote:над касаниями я думал но если честно не представляю как это реализовать)). Их тоже как и кнопки надо представить в виде массива? Верно?
Это дело творческое :)

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Подскажите Если рисовать 504 кнопки, а потом их удалять и эти действия повторять несколько раз не выходя из программы-может ли все это привести к переполнению памяти и вылету программы или нет? Т.е. что происходит с системой после одного цикла " рисование-удаление кнопок"?возвращается она на прежний уровень или происходит изменение?

User avatar
Mr. Kibernetik
Site Admin
Posts: 4782
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

Не совсем понятно, что значит "удалять" после рисования.

В принципе работа с графикой всегда ведет к наполнению памяти. Просто периодически система сбрасывает все лишнее.
Но в любом случае вылетов быть не должно, если они есть - то это повод сообщить об ошибке в программе.

В версии 3.4 (которая кстати сегодня вышла) сделана блокировка по переполнению памяти: если пользователь слишком много занял памяти, то выполнение программы прекращается. Без этой блокировки система сама вырубит программу, если та продолжает перебирать память, и это уже будет вылет.
С Вашим экстенсивным подходом к решению вопросов :lol: думаю, Вы будете часто видеть предупреждение, что переполнили память. Это означает, что у системы просто нехватает ресурсов, чтобы выполнить Ваши запросы. Значит, нужно искать менее ресурсоемкие методы решения задачи.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Точно-экстенсивный :D :D :D .

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Привет! Мне периодически (по команде) надо отображать под одним и тем же номером спрайт с разным содержанием- меняется текст внутри спрайта. Подскажите перед следующим отображением спрайта обязательно его удалять delete или просто достаточно его прятать hide? Что будет "легче" для системы?
:D :D :D Сам задал и сам ответил на вопрос:

Code: Select all

graphics
randomize
draw font size 100
10 sprite 1 begin 1024,724
fill color rnd(1),rnd(1),rnd(1)
fill rect 0,0 to 1024,724
draw text rnd(10) at 500,300
sprite 1 end
sprite 1 show
loop:
get touch 0 as x,y
if x>0 then ! sprite 1 hide ! goto 10 ! endif
goto loop
В данном варианте все работает нормально.
Если sprite 1 hide заменить на sprite 1 delete то память системы моментально заполняется.

User avatar
Mr. Kibernetik
Site Admin
Posts: 4782
Joined: Mon Nov 19, 2012 10:16 pm
My devices: iPhone, iPad, MacBook
Location: Russia
Flag: Russia

Re: Нужна помощь!

Post by Mr. Kibernetik »

Добрый день!

Прятать спрайт и удалять его - это разные вещи.
Но у Вас речь идет не о том, что Вы его прячете - Вы его пересоздаете каждый раз заново командой SPRITE BEGIN. Для этого спрайт даже прятать не нужно - можно пересоздать и отображаемый спрайт.
Но правильнее делать даже не так. Если размер у спрайта не меняется, то можно создать его всего один раз командой [SPRITE BEGIN w,h], а потом только редактировать его командой [SPRITE BEGIN] (посмотрите в документации отличия этих двух версий одной команды).
А команда SPRITE DELETE полностью удаляет все ресурсы спрайта, что заставляет операционную систему каждый раз генерировать все заново. А поскольку старую информацию она стирает с задержкой, то легко переполнить память такими частыми операциями.

User avatar
Фант
Posts: 1363
Joined: Sat Nov 30, 2013 10:01 am
My devices: iPad 4 (iOS 9.3), iMac (MAC OS 11.03)
Location: Россия,Санкт-Петербург
Flag: Russia
Contact:

Re: Нужна помощь!

Post by Фант »

Спасибо огромное! Все понятно!

Post Reply