O TEMA DO FÓRUM ESTÁ EM MANUTENÇÃO. FEEDBACKS AQUI: ACESSAR

Como checar a posição do mouse na tela? RPG Maker MV

Iniciado por Naemegashi Yokohuro, 03/03/2017 às 14:19

03/03/2017 às 14:19 Última edição: 03/03/2017 às 17:24 por Naemegashi Yokohuro
Como checar a posição X e Y do mouse na tela?
Preciso chegar se ele esta sobre uma imagem, ai preciso checar suas coordenadas.

TouchInput.x e TouchInput.y
Essas funções lhe retornam a posição do mouse nas coordenadas horizontais (x) e verticais (y).

Eu tentei com esse TouchInput já, ele retorna as ultimas coordenadas em que o mouse foi clicado, mas consegui com um Script do Hudell, mesmo assim, obrigado Alisson.

Citação de: Naemegashi Yokohuro online 03/03/2017 às 17:23
Eu tentei com esse TouchInput já, ele retorna as ultimas coordenadas em que o mouse foi clicado, mas consegui com um Script do Hudell [...]
Opa, tem como me passar quais códigos tu usa pra obter a posição sem ser quando clicar?  :ded:
Tive de parar meu script de paint por não estar achando esse código.

Citação de: King Gerar online 03/03/2017 às 17:24
Citação de: Naemegashi Yokohuro online 03/03/2017 às 17:23
Eu tentei com esse TouchInput já, ele retorna as ultimas coordenadas em que o mouse foi clicado, mas consegui com um Script do Hudell [...]
Opa, tem como me passar quais códigos tu usa pra obter a posição sem ser quando clicar?  :ded:
Tive de parar meu script de paint por não estar achando esse código.

Tem sim King, aqui o Script do Hudell, eu modifiquei pra salvar os valores das coordenadas nas variáveis : mouseposx, mouseposy, mousetilex e mousetiley.

/*=============================================================================
 * Orange - Simple Mouse Data
 * By Hudell - www.hudell.com
 * OrangeMouseData.js
 * Version: 1.0
 * Free for commercial and non commercial use.
 *=============================================================================*/
 /*:
 * @plugindesc Will give you access to mouse's X, Y, TileX, TileY and Down Status for both left and right buttons <OrangeMouseData>
 *
 * @author Hudell
 *
 * @param variableMouseX
 * @desc The number of the variable where the Mouse X will be stored
 * @default 0
 *
 * @param variableMouseY
 * @desc The number of the variable where the Mouse Y will be stored
 * @default 0
 *
 * @param variableMouseTileX
 * @desc The number of the variable where the Mouse Tile X will be stored
 * @default 0
 *
 * @param variableMouseTileY
 * @desc The number of the variable where the Mouse TIle Y will be stored
 * @default 0
 *
 * @param switchLeftButtonDown
 * @desc The number of the switch that will be turned on when the mouse left button is clicked
 * @default 0
 *
 * @param switchRightButtonDown
 * @desc The number of the switch that will be turned on when the mouse right button is clicked
 * @default 0
 *
 * @param switchMiddleButtonDown
 * @desc The number of the switch that will be turned on when the mouse middle button is clicked
 * @default 0
 */
var Imported = Imported || {};

var OrangeMouseData = OrangeMouseData || {};
var mouseposx = mouseposx || 0;
var mouseposy = mouseposy || 0;
var mousetilex = mousetilex || 0;
var mousetiley= mousetiley || 0;
(function($) {
  "use strict";

  var parameters = $plugins.filter(function(plugin){ return plugin.description.indexOf('<OrangeMouseData>') >= 0; });
  if (parameters.length === 0) {
    throw new Error("Couldn't find OrangeMouseData parameters.");
  }
  $.Parameters = parameters[0].parameters;
  $.Param = $.Param || {};
  $.Param.switchLeftButtonDown = Number($.Parameters['switchLeftButtonDown'] || 0);
  $.Param.switchRightButtonDown = Number($.Parameters['switchRightButtonDown'] || 0);
  $.Param.switchMiddleButtonDown = Number($.Parameters['switchMiddleButtonDown'] || 0);

  $.getSwitchId = function(mouseButton) {
    switch(event.button) {
      case 0 :
        return $.Param.switchLeftButtonDown;
      case 1 :
        return $.Param.switchMiddleButtonDown;
      case 2 :
        return $.Param.switchRightButtonDown;
      default :
        return 0;
    }
  };

  $._onMouseUp = function(event) {
    if ($gameSwitches === null || $gameSwitches === undefined) return;
    var switchId = $.getSwitchId(event.button);

    if (switchId > 0) {
      $gameSwitches.setValue(switchId, false);
    }
  };


  $._onMouseDown = function(event) {
    if ($gameSwitches === null || $gameSwitches === undefined) return;
    var switchId = $.getSwitchId(event.button);

    if (switchId > 0) {
      $gameSwitches.setValue(switchId, true);
    }
  };

  $._onMouseMove = function(event) {
    if ($gameVariables === null || $gameSwitches === undefined) return;
    var x = Graphics.pageToCanvasX(event.pageX);
    var y = Graphics.pageToCanvasY(event.pageY);
    var tileX = x;
    var tileY = y;

    if ($gameMap !== undefined && $gameMap !== null && $dataMap !== undefined && $dataMap !== null) {
      tileX = $gameMap.canvasToMapX(x);
      tileY = $gameMap.canvasToMapY(y);
    }
    mouseposx = x;
    mouseposy = y;
    mousetilex = tileX;
    mousetiley= tileY;
  };


  document.addEventListener('mousedown', $._onMouseDown.bind($));
  document.addEventListener('mouseup', $._onMouseUp.bind($));
  document.addEventListener('mousemove', $._onMouseMove.bind($));
})(OrangeMouseData);

Imported["OrangeMouseData"] = 1.0;


Mas se tu quiser o script original, ta aqui o link pro download.
http://download.hudell.com/OrangeMouseData.js

03/03/2017 às 17:30 #5 Última edição: 03/03/2017 às 17:33 por Alisson
Ah sim, Gerar, dá pra tu fazer um alias no MouseEvent (que é provido pela página em html) pra checar a posição atual. Basta ver aqui um exemplo. Creio que esteja disponível desde que você esteja usando JS em uma página (como no mv ou no navegador).

O problema é que o acima também precisa que o mouse seja clicado.
Atualmente é impossível pegar a posição atual do mouse sem fazer um alias no MouseOver event, e ainda precisa fazer umas gambiarras pra funcionar.

Citação de: Alisson online 03/03/2017 às 17:30
Ah sim, Gerar, dá pra tu fazer um alias no MouseEvent (que é provido pela página em html) pra checar a posição atual. Basta ver aqui um exemplo. Creio que esteja disponível desde que você esteja usando JS em uma página (como no mv ou no navegador).[...]
Então, eu até cheguei a testar o que tinha nesse site (também é minha fonte de estudo), mas ou era ignorado pelo sistema
ou retornava erro, provavelmente por eu estar usando o objeto errado. Só seu manusear o códigos dos managers pra frente.



E valeu, Yokohuro! Vou dar uma olhada e ver o que consigo aqui.