Связь между основными и визуальными процессами - PullRequest
0 голосов
/ 20 мая 2019

Я отслеживаю координаты мыши внутри моего рендерера. Чего я хочу добиться, так это, что я отправлю эти изменяющиеся координаты мыши в функцию в main.js (node.js), затем эта функция вычислит что-то и вернет значение, а моя другая функция в рендерере будет использовать эту переменную как пинг-понг ,

Этот процесс будет повторяться каждый раз, когда пользователь перемещает мышь. Это возможно с Electron.js ?

Ответы [ 2 ]

1 голос
/ 20 мая 2019

Возможно, но лучше сделать функцию с координатами мыши на стороне рендера. потому что отправка ipc-сообщений в виде потока может замедлить работу приложения.

Ниже приведен пример того, как вы можете использовать ipc-сообщения для этой цели.

(function() {


    const ipcRenderer = require('electron').ipcRenderer;
    document.onmousemove = handleMouseMove;
    function handleMouseMove(event) {
        var eventDoc, doc, body;

        event = event || window.event; // IE-ism

        // If pageX/Y aren't available and clientX/Y are,
        // calculate pageX/Y - logic taken from jQuery.
        // (This is to support old IE)
        if (event.pageX == null && event.clientX != null) {
            eventDoc = (event.target && event.target.ownerDocument) || document;
            doc = eventDoc.documentElement;
            body = eventDoc.body;

            event.pageX = event.clientX +
              (doc && doc.scrollLeft || body && body.scrollLeft || 0) -
              (doc && doc.clientLeft || body && body.clientLeft || 0);
            event.pageY = event.clientY +
              (doc && doc.scrollTop  || body && body.scrollTop  || 0) -
              (doc && doc.clientTop  || body && body.clientTop  || 0 );
        }

        // Use event.pageX / event.pageY here
        ipcRenderer.send('mouse-move',{ x : event.pageX , y : event.pageY });
    }
})();

и в main.js

const ipcMain= require('electron').ipcMain;
ipcMain.on('mouse-move', (event, arg) => {
  console.log(arg) // prints eg :"{ x: 0 , y : 0 }"
  event.sender.send('return-value', arg.x + arg.y);//for eg : adds x and y
})

и перехватить возвращаемое значение в скрипте рендерера

ipcRenderer.on('return-value', (event, arg) => {
  console.log(arg) // prints 0 ; x + y 
  // Do what you want to do with the value
})
1 голос
/ 20 мая 2019

Читать тему ipc communication т.е. IpcMain & IpcRenderer .

с помощью механизма связи ipc вы можете установить связь между основным процессом и процессом визуализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...