2013-03-29 38 views
0

将关键事件触发到SWF中,因此我的想法很流畅,我需要将键盘事件发布到网页上的嵌入式swf(在Chrome中)。我需要使用javascript

而且我处理一些限制:

  • 输入事件必须来自JavaScript的
  • 的事件需要被激发到一个swf
  • 我没有访问源的swf

我怎么做到这一点,并不重要。这更像是一个个人项目,所以它可以有我想要的那么多的漏洞。

我调查了直接从javascript发射,但我断定这根本不可能。有没有其他人有任何想法?我能否以某种方式使用Win32 API?

+0

理想情况下,你会有源的swf和使用[ExternalInterface](http://learnswfobject.com/advanced-topics/external-interface/)传递调用一个actionscript函数与作为参数从JavaScript的基础上捕获的keyevents。想到的一个奇怪的想法是创建另一个swf来加载你的原始swf,做你需要的js通信并将一个KeyboardEvent分派给原始的swf。最糟糕的情况下,你可以反编译原始的swf,希望没有太复杂或模糊的代码,并从那里开始工作 –

回答

0

我假设SWF是你自己的,在这种情况下你可以使用ExternalInterface.call();方法直接在主机页面中执行JS,并且可以使用ExternalInterface.addCallback()函数将AS函数注册为带有JS的SWF上的可调用函数。

docs

0

如果您没有访问SWF的来源,这是不可能的,因为要做到这一点的唯一方法是在闪光灯注册回调,并呼吁他们在JS。当然,每个回调都必须使用dispatchEvent方法来触发你想要的事件(或者直接调用事件监听函数)。

解决您的问题的唯一方法是反编译.swf(例如使用Sothink SWF Decompiler)。如果代码没有被模糊处理,那么输出代码就足够清晰,可以读取并重构代码。反编译,添加回调(使用ExternalInterface.addCallback())并编译一个新的时间。