2013-08-16 2 views
0

Имея только ошибки сегодня! Было бы неплохо получить немного помощи с этим.Ошибка # 2007: Параметр child должен быть не нулевым

Я вызываю внешние дочерние swfs для приложения AIR; SUPER SIMPLE - вызов их кнопкой и удаление их с помощью кнопки «домой», вот и все. Но я получаю эти ошибки, и я не могу публиковать, даже тест, без сбоев всей системы. Пожалуйста помоги! Я застрял на этом, буквально, целыми неделями!

это ошибка:

TypeError: Error #2007: Parameter child must be non-null. 
at flash.display::DisplayObjectContainer/removeChild() 
at pocketDinos_fla::MainTimeline/fl_ClickToGoToAndStopAtFrame_20_1() 
[pocketDinos_fla.MainTimeline::frame162:18] 
Test Movie terminated. 

И это то, что я предполагаю, что вызывает проблему на главной временной шкале (все это код на основной временной шкале):

stop(); 

//home button 

button_home.addEventListener(MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_01_1,false,0,true); 

function fl_ClickToLoadUnloadSWF_01_1(event:MouseEvent):void 
{ 
removeChild(fl_ProLoader_01); 
fl_ProLoader_01.unloadAndStop(); 
fl_ProLoader_01 = null; 
} 

button_home.addEventListener(MouseEvent.CLICK,  
fl_ClickToGoToAndStopAtFrame_01_1,false,0,true); 

function fl_ClickToGoToAndStopAtFrame_01_1(event:MouseEvent):void 
{ 
removeChild(fl_ProLoader_01); 

} 
button_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds_01_1,false,0,true); 

function fl_ClickToStopAllSounds_01_1(event:MouseEvent):void 
{ 
SoundMixer.stopAll(); 
} 

button_home.addEventListener(MouseEvent.CLICK,  
fl_ClickToGoToAndStopAtFrame_01_2,false,0,true); 

function fl_ClickToGoToAndStopAtFrame_01_2(event:MouseEvent):void 
{ 
gotoAndStop("home"); 
} 

//back to time period button 

back_to_triassic.addEventListener(MouseEvent.CLICK,  
fl_ClickToLoadUnloadSWF_01_2,false,0,true); 

function fl_ClickToLoadUnloadSWF_01_2(event:MouseEvent):void 
{ 
removeChild(fl_ProLoader_01); 
fl_ProLoader_01.unloadAndStop(); 
fl_ProLoader_01 = null; 
} 

back_to_triassic.addEventListener(MouseEvent.CLICK, 
fl_ClickToGoToAndStopAtFrame_01_3,false,0,true); 

function fl_ClickToGoToAndStopAtFrame_01_3(event:MouseEvent):void 
{ 
removeChild(fl_ProLoader_01); 

} 
back_to_triassic.addEventListener(MouseEvent.CLICK,  
fl_ClickToStopAllSounds_01_2,false,0,true); 

function fl_ClickToStopAllSounds_01_2(event:MouseEvent):void 
{ 
SoundMixer.stopAll(); 
} 

back_to_triassic.addEventListener(MouseEvent.CLICK,  
fl_ClickToGoToAndStopAtFrame_01_4,false,0,true); 

function fl_ClickToGoToAndStopAtFrame_01_4(event:MouseEvent):void 
{ 
gotoAndStop("TRI_home"); 
} 


//start button 

start_button_TRI_coelophysis.addEventListener(MouseEvent.CLICK, 
fl_ClickToLoadUnloadSWF_01_3,false,0,true); 

import fl.display.ProLoader; 
import flash.events.Event; 

var fl_ProLoader_01:ProLoader; 

function fl_ClickToLoadUnloadSWF_01_3(event:MouseEvent):void 
{ 
if(fl_ToLoad_01) 
{ 
    fl_ProLoader_01 = new ProLoader(); 
    fl_ProLoader_01.load(new URLRequest("dinofilms/triassic_coelophysis.swf")); 

fl_ProLoader_01.contentLoaderInfo.addEventListener(Event.COMPLETE,onComplete_01) 
    addChild(fl_ProLoader_01); 
    fl_ProLoader_01.x = 0; 
    fl_ProLoader_01.y = 144; 
} 
else 
{ 
    if(fl_ProLoader_01!=null) { 
     removeChild(fl_ProLoader_01); 
     fl_ProLoader_01.unloadAndStop(); 
     fl_ProLoader_01 = null; 
    } 
} 
fl_ToLoad_01 = !fl_ToLoad_01; 

} 

function onComplete_01(e:Event):void { 
e.currentTarget.content.addEventListener(Event.ENTER_FRAME,OEF_01); 
} 

function OEF_01(e:Event):void { 
if(e.currentTarget.currentFrame==e.currentTarget.totalFrames) { 
    e.currentTarget.stop(); 
    e.currentTarget.removeEventListener(Event.ENTER_FRAME,OEF_01); 

    removeChild(fl_ProLoader_01); 
    fl_ProLoader_01.unloadAndStop(); 
    fl_ProLoader_01 = null; 
} 
} 
+0

проверить http://stackoverflow.com/questions/5533019/typeerror-error-2007-parameter-child-must-be-non-null-at-flash-displaydisp и http://stackoverflow.com/questions/ 4573282/typeerror-error-2007-parameter-child-must-be-non-null –

+2

um, это, кажется, код в кадре 1, и, учитывая ваши имена автоматически генерируемых функций, ваша функция, которая дает вам проблемы, находится в кадре 20 Найдите его и разместите его код, пожалуйста. – Vesper

ответ

0

В ваш function fl_ClickToGoToAndStopAtFrame_01_1 вы говорите removeChild(fl_ProLoader_01);, но вы также называете это function fl_ClickToLoadUnloadSWF_01_1. Обе функции назначаются одной и той же MovieClip/Button, поэтому она даст ошибку, что она равна нулю, в строке 18, где вы снова вызываете removeChild на той же MovieClip/Button.

+0

Большое спасибо, я попробую! –

+0

ОК, я думаю, что я уже на полпути ... Я очистил код, чтобы «removeChild» упоминался только один раз за кнопку. Тем не менее, я все еще получаю сообщение об ошибке «Ошибка # 2007: параметр должен быть не нулевым». В основном, я пытаюсь удалить ребенка, который я никогда не загружал (но он МОЖЕТ быть загружен, если пользователь нажал кнопку «Пуск»). –

+0

Что мне действительно нужно, это своего рода фраза «если-то». Поэтому он сделал бы что-то вроде этого: «Нажмите эту кнопку, чтобы перейти к этому фрейму. Если там есть ребенок, выгрузите его. Если там нет ребенка, забудьте, что я когда-либо упоминал об этом». Можно ли отправить этот маленький фрагмент? Я был бы так благодарен !! Мне понадобится также термин, определяющий ребенка, если это возможно (я не кодер, как вы уже наверняка догадались). БЛАГОДАРЯ!! –

0

Я думаю, что это было решено!

stop(); 

//home button 

button_home.addEventListener(MouseEvent.CLICK,  
fl_ClickToGoToAndStopAtFrame_01_1,false,0,true); 
function fl_ClickToGoToAndStopAtFrame_01_1(event:MouseEvent):void 
{ 
if(fl_ProLoader_01 && fl_ProLoader_01.stage){ 
fl_ProLoader_01.parent.removeChild(fl_ProLoader_01);} 
gotoAndStop("home"); 
} 


button_home.addEventListener(MouseEvent.CLICK, fl_ClickToStopAllSounds_01_1,false,0,true); 
function fl_ClickToStopAllSounds_01_1(event:MouseEvent):void 
{ 
SoundMixer.stopAll(); 
} 



//back to time period button 


back_to_triassic.addEventListener(MouseEvent.CLICK,  
fl_ClickToGoToAndStopAtFrame_01_3,false,0,true); 
function fl_ClickToGoToAndStopAtFrame_01_3(event:MouseEvent):void 
{ 
if(fl_ProLoader_01 && fl_ProLoader_01.stage){ 
fl_ProLoader_01.parent.removeChild(fl_ProLoader_01);} 
gotoAndStop("TRI_home"); 
} 

back_to_triassic.addEventListener(MouseEvent.CLICK,  
fl_ClickToStopAllSounds_01_2,false,0,true); 
function fl_ClickToStopAllSounds_01_2(event:MouseEvent):void 
{ 
SoundMixer.stopAll(); 
} 

Однако, я все еще имею проблему, что дочерние файлы не загружаются на самом устройстве - странное - они нагружают штраф на «тест» экспорт, но не тогда, когда я публикую на устройство (в данном случае ИОС). У кого-нибудь есть идеи?

+0

Этот код для загрузки фильмов - это то, что беспокоит меня прямо сейчас; он отлично работает в окне test/debug/simulator, но NONE из фильма загружается на устройство: –

+0

// кнопка запуска start_button_TRI_coelophysis.addEventListener (MouseEvent.CLICK, fl_ClickToLoadUnloadSWF_01_3, false, 0, true); импорт fl.display.ProLoader; импорт flash.events.Мероприятие; var fl_ProLoader_01: ProLoader; –

+0

(ЧАСТЬ II кода) // Эта переменная отслеживает, хотите ли вы загрузить или выгрузить SWF var fl_ToLoad_01: Boolean = true; функция fl_ClickToLoadUnloadSWF_01_3 (событие: MouseEvent): пустота { \t, если (fl_ToLoad_01) \t { \t \t fl_ProLoader_01 = новый ProLoader(); \t \t fl_ProLoader_01.load (новый URLRequest ("dinofilms/triassic_coelophysis.swf")); \t \t fl_ProLoader_01.contentLoaderInfo.addEventListener (Event.COMPLETE, onComplete_01) \t \t AddChild (fl_ProLoader_01); \t \t fl_ProLoader_01.x = 0; \t \t fl_ProLoader_01.y = 144; \t} \t еще –

Смежные вопросы