Дочерний параметр Flash AS3 должен быть ненулевым - PullRequest
0 голосов
/ 08 июня 2011

У меня есть эта ошибка, в которой у меня есть сцена главного меню, сцена параметров и сцена игры.У меня есть внешний файл, который содержит все необходимые переменные между сценами.В игре есть изображение воды на заднем плане, которое является чисто декоративным и ничего не делает, единственный раз, когда я использую его в коде, это когда я перемещаю его назад, чтобы другие платформы могли быть расположены сверхуоб этом с помощью кода:

setChildIndex(gfxWater, 1);

Раньше это работало до того, как я поместил сцену параметров, и до сих пор работает, при условии, что я не иду в сцену параметров.Даже если я ничего не коснусь в сцене параметров, просто переход туда заставляет эту строку выдавать ошибку «Параметр Child должен быть ненулевым».Я пытался отследить 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");

Любая помощь по этому вопросу будет принята с благодарностью.Также просто для справки я использую AS3 на CS3 (извините, моя школа немного устарела).Заранее спасибо!

Ответы [ 2 ]

0 голосов
/ 08 июня 2011

Вместо того, чтобы перетаскивать его из библиотеки, почему бы не добавить его с кодом?Таким образом, вы знаете, что существует правильная сфера.

Вам нужно будет зайти в свойства видеоклипа «Водопад» в библиотеке, установить для него «Экспорт для ActionScript» и присвоить ему имя (предположим, «WaterFall»).Затем:

var waterfall:WaterFall = new WaterFall();
this.addChildAt(waterfall,0);

Теперь вам не нужно снова настраивать его глубину, потому что он находится на глубине дна, и над ним будут добавляться любые другие объекты, если только они сами не нацелены на глубину 0.

0 голосов
/ 08 июня 2011

Это ошибка, которую вы получите, если попытаетесь это сделать:

Поскольку вы не предоставили никакого кода, который показывает, как добавляются ваши объекты и т. Д., Трудно определить, где именно в приложении находится ваша проблема;все, что я вижу выше, мне кажется нормальным.

...