|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Вместо TShape, двигается Form1
У меня есть 2 функции и 2 таймера.
В первом таймере каждые 10 секунд вызывается 1 функция, которая создает TShape, с определенными параметрами: Код:
function TForm1.ShapeCreating(id:integer; color:Tcolor):boolean; var shape:TShape; begin shape:=TShape.Create(Form1); shape.Parent:=Form1; shape.Brush.color:=color; shape.width:=random(300)+50; shape.height:=random(300)+50; shape.Left:=random(Form1.Width-shape.Width)+1; shape.top:=1; shape.tag:=id; result:=true; end; Тем временем вторая функция по таймеру двигает этот Shape, пока не создастся новый. Код:
function TForm1.ShapeGo(id:integer): boolean; var Shape:TShape; begin Shape.Tag:=id; shape.top:=shape.Top+shapespeed; end; idt изначально равна нулю и меняется во втором таймере: Код:
procedure TForm1.CreatingTimerTimer(Sender: TObject); begin idt:=idt+1; ShapeCreating(idt,clred); end; А вот 1 таймер: Код:
procedure TForm1.GameTimerTimer(Sender: TObject); var shape:tshape; begin ShapeGo(idt); if shape.top>=Form1.height then shape.Destroy; end; Но моя задумка не работает: Создается Shape, но вместо того, чтобы его двигать, моя функция двигает форму. Помогите пожалуйста |
#2
|
|||
|
|||
А почему Shape у Вас -локальная переменная? Сделайте её приватным полем формы, уберите var Shape:TShape; из всех процедур, и должно заработать.
|