|
Основной форум Сюда все проблемы связанные с программированием. |
04.11.2010, 16:01
|
#1
|
Оператор ЭВМ
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
|
Просьба помочь с оптимизацией...
Помогите, пожалуйста, оптимизировать код, если это вообще возможно. Кроме способа с двухмерным массивом:
procedure mainMenu; var work:image; startIm:array[0..5] of image; configIm:array[0..5] of image; loadIm:array[0..5] of image; exitIm:array[0..5] of image; w,h:integer; begin work:=LoadImage('start.png'); w:=getImageWidth(work)/6; h:=getImageHeight(work); startIm[0]:=rotate_image_from_image(work,0,0,w,h,5); startIm[1]:=rotate_image_from_image(work,w,0,w,h,5); startIm[2]:=rotate_image_from_image(work,w*2,0,w,h,5); startIm[3]:=rotate_image_from_image(work,w*3,0,w,h,5); startIm[4]:=rotate_image_from_image(work,w*4,0,w,h,5); startIm[5]:=rotate_image_from_image(work,w*5,0,w,h,5); work:=LoadImage('config.png'); w:=getImageWidth(work)/6; h:=getImageHeight(work); configIm[0]:=rotate_image_from_image(work,0,0,w,h,5); configIm[1]:=rotate_image_from_image(work,w,0,w,h,5); configIm[2]:=rotate_image_from_image(work,w*2,0,w,h,5); configIm[3]:=rotate_image_from_image(work,w*3,0,w,h,5); configIm[4]:=rotate_image_from_image(work,w*4,0,w,h,5); configIm[5]:=rotate_image_from_image(work,w*5,0,w,h,5); work:=LoadImage('load.png'); w:=getImageWidth(work)/6; h:=getImageHeight(work); loadIm[0]:=rotate_image_from_image(work,0,0,w,h,5); loadIm[1]:=rotate_image_from_image(work,w,0,w,h,5); loadIm[2]:=rotate_image_from_image(work,w*2,0,w,h,5); loadIm[3]:=rotate_image_from_image(work,w*3,0,w,h,5); loadIm[4]:=rotate_image_from_image(work,w*4,0,w,h,5); loadIm[5]:=rotate_image_from_image(work,w*5,0,w,h,5); work:=LoadImage('exit.png'); w:=getImageWidth(work)/6; h:=getImageHeight(work); exitIm[0]:=rotate_image_from_image(work,0,0,w,h,5); exitIm[1]:=rotate_image_from_image(work,w,0,w,h,5); exitIm[2]:=rotate_image_from_image(work,w*2,0,w,h,5); exitIm[3]:=rotate_image_from_image(work,w*3,0,w,h,5); exitIm[4]:=rotate_image_from_image(work,w*4,0,w,h,5); exitIm[5]:=rotate_image_from_image(work,w*5,0,w,h,5); end;
Имеется 4 рисунка, в которых поочередно слева на право вырезается по 6 отдельных картинок и заносятся в соответствующие массивы.
|
(Offline)
|
|
04.11.2010, 16:55
|
#2
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Просьба помочь с оптимизацией...
А зачем их хранить отдельно в массивах и зачем вообще резать?
Можно загрузить картинки как спрайты и выводить потом нужные кадры спрайта. Lib_arcade такое может. Например:
AddSprite(LoadImage('/start.png'), w, h); // Загрузка спрайта 0 AddSprite(LoadImage('/config.png'), w, h); // Загрузка спрайта 1 AddSprite(LoadImage('/load.png'), w, h); // Загрузка спрайта 2 AddSprite(LoadImage('/exit.png'), w, h); // Загрузка спрайта 3
// Пример вывода спрайта 1, кадр 3 с вращением SetFrame(1, 3); // Устанавливаем кадр SpritePosition(1, x, y); // Куда выводить TransformSprite(1, 5); // Поворот на 90 градусов DrawSprite(1); //Отрисовка спрайта Repaint;
А оптимальнее всего вообще все спрайты хранить в одной картинке.
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
04.11.2010, 17:38
|
#3
|
Оператор ЭВМ
Регистрация: 04.11.2010
Сообщений: 38
Написано одно полезное сообщение
|
Ответ: Просьба помочь с оптимизацией...
Сообщение от odd
А зачем их хранить отдельно в массивах и зачем вообще резать?
Можно загрузить картинки как спрайты и выводить потом нужные кадры спрайта. Lib_arcade такое может. Например:
AddSprite(LoadImage('/start.png'), w, h); // Загрузка спрайта 0 AddSprite(LoadImage('/config.png'), w, h); // Загрузка спрайта 1 AddSprite(LoadImage('/load.png'), w, h); // Загрузка спрайта 2 AddSprite(LoadImage('/exit.png'), w, h); // Загрузка спрайта 3 // Пример вывода спрайта 1, кадр 3 с вращением SetFrame(1, 3); // Устанавливаем кадр SpritePosition(1, x, y); // Куда выводить TransformSprite(1, 5); // Поворот на 90 градусов DrawSprite(1); //Отрисовка спрайта Repaint;
А оптимальнее всего вообще все спрайты хранить в одной картинке.
|
Спасибо, либой не додумался пользоваться. Только сначала надо поворачивать спрайт, а потом указывать координаты вывода, а то он у меня не прямоугольный
А можно как-то выгружать переменные или они автоматически выгружаются?
|
(Offline)
|
|
05.11.2010, 01:07
|
#4
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Просьба помочь с оптимизацией...
Есть команда RemoveSprites которая удаляет из памяти все спрайты.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 20:36.
|