Panolens control button

컨트롤 버튼은 어디서 만드나?

전체화면으로 전환하는 이벤트말고 이런 버튼을 어디서 만드는지 분석해서 내가 만든 버튼을 추가하거나 포지션을 변경하는 작업이 향후 필요해보인다.

컨트롤 버튼(controlButtons)을 따라가면 addDefaultControlBar를 실행시킨다.

addDefaultControlBar

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/**
 * Add default control bar
 * @param {array} array - The control buttons array
 */
PANOLENS.Viewer.prototype.addDefaultControlBar = function ( array ) {
    var scope = this;
    if ( this.widget ) {
        console.warn( 'Default control bar exists' );
        return;
    }
    this.widget = new PANOLENS.Widget( this.container );
    this.widget.addEventListener'panolens-viewer-handler', this.eventHandler.bind( this ) );
    this.widget.addControlBar();
    array.forEach( function( buttonName ){
        scope.widget.addControlButton( buttonName );
    } );
};
cs

Widget을 생성하고 다시 addControlButton을 호출하며 배열에 있는 버튼 이름을 넘긴다.

addControlButton

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
/**
 * Add buttons on top of control bar
 * @param {string} name - The control button name to be created
 */
PANOLENS.Widget.prototype.addControlButton = function ( name ) {
 
    var element;
 
    switchname ) {
 
        case 'fullscreen':
 
            element = this.createFullscreenButton();
            this.fullscreenElement = element; 
 
            break;
 
        case 'setting':
 
            element = this.createSettingButton();
            this.settingElement = element;
 
            break;
 
        case 'video':
 
            element = this.createVideoControl();
            this.videoElement = element;
 
            break;
 
        default:
 
            return;
 
    }
 
    if ( !element ) {
 
        return;
 
    }
 
    this.barElement.appendChild( element );
 
};
cs

버튼 이름에 따라서 fullscreen은 createFullscreenButton, setting은 createSettingButton, video는 createVideoControl를 호출하고 element를 만들어서 barElement에 appendChild 시킨다.