2013-09-25 52 views
0

我有一個用actionscript 3編寫的360度視圖。如何通過播放/暫停按鈕控制滑塊?我能夠讓代碼工作,但我無法找到一種方法來通過播放/暫停按鈕來控制滑塊。我正在使用這個產品查看器。如何使用ActionScript中的播放/暫停按鈕控制滑塊?

private function createSlider():void 
    { 
     //Create a librarie object in the stage. 
     _roteableObject = new LibrarieObject(); 
     _roteableObject.x = stage.stageWidth/2 - _roteableObject.width/2; 
     _roteableObject.y = 0; 
     _roteableObject.gotoAndStop(1); 
     addChild(_roteableObject); 

     //Create the slider 
     _slider = new Slider(); 
     _slider.minimum = 1; 
     _slider.maximum = _roteableObject.totalFrames; 
     addChild(_slider); 
     _slider.width = stage.stageWidth - 250; 
     _slider.addEventListener(SliderEvent.THUMB_DRAG, sliderChangeHandler); 
     _slider.move(stage.stageWidth/2 - _slider.width/2 + 90, _roteableObject.y + 25 + _roteableObject.height - 10); 
     _slider.addEventListener(MouseEvent.MOUSE_DOWN, stop360); 


     //play/stop button 
     _play_btn = new play_btn(); 
     _stop_btn = new stop_btn(); 
      addChild(_play_btn); 
     addChild(_stop_btn); 
     _stop_btn.visible = false; 
     _play_btn.addEventListener(MouseEvent.MOUSE_UP, play360); 
     _stop_btn.addEventListener(MouseEvent.MOUSE_UP, stop360); 
    } 

    private function sliderChangeHandler(e:Event):void 
    { 
     _roteableObject.gotoAndStop(e.target.value); 
    } 

    private function play360(e:Event):void 
    { 
     _roteableObject.play(); 
     _play_btn.visible = false; 
     _stop_btn.visible = true; 
    } 
    private function stop360(e:Event):void 
    { 
     _roteableObject.stop(); 
     _play_btn.visible = true; 
     _stop_btn.visible = false; 
    } 
} 

}

回答

0

下面是應該做的,你要尋找的修改。當您點擊播放時,它會將一個ENTER_FRAME聽衆添加到roteableObject變量中。在每個新幀上,它將滑塊的value屬性設置爲當前幀號roteableObject,並在調用stop360()時刪除偵聽器。

private function createSlider():void 
    { 
     //Create a librarie object in the stage. 
     _roteableObject = new LibrarieObject(); 
     _roteableObject.x = stage.stageWidth/2 - _roteableObject.width/2; 
     _roteableObject.y = 0; 
     _roteableObject.gotoAndStop(1); 
     addChild(_roteableObject); 

     //Create the slider 
     _slider = new Slider(); 
     _slider.minimum = 1; 
     _slider.maximum = _roteableObject.totalFrames; 
     addChild(_slider); 
     _slider.width = stage.stageWidth - 250; 
     _slider.addEventListener(SliderEvent.THUMB_DRAG, sliderChangeHandler); 
     _slider.move(stage.stageWidth/2 - _slider.width/2 + 90, _roteableObject.y + 25 + _roteableObject.height - 10); 
     _slider.addEventListener(MouseEvent.MOUSE_DOWN, stop360); 


     //play/stop button 
     _play_btn = new play_btn(); 
     _stop_btn = new stop_btn(); 
     addChild(_play_btn); 
     addChild(_stop_btn); 
     _stop_btn.visible = false; 
     _play_btn.addEventListener(MouseEvent.MOUSE_UP, play360); 
     _stop_btn.addEventListener(MouseEvent.MOUSE_UP, stop360); 
    } 

    private function sliderChangeHandler(e:Event):void 
    { 
     _roteableObject.gotoAndStop(e.target.value); 
    } 

    private function play360(e:Event):void 
    { 
     //Listen to new frame events 
     _roteableObject.addEventListener(Event.ENTER_FRAME, roteableObject_enterFrame); 

     _roteableObject.play(); 
     _play_btn.visible = false; 
     _stop_btn.visible = true; 
    } 

    private function stop360(e:Event):void 
    { 
     //Stop listening to new frame events 
     if (_roteableObject.hasEventListener(Event.ENTER_FRAME)) _roteableObject.removeEventListener(Event.ENTER_FRAME, roteableObject_enterFrame); 

     _roteableObject.stop(); 
     _play_btn.visible = true; 
     _stop_btn.visible = false; 
    } 

    private function roteableObject_enterFrame(evt:Event):void 
    { 
     //Update slider position with current frame 
     _slider.value = _roteableObject.currentFrame; 
    } 
+0

謝謝!這就像一個冠軍!你達人!!!! –

+0

好消息!請點擊勾號將其標記爲接受:) – hanenbro