현재 블록 (3D 입방체)을 클릭 했으므로 하나를 클릭하면 그 위에 다른 블록이 생성됩니다. like so절차가 완료 될 때까지 마우스 클릭을 비활성화하십시오.
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에서 할 수있는 일인가요?
감사 글렌 물론
''cubeClick : = nil;'및'CubeClick : = OldCubeClick; '에 "실제 매개 변수가 충분하지 않습니다"라는 오류 메시지가 나타납니다. –
좋아, 그래서'CubeClick'을 실행하기 위해 새끼'onclick'을 설정하고 큐브 클릭에서'CubeClick'을 nil로 설정하는'HandleCubeClick'을 실행하도록 지시합니다. 아마도'onClick'을 nil로 설정해야합니까? –
@Glen : 내 잘못. 게시 한 코드를 사용해보십시오 (첫 번째 단락의 편집 내용을 확인하십시오). –