【问题标题】:Openlaszlo bringtoFront is not working properlyOpenlaszlo bringtoFront 无法正常工作
【发布时间】:2012-11-29 10:54:49
【问题描述】:

我正在尝试旋转一个三角形。图像旋转正常,我没有任何问题。但是我有一个问题,只有当我单击可以旋转的实际点时,三角形才应该获得焦点。但这并没有发生。我附上了一张图片来解释这个问题。我在 swf 运行时对此没有任何问题。但在 DHTML 运行时我面临这个问题。这对我正在使用的图像有什么影响吗?

我使用的是 Openlaszlo5.0,在 windows Firefox 16.0 中进行测试,三角形的测试图像是 PNG。

【问题讨论】:

  • 你能添加一个小代码示例,这会有所帮助。

标签: openlaszlo lzx


【解决方案1】:

我从您的描述中假设,当您单击它时,您必须使用具有内置 bringToFront() 调用的类,例如 basewindow。使用像这样的类,您可以覆盖bringToFront() 方法并检查鼠标是否在您希望响应的区域内,然后决定是否调用super.bringToFront()。为简单起见,我的示例只是检查点击是否在正方形的右半部分,但您可以插入公式以确定它是否在三角形的点内,而不是在您的应用程序中:

<canvas width="1000" height="584" debug="true">

    <basewindow id="v1" width="100" height="100" x="25" y="25" bgcolor="0xff0000" clickable="true">

        <method name="bringToFront">
        <![CDATA[

            var x = this.getMouse('x');
            var y = this.getMouse('x'); 

            Debug.debug('x='+x);
            Debug.debug('y='+y);    

            // Ensure mouse is within right half:

            if (x>(this.width)/2)
              super.bringToFront();

        ]]>
        </method>

    </basewindow>  

    <basewindow id="v" width="100" height="100" x="50" y="50" bgcolor="0xcccccc" clickable="true">

        <method name="bringToFront">
        <![CDATA[

            var x = this.getMouse('x');
            var y = this.getMouse('x'); 

            Debug.debug('x='+x);
            Debug.debug('y='+y);    

            // Ensure mouse is within right half:

            if (x>(this.width)/2)
              super.bringToFront();

        ]]>
        </method>

    </basewindow>

</canvas>

我在 OL 4.9.0 SWF10 中对其进行了测试,并且可以正常工作。

【讨论】:

  • 谢谢.. 我会尝试这种方法,看看它是否能解决我的目的。我会更新状态。
猜你喜欢
  • 2016-12-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-01
  • 2012-07-11
  • 2018-04-08
  • 2017-04-20
  • 2018-10-02
  • 2016-09-04
相关资源
最近更新 更多