将无边框窗口放置在neutralizo.js中



有什么方法可以将无边界窗口定位在neutramino.config.json文件中吗?

like : "borderless": { ...args }

或者其他方式?现在它只是从某个随机的地方开始,不能移动

您可以在javascript中调用Neutralino.window.move(x,y)。(0,0(是屏幕的(最左边,顶部(。您可以在上找到其他窗口函数https://neutralino.js.org/docs/api/window.

作为问题的延伸,正如克劳斯A的直觉所暗示的,你可以调用Neutralino.window.setDraggableRegion('id-of-element'),其中id-of-element顾名思义是html中元素的id。然后,当您单击并拖动该元素时,中和将自动调用Neutralino.window.move(x,y)setDraggableRegion()不在文档中,但你可以在他们在YouTube上制作的教程中看到,它仍然在代码中。

问题是,中和如何做到这一点是通过向服务器发布消息,这增加了相当多的延迟,导致拖动断断续续。以下是neutralizo.js文件的一个经过美化的版本中的相关代码片段:

...
t.move = function(e, t) {
return r.request({
url: "window.move",
type: r.RequestType.POST,
isNativeMethod: !0,
data: {
x: e,
y: t
}
})
}, t.setDraggableRegion = function(e) {
return new Promise(((t, i) => {
let r = document.getElementById(e),
o = 0,
u = 0;
function s(e) {
return n(this, void 0, void 0, (function*() {
yield Neutralino.window.move(e.screenX - o, e.screenY - u)
}))
}
r || i(`Unable to find dom element: #${e}`), r.addEventListener("mousedown", (e => {
o = e.clientX, u = e.clientY, r.addEventListener("mousemove", s)
})), r.addEventListener("mouseup", (() => {
r.removeEventListener("mousemove", s)
})), t()
}))
}
...

我怀疑这个公式增加了滞后,因为function*是一个生成器,因此本质上是不可信的(需要引用(。我用简单的javascript重新编写了它,并减少了一些滞后。它仍然结结巴巴,只是没有那么多。

var dragging = false, posX, posY;
var draggableElement = document.getElementById('id-of-element');
draggableElement.onmousedown = function (e) {
posX = e.pageX, posY = e.pageY;
dragging = true;
}
draggableElement.onmouseup = function (e) {
dragging = false;
}
document.onmousemove = function (e) {
if (dragging) Neutralino.window.move(e.screenX - posX, e.screenY - posY);
}

我希望这能有所帮助。我一直在挖掘这一切,因为窗口的标题栏(又名标题栏(与我的系统的颜色主题不同。我想,";也许我会用HTML创建自己的标题栏,使用CSS样式来匹配我的应用程序"但由于结结巴巴的问题,我发现最好有一个与任何内容都不匹配的本地可拖动标题栏。我仍在挖掘中和C++代码,看看我是否可以修改它,并添加一个非客户端呈现消息处理程序(在Windows上(,使标题栏的颜色与我的应用程序相同,并且仍然有很好的平滑拖动。这样看来;"无边界";但是仍然是可移动的。

我也遇到了同样的问题。我天真的直觉告诉我,这可能是一种创建自定义元素栏并在点击时使用函数的方法;拖动可移动窗口。

在中和中移动窗口非常简单。

您可以使用Neutralino.windowAPI来移动窗口。

示例:

Neutralino.window.move(x, y);

这里xy是我们的窗口将移动到的坐标。

请注意,这将从窗口的左上角移动窗口。

我制作了这个中和模板-带有自定义标题栏的中和JS应用程序,如果你正在为你的应用程序制作自定义标题栏,这可能会很有用。

最新更新