actionscript-3 - As3 - 如何使用代码检查 SWF 从哪个 IDE 运行?

标签 actionscript-3 flash flash-builder flash-cs5

我知道这对我来说有点奇怪,但这里有一些关于我为什么要这样做的背景故事:

我正在制作在线多人 Flash 游戏。我正在使用 flash builder 和 flash professional 来编写 as3 和处理图形。我也在运行一个开发服务器(通过 visual studio ultimate 中的 playerio)。我测试这个在线多人游戏的方法是从 flash professional 和 flash builder 运行一次 swf。它们都连接到完全相同的 action script 3 代码和 flash 影片剪辑(通过 swc 文件)。我非常喜欢这个设置,因为 flash pro 和 flash builder 都有自己的小输出区域,我可以分别看到每个用户的调试输出。

问题

虽然这两个 swf 运行的是完全相同的代码,但我希望它们的行为有所不同。例如,flash 专业版从以下位置获取对图像的引用:

_gameOverPopup = this["gameOverPopup"];

Flash Builder 用户是这样得到它的:

_gameOverPopup = new GameOverPopup;

还有许多其他差异。例如,我在每种情况下都通过硬编码用户名和密码来自动验证和登录不同的用户。所以现在我的代码看起来像这样:

if (inFlashBuilder) {
     // this only happens when debugging in Flash Builder
     authenticateWith("billyboy", "Secret123");
}
else {
     // this only happens when debugging in Flash Professional
     authenticateWith("joeshmoe", "password1");
}  

效果很好,但我在代码中手动更改了 inFlashBuilder 变量。我基本上只是在类(class)中名列前茅:

private var inFlashBuilder:Boolean = true;

每次编译前,我都必须手动将它从 true 更改为 false。哦,伙计,我希望系统中有一个方法或类似的方法可以用来控制这个标志变量。如果只是...

最佳答案

您需要使用编译器常量。 FlashPro 实际上已经在 IDE 方面设置了一个。您可以在 AS3 中按如下方式访问它(它会产生 true 或 false):

CONFIG::FLASH_AUTHORING

所以,你会想要这样做:

if (CONFIG::FLASH_AUTHORING) {
     // this only happens when debugging in Flash Professional
     authenticateWith("joeshmoe", "password1");
}
else {
     // this only happens when debugging in Flash Builder
     authenticateWith("billyboy", "Secret123");
} 

您需要在 Flash 构建器中设置相同的常量,但将值设置为 false。 在 flex-config.xml 中,添加:

<compiler> 
    <define append="true"> 
        <name>CONFIG::FLASH_AUTHORING</name> 
        <value>false</value> 
    </define>
</compiler>

请参阅此链接以了解有关如何在 Flash Builder 中执行此操作的更多信息: http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7abd.html

关于actionscript-3 - As3 - 如何使用代码检查 SWF 从哪个 IDE 运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24580041/

相关文章:

actionscript-3 - 声音播放延迟错误

actionscript-3 - 在套接字上使用readObject时出现“index is out of bounds”错误

actionscript-3 - Flash 右键单击​​与左键单击不同

windows - Internet Explorer 忽略 flash mms.cfg 设置

actionscript-3 - ActionScript 库项目与 Flex 库项目

apache-flex - 尝试获取数据网格所选项目的全局 y 坐标

apache-flex - 从文件 :///without having the user change their Flash Player security settings 运行 SWF

php - FusionCharts - 图表上的 Div

flash - 缺少 AGALMiniAssembler

actionscript-3 - 如何将 Starling 与 Flex、混合 MXML 和 Stage 3D AS3 代码一起使用