|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
||||
|
||||
Доброе утро
не подскажете как можно сделать анимацию в делфи????
мне нужно чтобы шарик летал по картинке и отталкивался об стены |
#2
|
|||
|
|||
сам шарик можно рисовать через canvas по таймеру
если надо gif, то можно создать из canvas ряд файлов и другой прогой склеить или так если gif не нужен, то можно сделать круглое окно, летающее и отскакивающее от стен экрана Последний раз редактировалось Pyro, 16.03.2012 в 10:18. |
#3
|
||||
|
||||
Цитата:
|
#4
|
||||
|
||||
спасибо,я нашел *http://www.delphisources.ru/pages/so...ng_balls.html* но мне кажется или это написано на JAVA????
|
#5
|
||||
|
||||
кажется.
Код:
program Balls; uses Forms, BallMain in 'BallMain.pas' {Form1}, BallObj in 'BallObj.pas'; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Пишу программы за еду. __________________ |
#6
|
||||
|
||||
Код:
program Balls; uses Forms, BallMain in 'BallMain.pas' {Form1}, BallObj in 'BallObj.pas'; {$R *.RES} begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end. Последний раз редактировалось Admin, 16.03.2012 в 13:41. |
#7
|
||||
|
||||
Цитата:
Код:
type TForm1 = class(TForm) Timer1: TTimer; ... Пишу программы за еду. __________________ |
#8
|
||||
|
||||
уменя получается вот так....*unit Unit5;
Код:
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ExtCtrls,Forms; BallMain in 'BallMain.pas' {Form1}, BallObj in 'BallObj.pas'; {$R *.RES} type TForm5 = class(TForm) Timer1: TTimer; Image1: TImage; procedure Timer1Timer(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form5: TForm5; implementation {$R *.dfm} procedure TForm5.Timer1Timer(Sender: TObject); begin Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end; end. но чет не работает. Последний раз редактировалось Admin, 16.03.2012 в 13:40. |
#9
|
|||
|
|||
Товарищ, скачайте для начала любую книгу по делфи, и прочтите главу о структуре делфи-проекта.
Код, приведенный выше, не будет работать. Точнее будет, но совсем не так, как Вы этого ожидаете. Код:
Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; по теме: еще как вариант можно положить на форму TImage, залить туда картинкой Ваш шарик и по таймеру изменять позицию (свойства Left и Top) по какой-нибудь формуле (например линейной функции) с проверкой на встречу с границами экрана. Вариантов реализации много. Лишь бы придумать алгоритм и правильно это записать. p.s. а какую-нибудь книжку я все же рекомендую скачать/купить - в большинстве книг есть начальные главы по логике и основам построения программ, которые помогут Вам понять как вообще работает программа/компьютер. Последний раз редактировалось nixel, 16.03.2012 в 12:52. |
#10
|
||||
|
||||
Цитата:
то есть этот код неправильный получается? Цитата:
Последний раз редактировалось Mp3, 16.03.2012 в 14:37. |
#11
|
|||
|
|||
Цитата:
Цитата:
Код:
unit Unit1; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Imaging.pngimage; type TForm1 = class(TForm) Image1: TImage; Button1: TButton; Button2: TButton; Timer1: TTimer; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Timer1Timer(Sender: TObject); private public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} var a: integer = 1; //Перемещение по х b: integer = 1; //перемещение по y procedure TForm1.Button1Click(Sender: TObject); begin Timer1.Enabled:= true; end; procedure TForm1.Button2Click(Sender: TObject); begin Timer1.Enabled:= false; end; procedure TForm1.Timer1Timer(Sender: TObject); var temp: integer; begin if (Image1.Top <= 0) or ((Image1.Top + Image1.Height) >= Form1.ClientHeight) then b:= -b; if (Image1.Left <= 0) or ((Image1.Left + Image1.Width) >= Form1.ClientWidth) then a:= -a; Image1.Left:= Image1.Left + a; Image1.Top:= Image1.Top + b; end; end. Соответственно, как ты будешь менять а и b уже твое дело. У меня они просто по единице каждая. Добавлено: У меня Delphi XE2, соответственно если будешь пытаться запускать на младших версиях, будет ругаться на подключаемые модули. Скопируй код обработчиков вручную. Движение картинки - файл проекта Project1 - ехе-файл, разбитый на два архива. Открывать из part1 соответственно. Если будет ругаться антивирь - не переживай, просто я ехе сжал через UPX, а то в оригинале он занимает 7 с половиной метров -_- (vcl такой vcl...) Последний раз редактировалось nixel, 16.03.2012 в 16:52. |
#13
|
||||
|
||||
nixel,почему программа проджект1 работает а начинаю смотреть код и запускаю Unit1 он мне выдает ошибку%)
|
#14
|
||||
|
||||
Цитата:
|
#15
|
||||
|
||||
Кажись, во всех версиях Дельфи в папке Demos где-то есть пример под названием "EarthPng", правда, там не шарик летает, а Земля, но, думаю, переработать под шарик труда не будет .
|
|
Опции темы | Поиск в этой теме |
Опции просмотра | |
|
|