lufy's legend

标题: 缩放后,事件位置不对 [打印本页]

作者: donnier    时间: 2017-2-15 14:51
标题: 缩放后,事件位置不对
大神我有个背景,
背景里面嵌套了一个按钮,
绑定了一个单击事件

如果我缩放这个背景, 这个按钮点击位置就不对,请问有什么好的办法吗


作者: lufy    时间: 2017-2-15 14:57
不会吧,代码发一下我看看
作者: donnier    时间: 2017-2-15 15:52
new InteractivePNG()
如果这个按钮是new InteractivePNG()创建的才会,如果是new LSprite()就不会
作者: donnier    时间: 2017-2-15 15:56
这个按钮是不规则的,我不想通过缝隙点到背景,应该还是用new InteractivePNG(),但又不想缩放后,事件位置错位
我需要怎么处理,请教大神
作者: lufy    时间: 2017-2-15 21:50
donnier 发表于 2017-2-15 15:56
这个按钮是不规则的,我不想通过缝隙点到背景,应该还是用new InteractivePNG(),但又不想缩放后,事件位置 ...

这个没办法,InteractivePNG所使用的方法目前不支持缩放
如果不是动态变化的对象的话,你可以先把图形缩放后draw到一个LBitmapData对象上,然后再放到InteractivePNG中
作者: Rain_Golden    时间: 2018-8-20 14:03
            InteractivePNG.prototype.hitTestPoint = function (x, y) {
                var self = this;
                var point = self.getRootCoordinate();
                point.x = x - point.x;
                point.y = y - point.y;
                for (var i = 0, l = self.childList.length; i < l; i++) {
                    var child = self.childList[0];
                    if (!child.bitmapData._locked) {
                        child.bitmapData.lock();
                    }
                    var cx = point.x - child.x;
                    var cy = point.y - child.y;
                    if (cx < 0 || cx > child.bitmapData.width * child.scaleX || cy < 0 || cy > child.bitmapData.height * child.scaleY) {
                        continue;
                    }
                    var pixel = child.bitmapData.getPixel(Math.round(cx / child.scaleX), Math.round(cy / child.scaleY));
                    if (pixel && pixel[3] > 0) {
                        return true;
                    }
                }
                return false;
            };

我也发现这个问题,自己改了一下这里,初步是可以用的了




欢迎光临 lufy's legend (http://lufylegend.com/forum/) Powered by Discuz! X2.5