在Linux上使用creationComplete事件将函数注册为闪存上的回调失败
Posted
技术标签:
【中文标题】在Linux上使用creationComplete事件将函数注册为闪存上的回调失败【英文标题】:registering a function as callback on flash using creationComplete event fail on linux 【发布时间】:2011-01-13 18:28:02 【问题描述】:我在 flash builder 4 上创建了一个 flex 项目。 在 MXML 中我有
xmlns:mx="library://ns.adobe.com/flex/mx" creationComplete="init();"
并检查它是否运行
<![CDATA[
private function init():void
ExternalInterface.addCallback("Submit", submit);
txtFirstName.text = "fkjkdshf";
//txtFirstName.text = ExternalInterface.available.toString();
我导出了创建 SWF 文件的发布版本。
当我在 Windows 上使用 Firefox 打开文件时,很明显该事件已采取行动 -> 文本框值发生了变化。
当我在 LINUX 上的 Firefox 上打开文件时,文本值没有改变,因此没有执行 creationComplete 事件。
我的目标是设定
ExternalInterface.addCallback("Submit", submit);
这样我就可以从 Qt 应用程序中调用它。
我已经检查过,两个平台上都使用了相同的 Flash Player。
这似乎是 Linux Flash 插件的一个错误。
我怎样才能克服这个问题,并注册“提交”?
【问题讨论】:
这与 Qt(标签的 b/c)有什么关系? 也许这在 ExternalInterface.addCallback 上失败了,而您只是没有看到错误,在 init 方法中添加一个跟踪语句并使用 FlashTracer 或 Vizzy 来观察正在运行的 swf 的跟踪输出可能会让您更接近解决方案,我最好的猜测是它与 linux vs windows 中的区分大小写有关,因为这是我在切换系统进行开发或部署时遇到的最常见错误。也可能只是尝试从提交更改为其他一些肯定没有保留的词,例如 mySpecialSubmit。 【参考方案1】:事件处理程序应该是applicationComplete,而不是creationComplete。
【讨论】:
wietseveenstra.nl/blog/2007/02/… 我看不出有任何理由,他不应该看到这两个事件都被触发并因此被处理,尽管您可能是正确的 applicationComplete 可能是一个更合适的时间这个方法调用。 @shaunhusain:是的,这两个事件都会被触发,但我认为不能保证ExternalInterface
会以您期望的方式可用,直到应用程序实际放置在舞台上并且所有初始化完成。我怀疑这是浏览器行为不同的原因。
还不错,我只是想澄清一下,这两个事件实际上都应该被触发,并且我在这里没有遗漏任何东西,感谢您的澄清,同意这可能是一个问题。【参考方案2】:
据我记忆中的错误
ExternalInterface.addCallback("Submit", submit);
安全设置在 Win 和 Linux 之间的行为不同。在我的 Linux 平台上,我必须使用“Global Security Settings panel”配置闪存以信任 SWF 文件和外部可执行文件
请注意,此工具非常时髦 - 您在此页面上看到的闪存实际上控制着您计算机上的安全设置。此工具选项中的“始终允许”也不起作用。
【讨论】:
以上是关于在Linux上使用creationComplete事件将函数注册为闪存上的回调失败的主要内容,如果未能解决你的问题,请参考以下文章
Flex中的initialize,creationComplete和applicationComp