Показать сообщение отдельно
Ридл Гатофель
КОТ
Аватар для Ридл Гатофель
Сообщения: 5,278
Регистрация: 14.02.2006
Откуда: ДВР
Старый пост, нажмите что бы добавить к себе блог 29 декабря 2011, 15:58
ВКонтакте
  #1796 (ПС)
-Цитата от зулусик просто Посмотреть сообщение
-Цитата от Ридл Гатофель Посмотреть сообщение
-Цитата от зулусик просто Посмотреть сообщение

а че спорно? только асм, только олдскул



поясни вот это
Анимация спрайтовая. Вот шар
TBall = class
Frame: Integer; - Текущий кадр анимации
Frames: Integer; - Количество кадров анимации
Animation: Hz; - ссылка на объект, в котором хранятся сами изображения
procedure Animate; - переключается на следующий кадр. Т.е. Inc(Frame); If (Frame > Frames) then Frame := 0;
procedure Draw(x, y: Integer); Рисует Animation[Frame] в точке x,y
end;

По таймеру происходит следующее:
TField.Animate (анимация всего поля)
begin
for i := 0 to ColCount - 1 do
for j := 0 to RowCOunt - 1 do
if Assigned(Balls[i][j]) then Balls[i][j].Animate; - анимируем все шары
end;

TField.Draw;
begin
рисуем само поле на канве, т.е. хуячим сетку
for i := 0 to ColCount - 1 do
for j := 0 to RowCOunt - 1 do
if Assigned(Balls[i][j]) then Balls[i][j].Draw(i*на какой-то отступ, j * на какой-то отступ);
end;
я кстати тоже про другие лайнс подумал. ну да ладно.
сам с анимацией и прочими лэйаутами никогда не работал, поэтому не знаю, может быть так и лучше.
я говорю, с позиции ООП наверно лучше было бы обособить "шар". ну да ладно.
Так а нахуя создавать класс для объекта с одним единственным свойством (если анимации нет)?

offline
Ответить с цитированием