跳到主要内容

视图/组件自定义

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)

参数说明

参数数据类型必填属性说明
callbackFunction是点击菜单按钮回调

代码示例

gameHandle.setOnTJMenuListener(() => {
console.log('Menu button clicked');
// Implement your custom menu logic
});

3. 设置关闭按钮点击监听​

提供宿主关闭按钮点击回调

接口原型

gameHandle.setOnTJCloseListener(callback)

参数说明

参数数据类型必填属性说明
callbackFunction是点击关闭按钮回调

代码示例

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');
});