0

我有一个“播放”Flash SWF 文件的 Windows 窗体应用程序。我看到随机 Method: FlashMethodInvocation Exception: System.AccessViolationException 错误。输出只给了我 windows 窗体应用程序的堆栈跟踪,而不是 actionscript,我相信真正的错误正在发生。

我也有 swf 的源代码,它都是用 ActionScript 3 编写的,我使用 flashbuilder 来创建它。

Windows 窗体应用程序是用 C# 编写的。Windows 窗体应用程序创建 ShockWave ActiveX 控件的实例,然后被告知加载 swf。SWF 和 C# 代码之间通过 actionscript 中提供的外部接口进行交互。

SWF 动作脚本在崩溃前几个小时都可以正常播放。不幸的是,当动作脚本堆栈跟踪冒泡到 Windows 窗体应用程序时,它不包含在错误中。

我想看看异常发生时动作脚本中发生了什么。有什么想法可以找到 actionscript 堆栈跟踪吗?

马特

4

1 回答 1

0

我曾经遇到过与您类似的情况,我记得通过将“常规”Flash Player 替换为“调试器”版本来解决它。你说你使用的是ActiveX版本的播放器,所以

1)首先下载这个文件:

用于 Internet Explorer 的 Flash Player 内容调试器 - ActiveX

2)安装它,然后导航到:“c:\Windows\SysWOW64\Macromed\Flash\”,在那里你应该找到一个名为“ FlashUtil*_ActiveX.dll ”的文件,它刚刚被替换(检查文件的日期)。这是您刚刚安装的 Flash 播放器的调试器版本。

3) 在您的 Windows 窗体应用程序中覆盖此文件(我假设您在应用程序中包含了 Flash Player,而不是依赖于主机系统上可用的播放器,我不建议这样做)。

4) 然后,在您的 ActionScript 项目中(在 Flash Builder 中)创建 SWF 的调试器版本(只需在“调试模式”下启动项目,然后将生成的 SWF 文件复制到您的 Windows 窗体应用程序中。

5) 保持调试器在 FlashBuilder 中运行,与您的 Windows 窗体应用程序交互,直到它产生 RTE。您应该会在 Flash Builder 中看到 ActionScript 错误的踪迹。当然,您可以在 Flash Builder 中设置断点并照常进行调试。

您可能想要使用一种重复整个过程的自动化形式(我在想 ANT 或 Flash Builder 的外部工具(这个名字对吗?)——您甚至可以让 FB 自动启动您的 Windows 应用程序,之后首先创建一个新的 SWF 文件并将其放在正确的文件夹中)。

希望这已经足够清楚了。

祝你好运!

于 2015-08-31T13:05:21.890 回答