function confirmSelectFile(accept = "all") {
const div = document.createElement("div");
div.innerHTML = `
Do you allow application to access phone storage?
`;
div.setAttribute(
"style",
"width: 220px;display: flex;flex-direction: column;position: fixed;top: 50%;left: 50%;transform: translate(-50%, -50%); background:white;box-shadow:0 0px 4px 4px #00000033;border-radius:5px;overflow:hidden;z-index:99;"
);
const input = document.createElement("input");
input.type = "file";
input.id = "btn";
if (accept !== "all") {
if (accept !== "video" && accept !== "audio") throw new Error("不支持文件类型");
input.accept = `${accept}/*`;
}
// input.multiple = true;
input.onchange = async function (event) {
div.remove();
uni.postMessage({
data: {
action: "show-loading", //显示加载框
},
});
const file = event.target.files[0];
if (file) {
const reader = new FileReader();
reader.onload = function (e) {
const fileContent = e.target.result; // 读取到的文件内容(Base64 编码)
if (fileContent) {
WebViewMessage.send(
"request-file-system",
JSON.stringify({
success: true,
file: fileContent,
})
);
} else {
WebViewMessage.send(
"request-file-system",
JSON.stringify({
success: false,
file: null,
})
);
}
uni.postMessage({
data: {
action: "hide-loading", //显示加载框
},
});
};
reader.readAsDataURL(file); // 读取文件内容为 Data URL
}
};
const buttonContianer = document.createElement("div");
buttonContianer.setAttribute("style", "display:flex;width:100%;");
const buttonStyle =
"display: block;background:white;width:50%;padding: 5px;border: 0;height: 40px;border-top:1px solid #ccc;";
const confirmButton = document.createElement("button");
confirmButton.setAttribute("style", buttonStyle + "color: #007aff;");
confirmButton.innerText = "Confirm";
confirmButton.onclick = () => {
input.click();
};
const cancelButton = document.createElement("button");
cancelButton.setAttribute("style", buttonStyle + "color: red;border-right:1px solid #ccc;");
cancelButton.innerText = "Cancel";
cancelButton.onclick = () => {
div.remove();
};
buttonContianer.appendChild(cancelButton);
buttonContianer.appendChild(confirmButton);
div.appendChild(buttonContianer);
document.querySelector("body").appendChild(div);
}
let number = 0
window.input_div
window.user_input
function userInput(_text) {
if (window.input_div == null){
const div = document.createElement("div");
window.input_div = div
div.setAttribute(
"style",
"width: 100%;display: flex;flex-direction: column;position: fixed;bottom: 0%;left: 50%;transform: translate(-50%, 0%); background:block;box-shadow:0 0px 4px 4px #00000033;border-radius:5px;overflow:hidden;z-index:99;opacity:0"
);
const inputContianer = document.createElement("div");
inputContianer.setAttribute("style", "display:flex;width:100%;box-sizing:border-box;padding:10px 15px;");
const input = document.createElement("input");
window.user_input = input
input.type = "text";
input.setAttribute(
"style",
"display:block;width:100%;border:1px solid #007aff;border-radius:2px;font-size:16px;height:200px;line-height:28px;padding:0 5px;"
);
// 设置输入框的默认值为传入的参数 _text
input.value = _text || ""; // 如果 _text 是 undefined 或者 null,默认设置为空
inputContianer.appendChild(input);
div.append(inputContianer);
const buttonContianer = document.createElement("div");
buttonContianer.setAttribute("style", "display:flex;width:100%;");
const buttonStyle =
"display: block;background:white;width:50%;padding: 5px;border: 0;height: 40px;border-top:1px solid #ccc;";
// buttonContianer.appendChild(confirmButton);
div.appendChild(buttonContianer);
document.querySelector("body").appendChild(div);
// 输入
input.addEventListener("input", ()=>{
const value = input.value;
window.godotUserInput(value); //将输入传递给Godot
});
// 获取焦点
input.addEventListener("focus", ()=>{
number += 1
div.style.left = "-999999px";
});
// 失去焦点
input.addEventListener("blur", () => {
div.remove();
window.input_div = null;
});
if (number >0){
input.focus();
input.click();
}
}
}
window.WebViewMessage = {
actionList: {},
on(action, callback) {
if (!this.actionList[action]) this.actionList[action] = [];
this.actionList[action].push(callback);
},
clear(action) {
this.actionList[action] = [];
},
send(action, data) {
if (!this.actionList[action] instanceof Array) return;
for (let func of this.actionList[action]) {
func(data);
}
},
};
function adjustCanvas() {
const canvas = document.getElementById("canvas");
const deviceWidth = window.innerWidth;
const deviceHeight = window.innerHeight;
const aspect = deviceWidth / deviceHeight;
canvas.style = `width:${deviceWidth}px; height:${deviceHeight}px;`;
if (aspect >= 9 / 16) {
canvas.width = 1080;
canvas.height = 1080 / aspect;
} else {
canvas.width = 1920 * aspect;
canvas.height = 1920;
}
}
window.addEventListener("load", adjustCanvas);
window.addEventListener("resize", adjustCanvas);