我将此代码写入动态创建led
var
fLed: Tglhudsprite;
i,fImgSnapNum: integer;
............
for i := 0 to fImgSnapNum - 1 do
begin
fLed := TGLHUDSprite.CreateAsChild(MainForm.Dummy_Sound);
fLed.Name := 'fLed' + IntToStr(i);
fled.Material.MaterialLibrary := MatLib;
fLed.Material.LibMaterialName := 'led';
fLed.Width := fLed.Material.GetActualPrimaryTexture.Image.Width;
fLed.Height := fLed.Material.GetActualPrimaryTexture.Image.Height;
fled.SetSize(18,18);
fled.Position.X := 530 + (i * 30);
fled.Position.Y := 600;
fled.Visible := true;
end;
如何找到并释放fLed glscene对象......?
谢谢...... 我使用delphi7和GLScene组件......
答案 0 :(得分:2)
释放对象的显而易见的方法就是调用他们的Free
方法,就像释放任何其他对象一样。显示的代码会创建许多对象,因此您需要通过某种方式释放所有对象;只有最近创建的单个对象仍然在fled
变量中。对此的简单解决方案就是在某个容器中保留这些对象的列表,例如TObjectList
。然后迭代容器并释放其内容。
但是,您可能不需要单独的容器。传递给sprite的构造函数的owner参数维护着它拥有的所有东西的列表。您可以对其Components
数组进行迭代,就像使用TComponent
的任何其他后代一样。
最后,由于您要为所有对象分配Name
属性,因此可以调用Dummy_Sound.FindComponent
按名称查找每个精灵组件。 (如果你不按名称搜索这些动态分配的组件,那么就没有理由首先分配Name
属性。)