【发布时间】:2015-12-05 04:46:44
【问题描述】:
我正在制作一个可编辑的阶段,用户可以在其中添加图像、视频和嵌入内容。目前所有对象都驻留在一个名为 Space 的类文件中。您可以添加的所有对象都在空间内的 bounds_mc 内。这些对象称为 SpaceObjects 并由类文件 SpaceObject 处理...
现在,当我告诉我的 SpaceObject 添加嵌入时,它会执行此操作,但是..有点问题。
当我添加对象时,我无法与它完全交互。我可以使用突出显示文本时看到的相同鼠标图标突出显示它......但没有别的。我可以很好地移动 bounds_mc(它后面的空白区域)并让该对象相应地移动..但没有别的。
现在,如果我通过将舞台一直向下传递到我的 Space 类并执行 stagee.addChild(htmlLoader) 将这个对象直接添加到舞台,这个问题就解决了。
起初我以为这是因为它在一堆电影剪辑中或显示列表中的某种顺序问题……但这次测试证明了这一点。
我在三个movieclip 中有HtmlLoader,我可以很好地与embedd 交互。我试图找出可能导致这种情况的原因。我已经尝试切换 HtmlLoader 从这里到那里的位置,但我仍然遇到这个问题。
这是嵌入的
<iframe width="560" height="315" src="https://www.youtube.com/embed/Kzgjiuvpmsk" frameborder="0" allowfullscreen></iframe>
这是我的 Space 类中的一个示例,它处理来自菜单的用户输入。
case "embeddedobject":
trace("Embeddedobject");
//For now, just testing a standard embedd from youtube. Dynamics later.
var so:SpaceObject = new SpaceObject("embeddedobject", '<iframe width="560" height="315" src="https://www.youtube.com/embed/Kzgjiuvpmsk" frameborder="0" allowfullscreen></iframe>', new Rectangle(rightMouseX, rightMouseY));
bounds_mc.addChild(so);
//Tested with and without the eventlistener..same results
so.addEventListener(MouseEvent.CLICK, contentClickHandler);
spaceObjects.push(so);
break;
这是 SpaceObject 的摘录。它处理从它的构造函数传递的参数。在这种情况下,它会生成我的嵌入。第一个论点是来源。第二个是actions(嵌入的字符串)
public function SpaceObject(source:String, actions:String, bounds:Rectangle, rotation:int=0, matrixx:Matrix = null)
{
//...
if (source == "embeddedobject")
{
htmlLoader = new HTMLLoader();
htmlLoader.placeLoadStringContentInApplicationSandbox = true;
htmlLoader.loadString(actions);
htmlLoader.addEventListener(Event.COMPLETE, handleHtmlLoadComplete);
}
//...
}
private function handleHtmlLoadComplete(e:Event):void
{
trace("Html content load complete");
htmlLoader.removeEventListener(Event.COMPLETE, handleHtmlLoadComplete);
htmlLoader.width = htmlLoader.contentWidth;
htmlLoader.height = htmlLoader.contentHeight;
addChild(htmlLoader);
}
这里是我在 pastebin 上创建的类文件的链接。所有空间对象都驻留在 Space 中。空间驻留在 SpaceContainer 中。
2015 年 12 月 5 日编辑:一个有趣的注释。单击时,e.target 作为精灵返回。当单击其他对象(无论是图像还是视频)时,它们将作为我的 SpaceObject 返回。当我将它添加到舞台时,以及当我将它添加到 bounds_mc 时,都会发生这种情况。
e.target = [object Sprite] vs e.target = [object SpaceObject]
编辑 12/5/15:看起来对象的任何更改(除了它的 x 和 y)都会禁用嵌入中的任何交互式对象并将其变成某种位图。
【问题讨论】:
标签: actionscript-3 air embedding