【问题标题】:Allowing mouse events to bubble reliably through the youtube chromeless player?允许鼠标事件通过 youtube 无铬播放器可靠地冒泡?
【发布时间】:2011-03-30 05:48:54
【问题描述】:

大家好!

我正在开发一个原型,该原型需要我能够读取和跟踪正在播放的 youtube 视频上的鼠标移动。复制我的问题的基本代码归结为这个简单的测试用例:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
layout="absolute"
initialize="{go();}">
<mx:VBox>
  <mx:Label id="test" text=""/>
  <mx:SWFLoader source="http://www.youtube.com/apiplayer?version=3" />
</mx:VBox>
<mx:Script>
  <![CDATA[
    function go(){
    Security.allowDomain("*");
    Security.allowInsecureDomain("*");
    addEventListener(MouseEvent.MOUSE_MOVE,
                     function(e:MouseEvent){trace(test.text=e.stageX+"")});
    }
  ]]>
</mx:Script>
</mx:Application>

预期的行为是:

  • Youtube 播放器加载
  • 右上角的标签跟踪鼠标的 X 坐标
  • 即使将鼠标移到 Youtube 播放器上,数字也会更新

到目前为止,该程序在从 IDE 运行时表现符合预期(已在 FlashDevelop 和 FlashBuilder 上测试),甚至在从输出文件夹手动运行文件时也是如此。但是,唉,当我尝试从调试文件夹以外的任何地方运行它时(无论是我计算机上的另一个位置还是网络服务器上的其他位置),Youtube 播放器似乎吃掉了这些事件。 p>

我在调试时没有收到沙盒安全警告(感谢 allowDomain("*")),但我对程序失败的原因没有任何想法一旦你将文件从调试文件夹中取出 /em>。

我会非常感谢任何线索。请注意,就解决方案而言,如果您有证据证明它可以在其他地方工作,我愿意尝试与闪存不同的技术。

【问题讨论】:

  • 请问有什么意义吗?你想通过这样做解决什么问题?此外,您应该将 swf 加载器上的 applicationDomain 设置为与您的应用程序相同,如下所示:applicationDomain="{ApplicationDomain.currentDomain}"
  • 我正在尝试将 youtube 视频集成到游戏原型中,在该原型中,用户将被要求单击或拖动给定视频中的对象。除此之外,我认为拥有适当行为的鼠标事件以允许更正常的操作(例如拖放)会很好吗?
  • 明白了。再次确保 applicationDomain 相同。那么它应该可以工作了。
  • 我已经尝试配置应用程序域,但是很可惜,行为没有改变。搜索 YouTube API 板似乎表明我不是唯一遇到这种奇怪行为的人。如果没有其他选择,我会尝试在那里询问。

标签: apache-flex actionscript-3 youtube youtube-api


【解决方案1】:

好的,所以我正在回答我自己的答案(我知道...),只是为了在有人需要时将其记录在某处。

尽我所能,调整安全沙箱设置没有成功。我什至尝试了所有可能的组合,但没有骰子。

出于绝望,我所做的实际上是在加载完成后将鼠标侦听器添加到Loader.content 属性。而且效果很好。

这是我发现的唯一一个加载应用程序可以安全地访问加载者的鼠标事件而不妨碍其内部鼠标逻辑的地方。

希望它可以帮助其他人在未来摆脱困境!

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 2011-05-05
    • 2010-12-09
    • 1970-01-01
    • 2019-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多