作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
在 JavaScript 中,我们有 document.elementfrompoint 来获取基于坐标的元素。Openlaszlo 中是否有类似的东西来获取基于坐标的 View ?
最佳答案
OpenLaszlo 不直接支持该功能,但对于基于 ActionScript 3 的运行时,您可以使用 flash.display.DisplayObjectContainer#getObjectsUnderPoint()方法。在 DHTML 运行时,您可以使用 document.elementFromPoint(x, y) , 和 based on Quirksmode所有现代浏览器都应该支持它。
这是一个实现 canvas.elementFromPoint()
方法的示例程序:
<canvas debug="true">
<passthrough when="$as3">
import flash.geom.Point;
</passthrough>
<view id="background" width="100%" height="100%" bgcolor="#eeeeee" clickable="true"/>
<view id="red" x="200" y="100" width="200" height="200" bgcolor="#ff0000" opacity="0.3" clickable="true" />
<view id="green" x="150" y="200" width="200" height="200" bgcolor="#00ff00" opacity="0.3" clickable="true"/>
<view id="blue" x="250" y="200" width="200" height="200" bgcolor="#0000ff" opacity="0.3" clickable="true"/>
<handler name="onclick" reference="lz.GlobalMouse">
canvas.elementFromPoint();
</handler>
<method name="elementFromPoint"><![CDATA[
var mouseX = canvas.getMouse('x'),
mouseY = canvas.getMouse('y'),
objects = null, // array of objects at mouse pointer in SWF runtime
element = null; // The element we are looking for
Debug.info( 'mouse position: x=' + mouseX + ' / mouseY=' + mouseY );
if ($as3) {
// in SWF runtime, use the DisplayObjectContainer.getObjectsUnderPoint() method
objects = canvas.getDisplayObject().getObjectsUnderPoint(new Point(mouseX, mouseY));
element = objects[objects.length-1].owner;
} else {
// in DHTML, we can use elementFromPoint, and need to retrieve the owner view of the div
element = document.elementFromPoint(mouseX, mouseY).owner.owner;
}
Debug.info('View under mousecursor:', element);
return element;
]]></method>
</canvas>
有 4 个 View ,一个缩放到 100% x 100% 的背景 View 。以及三种颜色 View :红色、绿色和蓝色 - 蓝色 View 位于顶部。单击 View 时,返回正确的 View 对象。
该代码已在 Chrome 22.0、Firefox 16.0.1 和 Opera 12.02 的 DHTML 运行时中进行了测试。 Flash 应该适用于所有浏览器,我没有在 IE 上测试过。
关于openlaszlo - 如何在 openlaszlo 中获取基于坐标的 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13066052/
我是一名优秀的程序员,十分优秀!