循环中的as3动态变量

时间:2013-05-02 04:37:12

标签: actionscript-3 class loops dynamic variables

我需要screenPage var可供以后调用。我正在动态创建多个页面。问题是当我拨打screenPage.startDrag();时,它只会拖动最后一页。如何在名称中添加var或通过代码访问所有screenPages?

以下是代码:

var screenPage:MovieClip;

for(var p = 1; daTotalPages >= p; p++)
{
    screenPage = new theFlagScreen();
}

我可以让screenPage成为动态变量,并在结尾添加1,然后在循环中添加2,依此类推吗?

2 个答案:

答案 0 :(得分:3)

为什么不使用数组?

var pages:Array = new Array;

for(var p = 1; daTotalPages >= p; p++)
{
   var screenPage:MovieClip = new theFlagScreen();
   pages.push(screenPage)
}

现在你有一个包含所有实例的数组。

var myPage:MovieClip = pages[5] as MovieClip;
myPage.startDrag();

此外,您上面的代码是每次创建一个实例,但是由于您继续每次迭代创建一个新的实例并将其分配给同一个变量而不存储它或将其添加到显示列表中。 ..一旦你创建了一个新的,最后一个被标记为垃圾收集。

结果是只有你创建的LAST实例仍然存在,因为它是唯一一个有引用它的变量的实例。

答案 1 :(得分:1)

screenPage仅提及一件事。在你的循环中你随时都会覆盖它,所以你最终指向theFlagScreen的最后一个实例......所有其他实例现在都丢失了。

你应该遵循原型的建议并将这些实例存储在一个数组中,这样你就不会丢失它们。