【发布时间】: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