跳至主要内容

TouchBar

类: TouchBar

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

进程: 主进程

new TouchBar(options)

使用指定的项目创建一个新的触控栏。使用 BrowserWindow.setTouchBarTouchBar 添加到窗口。

注意:TouchBar API 目前处于实验阶段,可能会在未来的 Electron 版本中发生变化或被移除。

提示:如果您没有配备触控栏的 MacBook,可以使用 Touch Bar 模拟器 在您的应用程序中测试触控栏的使用。

静态属性

TouchBarButton

一个 typeof TouchBarButton 引用到 TouchBarButton 类。

TouchBarColorPicker

一个 typeof TouchBarColorPicker 引用到 TouchBarColorPicker 类。

TouchBarGroup

一个 typeof TouchBarGroup 引用到 TouchBarGroup 类。

TouchBarLabel

一个 typeof TouchBarLabel 引用到 TouchBarLabel 类。

TouchBarPopover

一个 typeof TouchBarPopover 引用到 TouchBarPopover 类。

TouchBarScrubber

一个 typeof TouchBarScrubber 引用到 TouchBarScrubber 类。

TouchBarSegmentedControl

一个 typeof TouchBarSegmentedControl 引用到 TouchBarSegmentedControl 类。

TouchBarSlider

一个 typeof TouchBarSlider 引用到 TouchBarSlider 类。

TouchBarSpacer

一个 typeof TouchBarSpacer 引用到 TouchBarSpacer 类。

TouchBarOtherItemsProxy

一个 typeof TouchBarOtherItemsProxy 引用到 TouchBarOtherItemsProxy 类。

实例属性

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

touchBar.escapeItem

一个 TouchBarItem,设置为该值时将替换触控栏上的“esc”按钮。设置为 null 将恢复默认的“esc”按钮。更改此值会立即更新触控栏中的转义项。

示例

以下是一个带有按钮和一些标签的简单老虎机触控栏游戏的示例。

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 窗口,以及在您的触控栏(或触控栏模拟器)中运行的应用程序。