2011-04-08 60 views
2

另一天另一个问题unfortunately-这段代码的最后一行是罪魁祸首:错误2006年提供的索引超出范围

    uiBar = new mcUiBar(); 
     uiBar.x=-15; 
     uiBar.y=-5; 
     addChildAt(uiBar, numChildren-1); 

现在我研究,所以我知道它有什么用的阵列比任何东西都大,但我没有搞清楚。我很难过。我很感谢你的帮助。干杯

回答

4

的超出范围的错误那应该抛出一个错误基本上是说,你提供的索引值“超出范围“的显示对象容器中的索引数组。可接受的范围是从0n+1,其中n是最高的儿童指数。另一种说法是0numChildren。所以乔治是对的,你会遇到问题numChildren - 1 = -1

如果您要将子项添加到下一个图层图层中,请使用上面的if语句。但是,如果您只是想将其添加到顶层,则应使用addChildAt(child, numChildren)addChild(child)这些是同义词。

+0

是Mims ...感谢您的澄清。我是新来的所有这btw ...并感谢您分享您的知识!我也学习Java,但我更喜欢动作3.0大声笑。 – londonbird 2011-04-12 02:39:46

1

代码太少,但最后一行: addChildAt(uiBar, numChildren-1);似乎是问题所在。

如果还没有添加子项会发生什么情况(numChildren为0)? 因为你想在深度/指数加uiBar -1

尝试addChildAt(uiBar, numChildren > 0 ? numChildren-1 : 0);

+0

Flash CS5喜欢你的代码!在我解决了这个问题之后(我认为我用上面的代码解决了这个问题),我得到了错误,它根本不喜欢if语句并且不得不删除它,但是你持续地努力解决这个Index Out Bounds错误。干杯x现在我必须清除这个1009错误lol – londonbird 2011-04-08 11:32:28

+0

奇怪的...?只是一个紧凑的if/else。 Goodluck与1009(hunch:检查null实例)!另外,你可能会发现这个网站很方便:http://www.actionscripterrors.com/(http://www.actionscripterrors.com/?s=1009&searchsubmit=Find) – 2011-04-08 11:35:59

+0

@londonbird addChildAt(uiBar,numChildren> 0?numChildren- 1:0);在显示列表的顶部添加uiBar,与addChild(uiBar)相同。为什么在这种情况下需要addChildAt()? – 2011-04-08 21:16:44