/**
* @file 텍스트-트랙-버튼.js
*/
'../track-button.js'에서 TrackButton 가져오기;
'../../component.js'에서 컴포넌트 가져오기;
'./text-track-menu-item.js'에서 TextTrackMenuItem 가져오기;
'./off-text-track-menu-item.js'에서 OffTextTrackMenuItem 가져오기;
/**
* 특정 텍스트 트랙 유형(예: 자막)을 전환하는 버튼의 기본 클래스
*
* @extends 메뉴버튼
*/
TextTrackButton 클래스는 TrackButton {을 확장합니다.
/**
* 이 클래스의 인스턴스를 만듭니다.
*
* @param {플레이어} 플레이어
* 이 클래스가 연결되어야 하는 `Player`.
*
* @param {객체} [옵션={}]
* 플레이어 옵션의 키/값 저장소.
*/
생성자(플레이어, 옵션 = {}) {
options.tracks = player.textTracks();
super(플레이어, 옵션);
}
/**
* 각 텍스트 트랙에 대한 메뉴 항목 만들기
*
* @param {TextTrackMenuItem[]} [항목=[]]
* 생성 중에 사용할 기존 항목 배열
*
* @return {TextTrackMenuItem[]}
* 생성된 메뉴 항목의 배열
*/
createItems(항목 = [], TrackMenuItem = TextTrackMenuItem) {
// 라벨은 [트랙] 오프 라벨에 대한 재정의입니다.
// 캡션/자막을 현지화하는 데 사용됨
레이블을 지정하십시오.
if (이.라벨_) {
label = `${this.label_} 꺼짐`;
}
// 모든 트랙을 끄기 위해 OFF 메뉴 항목 추가
items.push(새로운 OffTextTrackMenuItem(this.player_, {
종류: this.kinds_,
종류: this.kind_,
라벨
}));
this.hideThreshold_ += 1;
const 트랙 = this.player_.textTracks();
if (!Array.isArray(this.kinds_)) {
this.kinds_ = [이.kind_];
}
에 대한 (하자 i = 0; i < 트랙.길이; i++) {
const 트랙 = 트랙[i];
// 적절한 종류이고 레이블이 있는 트랙만 추가합니다.
if (this.kinds_.indexOf(track.kind) > -1) {
const item = new TrackMenuItem(this.player_, {
길,
종류: this.kinds_,
종류: this.kind_,
// MenuItem을 선택할 수 있습니다.
선택 가능: 참,
// MenuItem은 multiSelectable이 아닙니다(즉, 한 번에 하나만 "선택됨"으로 표시할 수 있음).
다중 선택 가능: 거짓
});
item.addClass(`vjs-${track.kind}-menu-item`);
items.push(항목);
}
}
항목을 반환;
}
}
Component.registerComponent('TextTrackButton', TextTrackButton);
기본 TextTrackButton 내보내기;