视图/组件自定义
1. 获取宿主视图
获取宿主游戏窗口(Electron BrowserWindow)
接口原型
gameHandle.getGameView()
返回值
返回 BrowserWindow - Electron 浏览器窗口对象
代码示例
const gameWindow = gameHandle.getGameView();
if (gameWindow) {
// Access Electron BrowserWindow methods
gameWindow.setTitle('My Game');
gameWindow.setSize(1280, 720);
gameWindow.center();
}
2. 设置菜单按钮点击监听
提供宿主菜单按钮点击回调
接口原型
gameHandle.setOnTJMenuListener(callback)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
callback | Function | 是 | 点击菜单按钮回调 |
代码示例
gameHandle.setOnTJMenuListener(() => {
console.log('Menu button clicked');
// Implement your custom menu logic
});
3. 设置关闭按钮点击监听
提供宿主关闭按钮点击回调
接口原型
gameHandle.setOnTJCloseListener(callback)
参数说明
| 参数 | 数据类型 | 必填 | 属性说明 |
|---|---|---|---|
callback | Function | 是 | 点击关闭按钮回调 |
代码示例
gameHandle.setOnTJCloseListener(() => {
console.log('Close button clicked');
// Show confirmation dialog
const { dialog } = require('electron');
const gameWindow = gameHandle.getGameView();
dialog.showMessageBox(gameWindow, {
type: 'question',
buttons: ['Yes', 'No'],
title: 'Confirm',
message: 'Are you sure you want to close the game?'
}).then(result => {
if (result.response === 0) {
gameHandle.destroy();
}
});
});
4. 窗口管理说明
PC 版本的窗口由 SDK 自动管理:
- 创建: 调用
gameHandle.start()时自动创建窗口 - 显示: 游戏首帧渲染后自动显示窗口
- 销毁: 调用
gameHandle.destroy()时自动关闭并清理窗口
5. 常用窗口操作
通过 BrowserWindow API 可以实现各种窗口操作:
const gameWindow = gameHandle.getGameView();
// Window size and position
gameWindow.setSize(1280, 720);
gameWindow.setMinimumSize(800, 600);
gameWindow.center();
// Window state
gameWindow.maximize();
gameWindow.minimize();
gameWindow.setFullScreen(true);
// Window properties
gameWindow.setTitle('My Game');
gameWindow.setResizable(true);
gameWindow.setAlwaysOnTop(false);
6. 窗口事件监听
const gameWindow = gameHandle.getGameView();
// Focus events
gameWindow.on('focus', () => {
gameHandle.play(); // Resume game
});
gameWindow.on('blur', () => {
gameHandle.pause(); // Pause game
});
// Window state events
gameWindow.on('resize', () => {
const [width, height] = gameWindow.getSize();
console.log(`Window resized: ${width}x${height}`);
});
gameWindow.on('close', () => {
console.log('Window closing');
});