我想在用戶在地圖上滾動圖像時顯示Map(myclass)提示。如果我做了一些簡單的事情,比如說提示說「怪物在這裏」,它就可以工作,但是我想要的是在提示中顯示所有怪物細節。當我這樣做時,提示永遠不會顯示出來,並且程序鎖定。也許它太多了?編輯提示鎖定程序
手續的OnMouseMove
procedure TBaseGameForm.HexMap1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
var
position:TPoint;
i : integer;
totalplayers : integer;
name : String;
Life,movement,magical1,magical2,Attack1,Attack2,Crit,Def : String;
begin
position := hexmap1.convertcoords(point(x,y),ptXY);
if FGamePlay.Locations.IndexOfName(inttostr(Position.x)+inttostr(Position.Y)) <> -1 then begin
if FGamePlay.ShowHints = true then
exit;
FGamePlay.ShowHints := true;
i:=1;
while i <= FGamePlay.NumberOfHostPlayers do
begin
if (FMyPlayers.player[i].Values['posx'] = inttostr(Position.X)) AND (FMYPlayers.player[i].Values['posy'] = inttostr(Position.Y)) then
begin
With FMyPlayers.player[i] Do begin
name := values['name'];
life := values['life'];
movement := values['move'];
magical1 := values['magical1'];
Attack1 := 'Magical: '+Magical1+' '+Values['attack1']+'-p'+values['Power1']+'/r'+Values['Range1']+' '+Values['Ticks1']+' Ticks';
magical2 := values['magical2'];
Attack2 := 'Magical: '+Magical2+' '+Values['attack2']+'-p'+values['Power2']+'/r'+Values['Range2']+' '+Values['Ticks2']+' Ticks';
Crit := values['crit'];
Def := 'Magic def : '+values['defm']+' Normal def : '+values['defn'];
end;
end;
end;
hexmap1.ShowHint := true;
hexmap1.Hint := 'Name: '+name+' Life: '+Life+' Move: '+Movement+ #13#10 +Attack1+ #13#10 +Attack2+ #13#10 +Def+ #13#10 +'Crit bonuse: '+crit;
end
else
Hexmap1.ShowHint := false;
FGamePlay.ShowHints := False;
end;
生病解釋它盡我所能和我試圖把它做的。它首先將x,y轉換成我地圖上的一個點(位置)。然後,它檢查一個名爲位置值的字符串列表,如果它發現某個位置值有怪物。
我增加了這個額外的部分,看看它是否有幫助,如果我有fgameplay.showhints = true,那麼不需要打開提示或更改var因爲地圖上的區域相同,一旦該區域發生變化(鼠標移開從怪物)然後fgameplay.showhints是錯誤的,現在需要新的數據,如果找到。 (不知道這是必要的,但聽起來不錯..)
所以現在它開始尋找數據添加到提示。 FMyPlayers.player [i]每一個都是一個持有不同項目值的字符串列表。
希望我明確這一點,我盡我所能。也就目前而言,它只是FMyPlayers,但也會有一個FTherePlayers,這將是另一個循環檢查我與客戶端玩家的數量。
任何問題或者如果有什麼不清楚請問。我的目標是弄清楚爲什麼它會一直凍結,也許不是我應該做點什麼? 歡呼 squills
嘗試在你的while循環中添加一個inc(i),你的值不會遞增,所以它鎖定在while內部。或者更好的是仍然使用for循環,因爲你已經知道了傳輸的次數。 – Dampsquid
完美!有時它的小事情,你想念:(再次感謝...讓它成爲答案和不贊成:D –
行將會做,有時是小事情最難發現。 – Dampsquid