ReferenceError:错误 #1065:未定义变量 JSON

Posted

技术标签:

【中文标题】ReferenceError:错误 #1065:未定义变量 JSON【英文标题】:ReferenceError: Error #1065: Variable JSON is not defined 【发布时间】:2011-11-03 21:06:19 【问题描述】:

我快要爆炸了,想弄清楚如何解决这个问题,所以在我这样做之前,也许你可以帮助我?我正在 flash builder 4.5.1.21328 中的 flash player 11 下开发游戏,我想尝试新的东西,例如原生 JSON 支持,但是当我尝试在 Flash Builder 中启动应用程序时,我得到了这个:

ReferenceError: Error #1065: Variable JSON is not defined.

我添加了编译器参数:-swf-version=13,我已经下载了 flash player 11 playerglobal.swc 并将它放在 flash builder 目录中的位置,所以我现在卡住了.. 如何修复这个烦人的事情并在 flash builder 中启用 flash player 11?

当我为我的项目使用“生成 html 包装文件”选项并在浏览器中运行应用程序时,它运行顺利。

【问题讨论】:

【参考方案1】:

我也遇到过这个问题,花了很多时间试图解决这个问题,直到找到适合我的解决方案。我在 Adob​​e 论坛的这篇文章中对此进行了解释:http://forums.adobe.com/message/3954031

我希望这会有所帮助。请让我知道这是否也适合您。


编辑:似乎 Adob​​e 论坛现在已经关闭,所以我在这里发布我的答案:


好吧,经过多次修补,我想我终于找到了一种方法来让它工作!

我创建了一些经过修改的 XML 文件,其中包含 AIR 3.0 所需的配置文件和 经过多次尝试,终于成功了!

我在这里上传了它们: http://www.mediafire.com/?d5e761frl5px4

这些是使 AIR 3.0 正常运行所需的步骤:

    将三个文件全部放入文件夹“c:\Program Files (x86)\Adobe\Adobe Flash CS5.5\Common\Configuration\Players”

    然后,确保您已将 AIR 3.0 SDK 解压缩到文件夹“c:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR3.0” 请勿按照“Overlay AIR SDK”文章 (http://kb2.adobe.com/cps/908/cpsid_90810.html) 的建议覆盖“AIR2.6”文件夹的内容。它给我带来了问题。 最好使用不同的单独文件夹。我的 XML 文件指向那个新的“AIR3.0”文件夹。

    在文件夹“c:\Program Files (x86)\Adobe\Adobe Flash CS5.5\Common\Configuration\ActionScript 3.0”中创建一个名为“AIR3.0”的新文件夹。在该文件夹中,复制位于“c:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR3.0\frameworks\libs\air”的文件“airglobal.swc”。

    最后,您必须将文件“descriptor-sample.xml”保留在 "c:\Program Files (x86)\Adobe\Adobe Flash CS5.5\AIR2.6\samples" 文件夹, 但将 xmlns 属性更改为“http://ns.adobe.com/air/application/3.0”

是的,即使 SDK 已放入 AIR3.0,您也必须在 AIR2.6 文件夹中进行更改。这是因为发布设置在 Adob​​e Flash 中的工作方式。它被硬编码到 DLL 中,因此无法更改。不是很直观。

我认为 AIR SDK 安装应该比这更简单! 我知道 Adob​​e AIR 是为开发人员设计的,而不是为最终用户设计的,但仍然, 所有这些没有很好记录的升级程序都让人头疼。 我在这(超过半天)上浪费了很多时间,应该是什么 直接升级!

Adobe 应该制作一个 SDK 安装程序,这样我们就不必修补所有这些 每次发布新更新时都容易出错!

嗯,我希望这些 XML 文件对某些人有用并避免进一步的挫折。


编辑 2:我意识到 ios 的 XML 无法正常工作。我上传了一个新的 iOS_AIR3_0.xml 文件,替换了上面链接的同一个 MediaFire URL 中的旧文件(您会看到它的日期比其他文件更新)。

旧 XML 的问题在于它的 不是“AIR for iOS”(我写了“AIR 3.0 for iOS”以区别于旧版本)。 Adobe Flash CS5.5 似乎在寻找这个字符串。如果是“AIR for iOS”,则 Flash 在“AIR for iOS 设置”窗口中显示适用于 iOS 的相应选项,但如果该字符串不是“AIR for iOS”,则显示的设置是 AIR 桌面设置。现在唯一的问题是您不能同时存在 2 个 iOS 选项(2.7 和 3.0),因此您必须将“AiriPhone.xml”文件移出该文件夹才能使用适用于 iOS 的 AIR 3.0 的新 XML。

所以您是根据字符串的内容而不是 ID 来更改应用程序的行为?!本地化呢?我没有尝试过 Flash CS5.5 的本地化版本,但我怀疑该字符串无法翻译,否则设置窗口将无法工作。

因此 AIR SDK 在其 DLL 中有一些硬编码的文件夹名称,Flash Pro CS5.5 根据在菜单中显示给用户的英文字符串更改 AIR 设置行为,而不是使用 ID 或任何其他变量...这有多笨拙?

【讨论】:

【参考方案2】:

设置编译器运行时选项:

-swf-version=13

【讨论】:

【参考方案3】:

我遇到了同样的问题,而且我相信您在浏览器中使用的 flash 播放器版本比您在使用 flash builder 调试时使用的版本更新(您使用的是独立的 flash 播放器投影仪) 10.2 或更低)

例如,我在 flash develop 中运行了类似的代码并不断提出这个烦人的错误,这是因为我使用的是 fp 10.2 并且目标是 fp 11.1

【讨论】:

以上是关于ReferenceError:错误 #1065:未定义变量 JSON的主要内容,如果未能解决你的问题,请参考以下文章

Actionscript 3 - 错误 #1065:未定义变量 ArenaMain

PhoneGap 错误 - “未捕获的 ReferenceError:cordova 未定义”

错误“未捕获的 ReferenceError:$ 未定义”[重复]

为啥我在 AngularJS 中收到错误“ReferenceError:未定义类别”?

DataTable 错误:未捕获的 ReferenceError:未定义 jQuery

我收到错误:fs.js:36 = primordials; ^ ReferenceError: 未定义原语