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
Flash 第二次重新加载SWF会出现错误_Flash_Actionscript 3_Actionscript_Flash Cs5 - Fatal编程技术网

Flash 第二次重新加载SWF会出现错误

Flash 第二次重新加载SWF会出现错误,flash,actionscript-3,actionscript,flash-cs5,Flash,Actionscript 3,Actionscript,Flash Cs5,我在重新加载主权财富基金方面遇到了一个奇怪的问题。 我从加载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(int

我在重新加载主权财富基金方面遇到了一个奇怪的问题。 我从加载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.
我不明白为什么我会在第二次加载时得到它,而不是第一次。应该是一样的吗? 这是在WindowsProjector.exe文件中完成的,它将作为一个kiosk应用程序运行

编辑:

据我所知,这是一个错误:

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块来捕获错误。我跟踪了错误,它是一样的,奇怪的是所有代码都按预期执行。一切正常,并抛出一个错误。。。非常奇怪!我不想在不知道它为什么要这样做的情况下就这样离开…

Ben-还有第二行错误吗?它可能会告诉您错误是由“RegionalIntro.swf”抛出的,而不是由包装器swf抛出的


有可能在SWF中发生了与时间相关的事情。换句话说,它可能会使用一些在调用之前需要加载/初始化的资产,有时它还没有准备好。

尝试将完整的事件侦听器添加到事件侦听器处理程序中的
loader.contentLoaderInfo
,并执行事件侦听器处理程序中的
loader.load
(如
addChild(introSWF);
)下面的所有操作。即使不是必需的,它也可以帮助您避免尝试使用尚未加载的对象的情况

你在重新加载SWF时运行完全相同的代码?我运行。它在一个函数中,用于加载介绍,所以我再次调用该函数。本,有几个问题。。。在代码的第5行中,为什么不从
var introSWF:Loader=new Loader()
(换句话说,您以前是否初始化过它?)开始呢?此外,您是否尝试过对代码的各个部分进行注释以查看它?您仍然会得到错误?这将帮助您确定是加载(还是卸载)导致了错误。最后,如果您实际上没有发送任何东西,为什么要使用POST方法?它在类的顶部初始化,因为我在几个函数中访问它。建议使用post方法来确保未缓存任何内容。我真的不明白它要做什么,但它没有损坏任何东西,所以我现在就把它放在那里。我不需要它吗?你在哪一行得到空对象引用?我添加了一个编辑。我展示的那个函数只有在加载的SWF表示它已添加到stage之后才被调用。跟踪我要删除的对象,或者我使用的属性显示它们在那里。我可能是以稍微向后的方式这样做的。(这是我拿起一本AS3书后的第一个大项目)我所做的是在doc类中为加载的SWF添加了一个eventlistener,用于added_to_STAGE,它会触发一个init函数,它会发送一个事件,告诉父SWF它已准备好数据,并从STAGE中删除某些内容。这和你用不同的方式说的是一样的吗?也只是试着加上,万一我做错了,我仍然收到错误…你做的基本上是一样的事情(因为加载程序只有在加载内容后才会将加载的内容添加到显示中),但肯定不是最佳做法:)好的,我会以正确的方式进行更新,谢谢。关于我的问题可能是什么,还有什么其他想法吗?我给你的最好建议是使用调试器,在你试图访问哪个对象时,准确地看到它是空的
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});