跳到主要内容

TouchBar

类: TouchBar

为原生 macOS 应用程序创建 TouchBar 布局

进程: 主进程

new TouchBar(options)

使用指定的项创建一个新的 touch bar。使用 BrowserWindow.setTouchBarTouchBar 添加到窗口。

注意: TouchBar API 目前是实验性的,在未来的 Electron 版本中可能会更改或删除。

提示: 如果您没有配备 Touch Bar 的 MacBook,可以使用 Touch Bar Simulator 来测试应用程序中的 Touch Bar 使用情况。

静态属性

TouchBarButton

TouchBarButton 类的 typeof TouchBarButton 引用。

TouchBarColorPicker

TouchBarColorPicker 类的 typeof TouchBarColorPicker 引用。

TouchBarGroup

TouchBarGroup 类的 typeof TouchBarGroup 引用。

TouchBarLabel

TouchBarLabel 类的 typeof TouchBarLabel 引用。

TouchBarPopover

TouchBarPopover 类的 typeof TouchBarPopover 引用。

TouchBarScrubber

TouchBarScrubber 类的 typeof TouchBarScrubber 引用。

TouchBarSegmentedControl

TouchBarSegmentedControl 类的 typeof TouchBarSegmentedControl 引用。

TouchBarSlider

TouchBarSlider 类的 typeof TouchBarSlider 引用。

TouchBarSpacer

TouchBarSpacer 类的 typeof TouchBarSpacer 引用。

TouchBarOtherItemsProxy

TouchBarOtherItemsProxy 类的 typeof TouchBarOtherItemsProxy 引用。

实例属性

以下属性在 TouchBar 的实例上可用

touchBar.escapeItem

设置为此值时,将替换 touch bar 上的“esc”按钮的 TouchBarItem。设置为 null 可恢复默认的“esc”按钮。更改此值会立即更新 touch bar 中的 escape 项。

示例

下面是一个简单的老虎机 touch bar 游戏的示例,其中包含一个按钮和一些标签。

const { app, BrowserWindow, TouchBar } = require('electron')

const { TouchBarLabel, TouchBarButton, TouchBarSpacer } = TouchBar

let spinning = false

// Reel labels
const reel1 = new TouchBarLabel({ label: '' })
const reel2 = new TouchBarLabel({ label: '' })
const reel3 = new TouchBarLabel({ label: '' })

// Spin result label
const result = new TouchBarLabel({ label: '' })

// Spin button
const spin = new TouchBarButton({
label: '🎰 Spin',
backgroundColor: '#7851A9',
click: () => {
// Ignore clicks if already spinning
if (spinning) {
return
}

spinning = true
result.label = ''

let timeout = 10
const spinLength = 4 * 1000 // 4 seconds
const startTime = Date.now()

const spinReels = () => {
updateReels()

if ((Date.now() - startTime) >= spinLength) {
finishSpin()
} else {
// Slow down a bit on each spin
timeout *= 1.1
setTimeout(spinReels, timeout)
}
}

spinReels()
}
})

const getRandomValue = () => {
const values = ['🍒', '💎', '7️⃣', '🍊', '🔔', '⭐', '🍇', '🍀']
return values[Math.floor(Math.random() * values.length)]
}

const updateReels = () => {
reel1.label = getRandomValue()
reel2.label = getRandomValue()
reel3.label = getRandomValue()
}

const finishSpin = () => {
const uniqueValues = new Set([reel1.label, reel2.label, reel3.label]).size
if (uniqueValues === 1) {
// All 3 values are the same
result.label = '💰 Jackpot!'
result.textColor = '#FDFF00'
} else if (uniqueValues === 2) {
// 2 values are the same
result.label = '😍 Winner!'
result.textColor = '#FDFF00'
} else {
// No values are the same
result.label = '🙁 Spin Again'
result.textColor = null
}
spinning = false
}

const touchBar = new TouchBar({
items: [
spin,
new TouchBarSpacer({ size: 'large' }),
reel1,
new TouchBarSpacer({ size: 'small' }),
reel2,
new TouchBarSpacer({ size: 'small' }),
reel3,
new TouchBarSpacer({ size: 'large' }),
result
]
})

let window

app.whenReady().then(() => {
window = new BrowserWindow({
frame: false,
titleBarStyle: 'hiddenInset',
width: 200,
height: 200,
backgroundColor: '#000'
})
window.loadURL('about:blank')
window.setTouchBar(touchBar)
})

运行上面的示例

要运行上面的示例,您需要(假设您在要运行该示例的目录中打开了一个终端)

  1. 将上面的文件另存为 touchbar.js
  2. 通过 npm install electron 安装 Electron
  3. 在 Electron 中运行示例:./node_modules/.bin/electron touchbar.js

然后,您应该看到一个新的 Electron 窗口和在您的 touch bar(或 touch bar 模拟器)中运行的应用程序。