0

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

这是简短的代码:

var screenPage:MovieClip;

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

我可以制作screenPage一个动态变量并在最后添加一个 1 ,然后在循环中添加一个 2 等等吗?

4

2 回答 2

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();

此外,您上面的代码每次都创建一个实例,但是因为您随后每次迭代都创建一个新实例并将其分配给相同的变量,而不会将其存储或添加到显示列表中......一次您创建一个新的,最后一个标记为垃圾收集。

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

于 2013-05-02T04:47:55.487 回答
1

screenPage只是对一件事的引用。在你的循环中,你一直在覆盖它,所以你最终会指向最后一个实例theFlagScreen......所有其他实例现在都丢失了。

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

于 2013-05-02T04:49:13.630 回答