【问题标题】:Convert local (viewport relative coordinates) to global (layer coordinates)将局部(视口相对坐标)转换为全局(图层坐标)
【发布时间】:2014-11-26 10:30:07
【问题描述】:

我正在尝试将视口坐标转换为全局(图层)坐标。

我已经尝试过docs 中描述的方法,但似乎不起作用:

var result= me.game.viewport.localToWorld(x,y, me.game.viewport.AXIS_BOTH);

我有,反之亦然组合(将全局转换为本地):

me.event.subscribe("pointerdown", function (event) {
  // convert the given into local (viewport) relative coordinates
  var pos = me.input.globalToLocal(event.clientX, event.clientY);
});

为什么我认为 me.game.viewport.localToWorld 不起作用? 因为对于我的实体,当我点击它时,我的坐标有很大的差异(比如超过 200 个点)。

代码sn-p:

game.PlayerEntity = me.Entity.extend({

    /**
     * constructor
     */
    init:function (x, y, settings)
    {
        var self=this;
        self.leftMouseClicked=false;
        me.event.subscribe("pointerdown", function (event) {
            if(!self.leftMouseClicked) {
                var result= me.game.viewport.localToWorld(self.pos.x,self.pos.y, me.game.viewport.AXIS_BOTH);
                console.log(result);
                console.log(event.clientX);
                console.log(event.clientY);
                self.leftMouseClicked=true;
            }

        });
...

所以我的问题是:

如何将视口坐标转换为第一层,类似于将全局坐标转换为局部坐标?

【问题讨论】:

    标签: javascript melonjs


    【解决方案1】:

    我找到了解决方案,它被 me.game.viewport.pos 所抵消。

    结果代码:

    var self=this;
    me.event.subscribe("pointerdown", function (event) {
            //me.game.viewport.pos -- offset
            var pos = me.input.globalToLocal(event.clientX, event.clientY);
            self.mouseXCoord = pos.x+me.game.viewport.pos.x;
            self.mouseYCoord = pos.y+me.game.viewport.pos.y;
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-03
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 2015-08-25
      • 1970-01-01
      • 2014-06-27
      • 2020-01-09
      相关资源
      最近更新 更多