我有一个的Adobe Flash 10的程序,在某些情况下冻结,但只有在Flash播放器的发布版本中运行时。使用调试版本,应用程序可以正常工作。调试版本只闪问题
什么是调试此类问题的最佳方法?我考虑在我的电脑上安装release player,并试图设置某种非图形化的输出方式(我猜有些方法可以编写日志文件或类似的东西?),但是我看不出有什么方法可以同时发布和发布反正安装调试版本:(
编辑:好的,我成功地取代我的版本的Flash播放器的发布版本,并没有冻结的......所以我知道到目前为止是什么:
Flash: Debug Release
Vista 32: works works
XP PRO 32: works* freeze
- 我给他们调试的球员,我不得不测试这个
嗯,看起来越来越不像我的代码中的错误,更像是播放器中的错误(在所有情况下为10.0.45.2)......至少id喜欢在它停下来的时候看到callstack。有没有办法做到这一点,而不要求他们安装各种零件,例如通过让闪存写出一个log.txt或类似于函数的“跟踪”功能,我可以在代码中插入问题?
EDIT2:我只是给了SWF到另一个人用XP 32位,同样的结果:(
EDIT3: 好,通过广泛使用flash.external.ExternalInterface.call的( “警报”,” .. “);我设法找到导致问题的确切线(我还改进了异常处理代码,而不是冻结它告诉我有一个”未处理“的异常)。现在的问题是地球上闪烁的问题在某些机器上释放播放器...
particles.push(p);
在所述平台上导致TypeError#1034。Particles is a Vecto河< Particle>,p是一个粒子。我的getQualifiedClassName测试,并得到:
的getQualifiedClassName(P)= ::粒子
的getQualifiedClassName(颗粒)= __AS3 __ VEC ::向量。 < ::粒子>
任何想法,为什么这是一个问题,以及如何使它工作?
EDIT4:
好,我似乎已经解决了这个。 Particle类只是一个简单的内部类,它位于操作脚本文件中的包{...}后面,使用它。我把它移到它自己的文件(particle.as)中,并在我的包中成为一个适当的公共类,并解决了问题。
也许它是一个闪存错误,或者我错过了有关不使用内部类的向量或东西的备忘录,但如果是这样的话,我会预期的东西或其他(无论是在编译时或调试运行时)禁止它明确地,例如“私人变量粒子:Vector。< Particle>;”中的一些错误线。如果我有机会,我想我会看看联系Adobe Flash团队关于这个或什么。
感谢您的帮助给调试技巧我的猜测是沿原线路问题:)
嗯,我知道什么时候在什么样的用户与应用程序做的条款冻结,其当按下某个按钮,但我不知道在哪里的代码冻结,看着我的代码不能看到它应该做的任何理由(它所做的一切就是创建一些对象,设置一些变量并在删除旧的Sprite时添加一个新的子对象),基本上所有的代码都已经运行正常在应用程序中取得这么大的进展...在代码中甚至没有任何循环可以让它陷入...... – 2010-06-07 16:29:02
我会看看那个调试器。它是否能够成功地从Flash插件的发布版本获取信息,因为obv在我的机器上使用调试版本,我拥有Flash Builder调试器,但正如我所说的,它在那里工作正常。 – 2010-06-07 16:30:37
是的,它可以与插件的发行版一起使用,但不如FB调试器强大。它只能与暴露于初始化它的范围的属性一起使用。 – 2010-06-07 16:41:26