Skip to main content

TouchBar

Class: TouchBar

네이티브 macOS 애플리케이션을 위한 TouchBar 레이아웃 생성

프로세스: Main

new TouchBar(options)

지정된 아이템으로 새로운 터치 바를 생성한다. BrowserWindow.setTouchBar를 사용해 TouchBar를 윈도우에 추가할 수 있다.

참고: TouchBar API는 현재 실험적 기능이며, 향후 Electron 릴리스에서 변경되거나 제거될 수 있다.

팁: Touch Bar가 없는 MacBook을 사용 중이라면, Touch Bar Simulator를 사용해 앱에서의 Touch Bar 사용을 테스트할 수 있다.

정적 속성

TouchBarButton

typeof TouchBarButtonTouchBarButton 클래스를 참조한다.

TouchBarColorPicker

typeof TouchBarColorPickerTouchBarColorPicker 클래스를 참조한다.

TouchBarGroup

typeof TouchBarGroupTouchBarGroup 클래스를 참조한다.

TouchBarLabel

typeof TouchBarLabelTouchBarLabel 클래스를 참조한다.

TouchBarPopover

typeof TouchBarPopoverTouchBarPopover 클래스를 참조한다.

TouchBarScrubber

typeof TouchBarScrubberTouchBarScrubber 클래스를 참조한다.

TouchBarSegmentedControl

typeof TouchBarSegmentedControlTouchBarSegmentedControl 클래스를 참조한다.

TouchBarSlider

typeof TouchBarSliderTouchBarSlider 클래스를 참조한다.

TouchBarSpacer

typeof TouchBarSpacerTouchBarSpacer 클래스를 참조한다.

TouchBarOtherItemsProxy

TouchBarOtherItemsProxy 클래스의 참조를 나타내는 typeof TouchBarOtherItemsProxy 타입입니다.

인스턴스 속성

TouchBar 인스턴스에서 사용할 수 있는 속성은 다음과 같다:

touchBar.escapeItem

TouchBarItem은 터치 바의 "esc" 버튼을 대체한다. 이 값을 null로 설정하면 기본 "esc" 버튼이 복원된다. 이 값을 변경하면 터치 바의 escape 아이템이 즉시 업데이트된다.

예제

아래는 버튼과 몇 가지 라벨을 포함한 간단한 슬롯 머신 터치 바 게임의 예제이다.

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

const { TouchBarLabel, TouchBarButton, TouchBarSpacer } = TouchBar

let spinning = false

// 릴 라벨
const reel1 = new TouchBarLabel({ label: '' })
const reel2 = new TouchBarLabel({ label: '' })
const reel3 = new TouchBarLabel({ label: '' })

// 스핀 결과 라벨
const result = new TouchBarLabel({ label: '' })

// 스핀 버튼
const spin = new TouchBarButton({
label: '🎰 Spin',
backgroundColor: '#7851A9',
click: () => {
// 이미 스핀 중인 경우 클릭 무시
if (spinning) {
return
}

spinning = true
result.label = ''

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

const spinReels = () => {
updateReels()

if ((Date.now() - startTime) >= spinLength) {
finishSpin()
} else {
// 매 스핀마다 조금씩 속도 감소
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) {
// 3개 값이 모두 동일
result.label = '💰 Jackpot!'
result.textColor = '#FDFF00'
} else if (uniqueValues === 2) {
// 2개 값이 동일
result.label = '😍 Winner!'
result.textColor = '#FDFF00'
} else {
// 모든 값이 다름
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 윈도우가 나타나고, 앱이 터치 바(또는 터치 바 에뮬레이터)에서 실행되는 것을 확인할 수 있다.