Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

помогите с объектом!


Страницы:   1 2

novai ©   (2008-09-10 13:56:00) 

не понимаю в чем ошибка
TStar = class(TObject)
   timer:TTimer;
   x,y, width, height:integer;
   oldx, oldy:integer;
   constructor Create;
   destructor Destroy; override;
   procedure OnTimerStar(Sender: TObject);не работает
   procedure SetTo(x,y:integer);
   procedure Draw ;
   procedure Move;
 end;

constructor TStar.Create;
begin
 inherited Create;

 x:=0; y:=0;
 oldx:=x; oldy:=y;

 width:=10;
 height:=10;

 Timer:=TTimer.Create(nil);
 timer.Interval:=100;
 timer.Enabled:=true;
 timer.OnTimer:=OnTimerStar;
end;

Destructor TStar.Destroy;
begin
 timer.Enabled:=false;
 timer.Destroy;

 inherited Destroy;
end;

procedure OnTimerStar(Sender: TObject);
begin
 star.Move;
end;

procedure TStar.SetTo(x,y:integer);
begin
 star.x:=x;
 star.y:=y;
//  star.oldx:=x;
//  star.oldy:=y;
 draw;
end;

procedure TStar.Draw;
begin
 if (oldx<>x) or (oldy<>y) then
 begin
  PatBlt(scene.Canvas.Handle, oldx, oldy, Width, Height, WHITENESS);
  oldx:=x;
  oldy:=y;
 end;

 Scene.Canvas.Rectangle(x,y, x+width,y+height);
 Scene.DrawScene;
end;

procedure TStar.Move;
begin
  inc(star.y,10);
  if star.y+star.height>=scene.Height then star.y:=0;

  Draw;
end;


brother   (2008-09-10 14:50:00) [1]

> не понял???

а понял))))) все домой надо сваливать - заработатлся....


brother   (2008-09-10 14:45:00) [2]

> Предусмотрительный.

не понял???


Anatoly Podgoretsky   (2008-09-10 14:44:00) [3]

> brother  (10.09.2008 14:42:26)  [26]

Предусмотрительный.


brother   (2008-09-10 14:42:00) [4]

> он уже стартанул отсЕдава быстрее какого-то коллайдера...)

ну хоть спасибо сказал)


{RASkov}   (2008-09-10 14:40:00) [5]

> да мы еще и не начинали!)

Да его разве теперь догонишь, он уже стартанул отсЕдава быстрее какого-то коллайдера...)


brother   (2008-09-10 14:36:00) [6]

> а мы еще не закончили :)

да мы еще и не начинали!)


{RASkov}   (2008-09-10 14:34:00) [7]

> Не жди, что мы будет за тебя проверять код.

Некоторые вещи видны не вооружонно(ы)м глазом, но для новичков может понадобится оружие - книга например :)


{RASkov}   (2008-09-10 14:31:00) [8]

> [18] novai   (10.09.08 14:23)
> Ну не пинайте новичка!

За код в [15] можно очень сильно испинать :)
Например за неграмотное использование глобальных переменных....
Да и вообще весь код и алгоритм и ООП и... написано не грамотно... Даже для новичка :)


oldman   (2008-09-10 14:26:00) [9]


> brother ©   (10.09.08 14:24) [19]
> мы не сильно ;)


а мы еще не закончили :)


Anatoly Podgoretsky   (2008-09-10 14:25:00) [10]

> novai  (10.09.2008 14:18:15)  [15]

Что не работает?
Не жди, что мы будет за тебя проверять код.


brother   (2008-09-10 14:24:00) [11]

> Ну не пинайте новичка!

мы не сильно ;)


novai   (2008-09-10 14:23:00) [12]


> Почему так?

ой и правда... надо procedure TStar.OnTimerStar(Sender: TObject);

спасибо всем! Ну не пинайте новичка!


Anatoly Podgoretsky   (2008-09-10 14:22:00) [13]

> novai  (10.09.2008 14:05:02)  [2]

Тип не имеет визуального представления, только реальные объекты могут быть видимы.


{RASkov}   (2008-09-10 14:20:00) [14]

> procedure OnTimerStar(Sender: TObject);
> begin
> star.Move;
> end;

Почему так?


novai   (2008-09-10 14:18:00) [15]

вот полный код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, ExtCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Timer1: TTimer;
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
   procedure FormDestroy(Sender: TObject);
   procedure FormPaint(Sender: TObject);
   procedure Timer1Timer(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

 TScene= class(TBitmap)
   procedure DrawScene;
 end;

 TStar = class(TObject)
   timer:TTimer;
   x,y, width, height:integer;
   oldx, oldy:integer;
   constructor Create;
   destructor Destroy; override;
   procedure OnTimerStar(Sender: TObject);
   procedure SetTo(x,y:integer);
   procedure Draw ;
   procedure Move;
 end;

var
 Form1: TForm1;

 Scene:TScene;
 Star:Tstar;

implementation

{$R *.dfm}

procedure TScene.DrawScene;
begin
 form1.canvas.Draw(0,0, scene);
end;

constructor TStar.Create;
begin
 inherited Create;

 x:=0; y:=0;
 oldx:=x; oldy:=y;

 width:=10;
 height:=10;

 Timer:=TTimer.Create(nil);
 timer.Interval:=100;
 timer.Enabled:=true;
 timer.OnTimer:=OnTimerStar;
end;

Destructor TStar.Destroy;
begin
 timer.Enabled:=false;
 timer.Destroy;

 inherited Destroy;
end;

procedure OnTimerStar(Sender: TObject);
begin
 star.Move;
end;

procedure TStar.SetTo(x,y:integer);
begin
 star.x:=x;
 star.y:=y;
//  star.oldx:=x;
//  star.oldy:=y;
 draw;
end;

procedure TStar.Draw;
begin
 if (oldx<>x) or (oldy<>y) then
 begin
  PatBlt(scene.Canvas.Handle, oldx, oldy, Width, Height, WHITENESS);
  oldx:=x;
  oldy:=y;
 end;

 Scene.Canvas.Rectangle(x,y, x+width,y+height);
 Scene.DrawScene;
end;

procedure TStar.Move;
begin
  inc(star.y,10);
  if star.y+star.height>=scene.Height then star.y:=0;

  Draw;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
//  star.Draw;
//  canvas.Draw(0,0, scene);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
 Scene:=TScene.Create;
 scene.Width:=200  ;
 scene.Height:=200  ;

 Star:=Tstar.Create;
 star.SetTo(100,0);

 timer1.Enabled:=true;

end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
 Star.Destroy;
 scene.Destroy;
end;

procedure TForm1.FormPaint(Sender: TObject);
begin
 scene.DrawScene;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
//  FormPaint(Form1);
end;


oldman   (2008-09-10 14:13:00) [16]


> brother ©   (10.09.08 14:12) [11]
> наверное не компилируется...


движужуяся звезда не движужуется...


Германн   (2008-09-10 14:13:00) [17]


> novai   (10.09.08 14:10) [9]
>
> там я заводил конечно переменную   Star:Tstar;
>

Где там? Прямо в самом классе?


novai   (2008-09-10 14:13:00) [18]


> procedure OnTimerStar(Sender: TObject);begin  inc(star.y,
> 10);  if star.y+star.height>=scene.Height then star.y:=0;
>   Draw;end;

да так наверное лучше...

> наверное не компилируется...

да не запускается...


brother   (2008-09-10 14:12:00) [19]

наверное не компилируется...


Правильный$Вася   (2008-09-10 14:11:00) [20]


> procedure OnTimerStar(Sender: TObject); не работает

и че? так и говорит "не работаю"?


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо