我有一个“播放”Flash SWF文件的Windows窗体应用程序。我看到随机方法:FlashMethodInvocation Exception:System.AccessViolationException错误。输出只给我窗体应用程序的堆栈跟踪,而不是动作脚本,我相信真正的错误正在发生。
我的源代码也是swf,它全部用ActionScript 3编写,我使用flashbuilder来创建它。
Windows窗体应用程序是用C#编写的。 Windows窗体应用程序创建一个ShockWave ActiveX控件的实例,然后告诉它加载swf。通过actionscript中提供的外部接口,SWF和C#代码之间存在交互。
SWF动作脚本在崩溃前几个小时播放正常。不幸的是,当它冒泡到windows窗体应用程序时,actionscript堆栈跟踪不包含在错误中。
我想看看异常时动作脚本中发生了什么。任何想法如何找到actionscript堆栈跟踪?
马特
答案 0 :(得分:0)
我曾经处于类似于你的情况,我记得通过用“debuger”版本替换“常规”Flash Player来解决它。你说你正在使用播放器的ActiveX版本,所以
1)首先下载此文件:
Flash Player content debugger for Internet Explorer - ActiveX
2)安装它,然后导航到:“c:\ Windows \ SysWOW64 \ Macromed \ Flash \”,你应该找到一个名为“ FlashUtil * _ActiveX.dll ”的文件,刚刚更换的(检查文件的日期)。这是您刚刚安装的Flash播放器的调试版。
3)在Windows窗体应用程序中覆盖此文件(我假设您在应用程序中包含了Flash Player,而不是依赖于主机系统上可用的播放器,我不建议这样做。)
4)然后,在ActionScript项目中(在Flash Builder中)创建SWF的调试版(只需在“调试模式”下启动项目,然后在Windows窗体应用程序中复制生成的SWF文件。
5)保持调试器在FlashBuilder中运行,与Windows窗体应用程序交互,直到它产生RTE。您应该在Flash Builder中看到ActionScript错误的跟踪。当然,您可以像往常一样在Flash Builder中设置断点并进行调试。
您可能想要使用一种自动化形式来重复整个过程(我正在考虑ANT或Flash Builder的外部工具(这是正确的名称吗?) - 您甚至可以通过FB自动启动Windows应用程序,首先创建一个新的SWF文件并将其放在正确的文件夹中。)
希望这很清楚。
祝你好运!