Форум: "Начинающим";
Текущий архив: 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.005 c