|  | 
 
 | 
| 
 | |||||||
| Регистрация | << Правила форума >> | 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", правда, там не шарик летает, а Земля, но, думаю, переработать под шарик труда не будет  . | 
|  | 
 | 
| Опции темы | Поиск в этой теме | 
| Опции просмотра | |
| 
 | 
 |