我在重装SWFS时遇到了一个奇怪的问题。 我开始加载我的SWF:
var req:URLRequest = new URLRequest( "RegionalIntro.swf" );
req.method = URLRequestMethod.POST;
req.data = true; // POST requests require non-null data
introSWF = new Loader();
introSWF.load(req);
addChild(introSWF);
然后,一旦我完成,我卸载:
removeChild(introSWF);
introSWF.unloadAndStop(true);
现在,当我想重新加载SWF时,我再次运行第一段代码,我收到此错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
我无法解决为什么第二次加载而不是第一次加载的原因。它应该是一样的? 这是在Windows Projector .exe文件中完成的,它将作为kiosk应用程序运行。
编辑:
at com.company.THPassport.exRegional::exRegionalIntro/skipTablet()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.company.THPassport.exRegional::exRegionalLoader/userLoaded()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at com.company.THPassport.utilities.DB::user/loadUserData()
at com.company.THPassport.utilities.DB::user/checkExistingUserLoadedXML()
at flash.events::EventDispatcher/dispatchEventFunction()
at flash.events::EventDispatcher/dispatchEvent()
at flash.net::URLLoader/onComplete()
据我所知,从这里收到错误:
currentUser = e.data;
maxspeechB.parent.removeChild(maxspeechB);
maxspeechA.parent.removeChild(maxspeechA);
wallstageA.parent.removeChild(wallstageA);
tabletfalls.parent.removeChild(tabletfalls);
tabletvanishes.parent.removeChild(tabletvanishes);
wallfills.alpha = 0;
if (currentUser.getCompleteAreas() == 1) {
wallfills.gotoAndStop(40);
} else if (currentUser.getCompleteAreas() == 2) {
wallfills.gotoAndStop(80);
} else if (currentUser.getCompleteAreas() == 3) {
wallfills.gotoAndStop(120);
}
wallstageB.alpha = 1;
Tweener.addTween(wallfills,{ alpha:1, time:1, transition: "linear", onComplete:dropSignpost});
我无法解决的问题是为什么第一次有效,但重新加载后却不起作用?
EDIT2:图表变粗,我可以通过使用try / catch块包围堆栈跟踪顶部函数中的所有代码来捕获错误。我跟踪错误及其相同,奇怪的是所有代码都按预期执行。一切正常,抛出错误......很奇怪!我不想这样离开它而不知道它为什么这样做......
答案 0 :(得分:1)
尝试向loader.contentLoaderInfo
添加完整的事件侦听器,并在事件侦听器处理程序中执行loader.load
下面的所有内容(如addChild(introSWF);
)。即使不是必需的,它也可以帮助您防止尝试使用尚未加载的对象的情况。
答案 1 :(得分:0)
Ben - 这个错误还有第二行吗?它可能会告诉您错误是由“RegionalIntro.swf”抛出的,而不是您的包装swf。
SWF可能会发生与时间相关的事情。换句话说 - 它可能会利用一些需要在被调用之前加载/初始化的资产,有时它还没有准备好。