В настоящее время у меня есть блоки (3d кубы), когда вы нажимаете на один, это создаст еще один блок поверх него. напримерОтключить щелчок мышью до завершения процедуры
procedure TForm2.cubeClick(sender: TObject);
var
cube: Tcube;
begin
cube := Sender as Tcube;
if setblocks then
begin
totalblocks := totalblocks +1 ;
CreateCube[totalblocks]:=tcube.Create(self);
CreateCube[totalblocks].Visible := true;
CreateCube[totalblocks].Name := 'cubename'+inttostr(totalblocks);
CreateCube[totalblocks].Position.x := cube.Position.X;
CreateCube[totalblocks].Position.Y := cube.Position.y;
CreateCube[totalblocks].Position.Z := cube.Position.Z -1;
CreateCube[totalblocks].Material.Texture.CreateFromFile(gamedir+'\pics\'+blocktype);
CubeData[totalblocks] := blocktype;
CreateCube[totalblocks].Material.Lighting := false;
CreateCube[totalblocks].Material.Modulation := TTextureMode.tmReplace;
CreateCube[totalblocks].Parent := viewport3d1;
CreateCube[totalblocks].OnClick := cubeClick;
CreateCube[totalblocks].OnMouseDown := mousedown;
end;
label2.Text := inttostr(10000 - totalblocks);
end;
Проблема, с которой я столкнулся, - это если я нажимаю достаточно быстро, он перестает добавлять блок, неуверенный, почему. но я думаю, что если бы я мог отключить щелчок мыши, пока вся эта процедура не будет выполнена, тогда это позаботится об этом. Это то, что вы можете сделать в firemonkey, кто-нибудь знает как?
Благодаря Glen
Я получаю ошибку «недостаточно фактических параметров» на 'cubeClick: = nil;' и 'CubeClick: = OldCubeClick;' любая идея? –
ok, поэтому я устанавливаю детенышей 'onclick' для запуска' CubeClick', а в кубе щелкнуть его, чтобы он запускал 'HandleCubeClick', который устанавливает' CubeClick' в nil, может быть, он должен установить 'onClick' в nil? –
@ Glen: Моя вина. Попробуйте код, который я разместил (обратите внимание на изменения в первом абзаце). –