可以在HTML页面中获取Flex应用程序的x,y坐标吗?我知道您可以使用ExternalInterface.ObjecID获取“Internet Explorer中object标记的id属性,或Netscape中embed标记的name属性”,但我似乎无法完成这一步。似乎可以获得嵌入对象句柄。有什么建议吗?
谢谢。
发布于 2008-09-18 11:21:17
我认为最简单的做法是在HTML页面上包含某种JavaScript库,比如jQuery,并使用它的函数来确定DOM节点的位置和大小。我或多或少会这样做:
var jsCode : String = "function( id ) { return $('#' + id).offset(); }";
var offset : Object = ExternalInterface.call(jsCode, ExternalObject.objectID);
trace(offset.left, offset.top);注意,这是ActionScript代码,但它通过ExternalInterface运行JavaScript代码。它使用jQuery,特别是返回DOM节点的左偏移量和上偏移量的offset方法。
如果您查看了jQuery方法是如何实现的,并且包含了该代码来代替对jQuery的调用,那么您可以不使用offset。这样你就不需要在超文本标记语言中加载jQuery,而且Flex将是自包含的。我建议使用像jQuery这样的库的原因是浏览器做这些事情的方式不同。我不确定不同的浏览器计算偏移量是否有很大的不同,但不受浏览器差异的影响也不会有什么坏处。
我的示例中的JavaScript是一个匿名函数,这样就可以将embed/object标记的ID作为参数传递给ExternalInterface.call,但如果需要,也可以使用字符串连接:
var jsCode : String = "$('#' +" + ExternalInterface.objectID + ").offset()";
var offset : Object = ExternalInterface.call(jsCode);这也是可行的,我只是觉得第一个版本更优雅。
https://stackoverflow.com/questions/89188
复制相似问题