Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/flash/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 getChildIndex中固有的Flash错误_Actionscript 3_Flash_Debugging_Argument Error - Fatal编程技术网

Actionscript 3 getChildIndex中固有的Flash错误

Actionscript 3 getChildIndex中固有的Flash错误,actionscript-3,flash,debugging,argument-error,Actionscript 3,Flash,Debugging,Argument Error,我有这段代码,它工作得很好,但偶尔——只要Flash这么认为——它就会崩溃。以下是生成的调试文本: 错误#2025 结果显示:正确 多利=10 多利补充道 添加通用芯片 突出显示SH:[对象表面元素]10-[对象表面元素]-vex ArgumentError:错误#2025 请注意,“vex!”是对象vex的名称,它是一个TSprite(=精灵) 从调试文本中可以明显看出,错误发生在这里: debug += "\nHighlighting SH:" + String(sh); debug +=

我有这段代码,它工作得很好,但偶尔——只要Flash这么认为——它就会崩溃。以下是生成的调试文本:

错误#2025

结果显示:正确

多利=10

多利补充道

添加通用芯片

突出显示SH:[对象表面元素]10-[对象表面元素]-vex

ArgumentError:错误#2025

请注意,“vex!”是对象vex的名称,它是一个TSprite(=精灵)

从调试文本中可以明显看出,错误发生在这里:

debug += "\nHighlighting SH:" + String(sh);
debug += sh.corresponds.toString();
debug += "-" + String(sh.parent);
debug += "-" + String(sh.parent.name);
column = getChipColumn(vex.getChildIndex(sh)); // ERROR LINE ?!?
为非子对象调用getChildIndex时发生错误。但正如父母的名字所暗示的,sh是vex的孩子(vex!)。只有一个烦恼

另一个奇怪的事情是错误消息(e.message)只会产生: 错误2025 而字符串错误(如toString())会产生: ArgumentError:Error#2025

它不应该说得更像:

ArgumentError:Error#2025:提供的DisplayObject必须是调用者的子对象???

静态全局状态为。在这种情况下,您无法知道从静态数组中检索的sh对象是否与当前的“vex”对象有关

<> >而不是使用<代码> SureEngule跟踪已添加的所有实例,考虑您的<代码> VEX < /Cord>类公开了一个SureEngEnter数组(或者更好的是,vector)。如果这些是在阶段上构建的(我怀疑您是在静态地跟踪它们,因为您没有很好的“处理”时间线/阶段对象),那么您可以在构造函数中执行类似的操作:

public var surfaceElements:Array = []; function Vex() { super(); var loops:int = numChildren; for (var i:int=0; i<loops; i++) { var surface:SurfaceElement = getChildAt(i) as SurfaceElement; if (surface) { surfaceElements[surfaceElements.length] = surface; } } } 公共变量surfaceElements:Array=[]; 函数Vex(){ 超级(); 变量循环:int=numChildren;
对于(var i:int=0;iIt将表示如果在调试播放器中运行它,并且在弹出窗口或控制台中看到完整的堆栈跟踪(取决于您运行它的方式。看起来您的问题是您有一个返回所有shs的静态方法,我敢打赌,您的代码以某种方式滑入了一个sh,该sh不再显示在显示列表中,或者属于不同的父级,甚至可能是具有相同名称的不同实例。请查看debugger查看父级的内存地址与当前的vex。是的,我还可以检查父级==vex,不需要查看十六进制地址。我会的,并且会将结果发回这里。是的,你是对的。我正在创建一个新的“vex”,但静态数组:var shs:array=SurfaceElement.NumberToAllSH[dolly];包含对“旧的”表面元素属于旧的“烦恼”。你必须注意静态引用,如果你不手工操作,它们不会被破坏……你可以把你的评论变成答案,这样我就可以奖励它。 public var surfaceElements:Array = []; function Vex() { super(); var loops:int = numChildren; for (var i:int=0; i<loops; i++) { var surface:SurfaceElement = getChildAt(i) as SurfaceElement; if (surface) { surfaceElements[surfaceElements.length] = surface; } } }