Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Вниз

помогите с объектом!   Найти похожие ветки 

 
novai   (2008-09-10 13:56) [0]

не понимаю в чем ошибка
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;


 
Юрий Зотов ©   (2008-09-10 14:03) [1]

А что за таинственная переменная star?


 
novai   (2008-09-10 14:05) [2]

это type ... когда все отлажу будер рисоваться движужуяся звезда...


 
brother ©   (2008-09-10 14:05) [3]

> движужуяся

она будет что?))))


 
Юрий Зотов ©   (2008-09-10 14:07) [4]

> novai   (10.09.08 14:05) [2]

Eсли star - это type, то "движужуяся звезда будер рисоваться" еще очень не скоро.


 
Германн ©   (2008-09-10 14:07) [5]


> А что за таинственная переменная star?
> <Цитата>
>
> novai   (10.09.08 14:05) [2]
>
> это type

Хм.


 
Германн ©   (2008-09-10 14:08) [6]


> то "движужуяся звезда будер рисоваться" еще очень не скоро.

Опередил, блин. Прям слово в слово :)


 
oldman ©   (2008-09-10 14:08) [7]


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


А почему же не:

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

???


 
Palladin ©   (2008-09-10 14:09) [8]


> procedure OnTimerStar(Sender: TObject);

в ясли...


 
novai   (2008-09-10 14:10) [9]

там я заводил конечно переменную   Star:Tstar;


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


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

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


 
brother ©   (2008-09-10 14:12) [11]

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


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


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

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

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

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


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


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

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


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


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


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


 
novai   (2008-09-10 14:18) [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;


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

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

Почему так?


 
Anatoly Podgoretsky ©   (2008-09-10 14:22) [17]

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

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


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


> Почему так?

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

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


 
brother ©   (2008-09-10 14:24) [19]

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

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


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

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

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


 
oldman ©   (2008-09-10 14:26) [21]


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


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


 
{RASkov} ©   (2008-09-10 14:31) [22]

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

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


 
{RASkov} ©   (2008-09-10 14:34) [23]

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

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


 
brother ©   (2008-09-10 14:36) [24]

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

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


 
{RASkov} ©   (2008-09-10 14:40) [25]

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

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


 
brother ©   (2008-09-10 14:42) [26]

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

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


 
Anatoly Podgoretsky ©   (2008-09-10 14:44) [27]

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

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


 
brother ©   (2008-09-10 14:45) [28]

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

не понял???


 
brother ©   (2008-09-10 14:50) [29]

> не понял???

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



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.006 c
2-1221212099
Fynjy
2008-09-12 13:34
2008.10.19
как окрасить компанент Panel?


2-1220531255
zzz
2008-09-04 16:27
2008.10.19
Проверка на последнюю запись


2-1221228662
webpauk
2008-09-12 18:11
2008.10.19
scrollbox.clientrect


2-1221417830
Johnnnn
2008-09-14 22:43
2008.10.19
Как присвоить свою процедуру к TInternetExplorer.OnDocumentComple


3-1208338990
engine
2008-04-16 13:43
2008.10.19
Соединение с БД через прокси





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский