我遇到了这个错误,我有一个主菜单场景,一个选项场景和一个游戏场景。我有一个外部文件,其中包含场景之间所需的所有公共变量。在游戏中,背景中有一张水的图片,纯粹是装饰性的,没有做任何事情,我在代码中使用它的唯一一次是当我将它移到后面时,所以其他平台可以放在顶部使用代码:
setChildIndex(gfxWater, 1);
这在我将选项场景放入之前曾经工作过,而且仍然如此,前提是我没有进入选项场景。即使我没有触摸选项场景上的任何内容,只需去那里会导致该行抛出“参数Child必须为非null”错误。我试图事先跟踪gfxWater,但只是得到了null。我只是将水拖到屏幕上创建它并给它实例名称gfxWater。我不明白它是如何为空的,它仍然存在,即使这条线断裂,它只是在其他一切之上。
在选项菜单中我没有用水做任何事情,我只是改变变量,比如是否播放音乐或音效,这样的东西。没有什么相对于水。我能想到的唯一可能导致问题的是我在选项场景中使用了自定义字体,所以我不得不在AS3中创建文本。在我转换回主菜单之前,我确保删除文本。那段代码在这里:
//This Removes The Text
for (m = 0; m < optionsTextArray.length; m++){
optionsTextArray[m].parent.removeChild(optionsTextArray[m]);
}
optionsTextArray.splice(0, optionsTextArray);
//This Hides The Images
soundFxCheck.parent.removeChild(soundFxCheck);
soundFxX.parent.removeChild(soundFxX);
musicCheck.parent.removeChild(musicCheck);
musicX.parent.removeChild(musicX);
codeCheck.parent.removeChild(codeCheck);
codeX.parent.removeChild(codeX);
//This Transitions To The Main Menu
gotoAndPlay("menuStart", "Main_Menu");
对此问题的任何帮助将不胜感激。也仅供参考我在CS3上使用AS3(对不起,我的学校有点过时了)。提前谢谢!
答案 0 :(得分:0)
如果你有效地尝试这样做,这是一个错误:
removeChild(null);
这意味着您通过removeChild()
解析的其中一个属性没有值。
因为您没有提供任何显示您的对象添加方式的代码等等,所以很难确定您的问题在应用程序中的确切位置;我上面看到的一切对我来说都是好的。
答案 1 :(得分:0)
而不是从库中拖动它为什么不用代码添加它?这样你知道它存在正确的范围。
您需要进入库中的瀑布movieclip的属性并将其设置为Export for Actionscript,并为其指定一个名称(假设为WaterFall)。然后:
var waterfall:WaterFall = new WaterFall();
this.addChildAt(waterfall,0);
现在您不需要再次调整其深度,因为它位于底部深度,并且将在其上方添加任何其他对象,除非它们专门针对深度0本身。