![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
помогите с объектом!
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); не работает
и че? так и говорит "не работаю"?