gpt4 book ai didi

neutralinojs - 在 neutralino.js 中定位无边框窗口

转载 作者:行者123 更新时间:2023-12-05 04:48:43 25 4
gpt4 key购买 nike

有什么方法可以在文件 neutralino.config.json 中定位无边框窗口?

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

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

最佳答案

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

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

问题是,Neutralino 是如何做到这一点的,它是通过向服务器发送一条消息,这会增加相当多的延迟,导致拖拽时断时续。以下是 neutralino.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 样式来匹配我的应用程序。”但由于卡顿问题,我发现最好有一个不匹配任何内容的 native 可拖动标题栏。我仍在挖掘 Neutralino C++ code看看我是否可以修改它并添加一个非客户端呈现消息处理程序(在 Windows 上),使标题栏的颜色与我的应用程序相同,并且仍然可以平滑拖动。这样它看起来“无边界”但仍然可以移动。

关于neutralinojs - 在 neutralino.js 中定位无边框窗口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67971689/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com