我有一个用actionscript 3编写的360视图。如何使用播放/暂停按钮控制滑块?我能够让代码工作,但我无法想出用播放/暂停按钮控制滑块的方法。我正在将它用于产品查看器。
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 :(得分: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;
}