Flash AS3 动态添加子项。命名它们并调用每个分开的问题

Posted

技术标签:

【中文标题】Flash AS3 动态添加子项。命名它们并调用每个分开的问题【英文标题】:Flash AS3 dynamically added children . Problem with naming them and calling each separated 【发布时间】:2011-05-24 01:41:02 【问题描述】:

在我将每个孩子动态添加到舞台后,我需要访问它们,但我无法弄清楚如何。

点击它会将图像添加到舞台上,我需要使用 for() 一次使它们发光一个,但我不知道如何用自己的名称(name + i)命名它们以便稍后访问它们。

提前谢谢你

stage.addEventListener(MouseEvent.MOUSE_DOWN, clicky);
var i = 1; 
function clicky(event:MouseEvent):void

    i++;
    var fl_MyInstance:LibrarySymbol = new LibrarySymbol();
    addChild(fl_MyInstance);


    var myStageX:Number = Math.round(event.stageX);
    var myStageY:Number = Math.round(event.stageY);

    fl_MyInstance.x = myStageX;
    fl_MyInstance.y = myStageY;

        if(myStageX<150)
            fl_MyInstance.scaleX = fl_MyInstance.scaleY = 1-(myStageX/300);
        else
            fl_MyInstance.scaleX = fl_MyInstance.scaleY = 0.5;
            

编辑: 谢谢您的回答 。考虑到我想让它们稍后可移动,我将尝试使用数组来完成。 该项目的重点是在舞台上创建星星,您可以在其中单击并让一个点从一颗星星移动到另一颗星星,使它们在击中它们时发光。

【问题讨论】:

【参考方案1】:

如果您以后需要通过名称访问它们,您可以通过命名符号来实现:

...
var fl_MyInstance:LibrarySymbol = new LibrarySymbol();
fl_MyInstance.name = "symbol_" + i;
addChild(fl_MyInstance);
...

我会将它们添加到数组或向量中。这样,以后就可以轻松访问它们。处理它们时也很好。

...
var fl_MyInstance:LibrarySymbol = new LibrarySymbol();
_symbolList.push(fl_MyInstance)
addChild(fl_MyInstance);
...

【讨论】:

+1。我这样做的方式。如果 Vectors 让您投赞成票,请提及其用途。【参考方案2】:

您可以使用 getChildren 在数组中访问它们。像这样的东西应该适合你:

var children:ArrayCollection = this.getChildren();

foreach(var child:LibrarySymbol in children)

...do whatever

如果您想单独访问它们,您可以使用 getChild 或 getChildAt 或类似的东西。对动态数据使用命名约定可能是最难的方法。

点击此处了解更多信息:http://livedocs.adobe.com/flex/3/html/help.html?content=05_Display_Programming_08.html

【讨论】:

以上是关于Flash AS3 动态添加子项。命名它们并调用每个分开的问题的主要内容,如果未能解决你的问题,请参考以下文章

从 AS3 文件动态添加 Flash 组件到舞台

删除所有数组影片剪辑上的子项

Flash AS3 中的本机 MC 标识符

动态对象初始化 As3

flash AS3.0中如何每间隔一段时间后调用一次之前定义好的函数

Flash AS3 - AddChild 超出精灵范围