首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何查找和释放glScene对象...?

如何查找和释放glScene对象...?
EN

Stack Overflow用户
提问于 2013-04-19 14:00:32
回答 1查看 563关注 0票数 0

我写了这段代码来动态创建led

代码语言:javascript
复制
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组件...

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-19 23:28:39

释放对象的显而易见的方法是简单地调用它们的Free方法,就像释放任何其他对象一样。显示的代码创建了许多对象,因此您需要某种方法来释放所有对象;只有最近创建的对象仍在fled变量中。天真的解决方案就是在某些容器中保存这些对象的列表,比如TObjectList。然后遍历容器并释放其内容。

不过,您可能不需要单独的容器。您传递给sprites的构造函数的owner参数维护着它拥有的所有东西的列表。您可以遍历它的Components数组,就像您可以遍历TComponent的任何其他后代一样。

最后,由于您将分配所有对象的Name属性,因此可以调用Dummy_Sound.FindComponent根据其名称查找每个sprite组件。(如果您不是按名称搜索这样的动态分配的组件,那么就没有理由首先指定Name属性。)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16098188

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档