Вниз
Скачать: CL | DM;

Image перестал двигаться.   Найти похожие ветки 

← →
Zak3D[@Tm] ©   (2004-01-09 00:00) [0]

Мастера, помогите советом, сегодня начал добавлять к игре меню опции и заставку, всё было нормально, никаких ошибок не выскакивало, но машина(Image1-машина которой управляет игрок(///if KEY=VK_Left then x:=x-5///)) перестала ездить. Подробнее, первоночально была одна форма(собсно где проходит игра),потор решил добавить две формы(одну для заставки, а другую для меню), потом назначил главной, форму с заставкой т.к. я не знаю как сделать, чтобы сначала проигрывался ролик, потом появлялось меню настроек и только потом игра(что не делал, всегда сначала игра появляется или вобше ошибки выдаёт), собственно после этого рисунок и замер. Помогите пожалуйста советом, если не тяжело...


← →
Mihey ©   (2004-01-09 00:22) [1]

Это неправильный подход - использовать Timage в качестве спрайта (т.е. машинки в твоём случае). Главной должна быть назанчена та форма, при закрытии которой должна закрываться вся игра. Порядок появления окон можно назначить абсолютно любым. Очевидно, перестали обрабатываться клавишы. Приведи весь код, поможем.


← →
Zak3D[@Tm] ©   (2004-01-09 00:31) [2]

Код для формы с машиной такой(только начал писать)
///////////////

var
 Form1: TForm1;
 frames : integer;
 fps : integer;
 x,y,i2,i3,i4 : integer;

implementation

uses Unit2, Unit3, Unit4;

{$R *.dfm}

procedure TForm1.Timer1Timer(Sender: TObject);
begin
Frames:=Frames+1;
fps:=0;
image1.Left:=x;
image1.Top:=y;
end;

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
 Shift: TShiftState);
begin
if Key=VK_Escape then if MessageDlg("Вы действительно хотите выйти?",mtConfirmation,[mbYes,mbNo],0)=idYes then begin
form3.Show;
ModalResult:=3;
hide;
if Key=VK_Up then y:=y-5;
if Key=VK_Down then y:=y+5;
if Key=VK_Left then x:=x-5;
if Key=VK_Right then x:=x+5;
if x<0 then x:=0;
if x>trunc(ClientWidth-Panel1.Width-Image1.Width) then x:=trunc(ClientWidth-Panel1.Width-Image1.Width);
end;
end;

procedure TForm1.Timer2Timer(Sender: TObject);
begin
fps:=frames;
Frames:=0;
lblEdit1.Text:=intTostr(fps);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
timer1.Enabled:=true;
randomize;
Label1.Caption:="Пре-пре-пре......" + #13 + "Альфа моей игры!!!" + #13 + "Вы используете эту" + #13 + "программу на свой" + #13 + "страх и риск!!!";
trackBar1.Position:=600;
x:=Image1.Left;
y:=Image1.Top;
image1.Parent.DoubleBuffered:=True;
end;

procedure TForm1.Timer3Timer(Sender: TObject);
begin
if Image2.Top>ClientHeight then
 begin
  Image2.Left:=Random(Form1.Width-Panel1.Width-image2.Width);
  Image2.Top:=Trunc(-10-Image2.Height)
  end
else  image2.Top:=Image2.Top+6;
if Image3.Top>600 then
begin
Image3.Left:=Random(Form1.Width-Panel1.Width-image3.Width);
image3.Top:=-12-image3.Height
end
else  image3.Top:=Image3.Top+5;
if Image4.Top>600 then
begin
Image4.Left:=Random(Form1.Width-Panel1.Width-image4.Width);
image4.Top:=-13-image4.Height
end
else  image4.Top:=Image4.Top+5;

end;

procedure TForm1.Timer4Timer(Sender: TObject);
begin
if Trackbar1.position=0 then
begin
TrackBar1.Position:=600;
if MessageDlg("Финиш!!! Хотите попробовать ещё?",mtConfirmation,[mbYes,mbNo],0)=idNo
then Zastava.Close
end
else
Trackbar1.Position:=TrackBar1.Position - 1;

end;

procedure TForm1.TrackBar1Change(Sender: TObject);
begin
Image5.Top:=TrackBar1.Position-31;
end;

procedure TForm1.Timer5Timer(Sender: TObject);
begin
if Label1.Font.Color=clRed
then Label1.Font.Color:=ClBlue
else Label1.Font.Color:=clred;
end;

procedure TForm1.Panel1MouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
Const
SC_DragMove=$F012;
begin
ReleaseCapture;
Perform(WM_SYSCOMMAND,SC_DragMove,0);
end;

procedure TForm1.N1Click(Sender: TObject);
begin
AboutBox.Show;
end;

procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Form1.WindowState:=wsNormal;
Form3.Show;
ModalResult:=4;
hide;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
form3.Show;
end;
///////////


← →
Zak3D[@Tm] ©   (2004-01-09 00:40) [3]

Чёта я лишнего накопировал, сори, просто спешил чтобы ты не ушел


← →
Mihey ©   (2004-01-09 01:28) [4]

procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
 if Key = VK_Escape then if MessageDlg("Вы действительно хотите выйти?", mtConfirmation, [mbYes,mbNo], 0) = idYes then
  begin
   form3.Show;
   ModalResult:=3;
   hide;
  end;
 if Key=VK_Up then y:=y-5;
 if Key=VK_Down then y:=y+5;
 if Key=VK_Left then x:=x-5;
 if Key=VK_Right then x:=x+5;
 if x<0 then x:=0;
 if x>trunc(ClientWidth-Panel1.Width-Image1.Width) then x:=trunc(ClientWidth-Panel1.Width-Image1.Width);
// а тут не надо
end;

Ты перепутал и поставил End в конец, т.е. остальные клавиши обрабатывались только когда пользователь нажимал Yes. Вот ещё совет - сильно с ModalResult не балуй и лучше может сначала Hide, потом ModalResult := ..., а потом Show.


← →
Mihey ©   (2004-01-09 01:29) [5]

P.S.: Пиши всегда код с отступами - тогда точно на такое не попадёшься.


← →
Zak3D[@Tm] ©   (2004-01-09 12:07) [6]

Спасибо Mihey сейчас попробую...


← →
Zak3D[@Tm] ©   (2004-01-09 12:22) [7]

Да, ты был прав(как я сам этого не понял?), спасибо за помошь, не знаешь, нельзя ли сделать, чтобы флэш ролик проигрывался на заднем плане, а например машина(Image) ехала на его поверхности...


← →
Mihey ©   (2004-01-09 14:05) [8]

Можно, но не так нужно. Ты пытаешься сделать игру просто набросав компонентов. Это не подход. В конце концов у тебя всё начнёт тормозить по страшному. Тебе уже сейчас приходится использовать DoubleBuffered. Почитай статьи на сайте DelphiGFX, в своё время я по ним учился.


← →
Zak3D[@Tm] ©   (2004-01-09 15:12) [9]

Ладно, попробую, но не в этой игре, сейчас я просто хочу, чтобы получилась простенькая гоночка, ну так сказать для набора опыта. ;)


← →
Zak3D[@Tm] ©   (2004-01-09 19:51) [10]

Кто-нибудь может подсказать как поверх флэшевского ролика заставить Image двигаться?



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

Скачать: CL | DM;



Память: 0.48 MB
Время: 0.025 c
8-1078499463
artix
2004-03-05 18:11
2004.05.23
крутящаяся земля


6-1080884762
vasil
2004-04-02 09:46
2004.05.23
Использование Компонента WebBrowser


14-1083704296
11111ffghfghfg
2004-05-05 00:58
2004.05.23
Зачем разработчики Делфи сделали TDAtaSource?


14-1083562041
Думкин
2004-05-03 09:27
2004.05.23
С днем рождения! 2 мая


1-1084204215
dnsokol
2004-05-10 19:50
2004.05.23
Менюшка элементов aka Outlook




   Наверх