Крутим картинку вокруг своей оси, улучшеный переработанный код
- 0 DEG
- ###загрузка нашей картинки 16*16, рисование экрана ожидания загрузки графики
- 10 GELLOAD "a","icon.png":DRAWSTRING "ЗАГРУЗКА",80,50:DRAWSTRING "Подождите пока картинка",1,100:drawstring"дойдет до края",1,120:drawstring"Naik(c)",1,150
- ###вырезаем нарисованый экран загрузки в картинку, преобразование в спрайт и вывод на экран, теперь все рисуется под этим фоном кроме других спрайтов
- 11 GELGRAB "delay",0,0,240,320:SPRITEGEL "delay","delay":SPRITEMOVE "delay",0,0
- ###создаем спрайт индикатора загрузки
- 15 SPRITEGEL "bar","a"
- ###рисуем картинку которую будем вращать. Она нарисовалась под нашим фоном
- 20 DRAWGEL "a",0,0
- ###будем вращать нашу картинку каждый раз на 4 градуса, поэтому создаем массивы значений синусов и косинусов емкостью 360/4=90
- 70 DIM S(90):DIM C(90):K%=0
- 75 FOR W%=0 TO 89
- 80 S(W%)=SIN(K%):C(W%)=COS(K%):K%=K%+4
- 90 NEXT W%
- ###обновляем переменную К%, рисуем круг для затирания уже созданной картинки, дабы предотвратить наложение друг на друга
- 92 K%=0
- 95 FILLROUNDRECT 75,75,60,60,360,360
- ###далее в цикле проходим по пикселям нашей картинки, находим новые координаты по формулам
- 100 FOR J%=0 TO GELHEIGHT("a")-1
- 105 FOR I%=0 TO GELWIDTH("a")-1
- 110 BLIT I%,J%,1,1,(I%-8)*X-(J%-8)*Y+105,(I%-8)*Y+(J%-8)*X+105
- 120 NEXT I%
- 130 NEXT J%
- ###копируем созданную под экраном загрузки перевернутую картинку на 4 градуса, всего их в цикле создастся 90, у всех имена соответствуют их порядковому номеру
- 135 GELGRAB STR$(K%),90,90,30,30
- ###увеличиваем счетчик цикла, если уже создалось 90 изобразжений, переходим на строку 200
- 140 K%=K%+1:IF K%>89 THEN GOTO 200
- ###присваиваем переменным Х и У значение косинуса и синуса из наших массивов созданных ранее, выводим поверх фона индикатор загрузки
- 150 X=C(K%):Y=S(K%):SPRITEMOVE "bar",240/90*K%,0
- 160 GOTO 95
- ###убираем фон и индикатор загрузки за пределы экрана, очищаем экран
- 200 SPRITEMOVE "delay",-999,-999:SPRITEMOVE "bar",-50,-50:CLS
- ###теперь в цикле по очереди выводим созданные картинки, в результате мы видим поворот на 360 градусов. Регулируя значение SLEEP можно выбрать нужную скорость вращения
- 205 FOR I%=0 TO 89
- 210 DRAWGEL STR$(I%),90,90:SLEEP 50
- 220 NEXT I%
- ###переходим назад, поворачиваем "вечно"
- 230 GOTO 205
Чем больше картинка, тем на больший угол надо крутить за один раз, так как ресурсов много требует