我有一个控制背景音乐音量的滑块。
在滑块组件参数值中:我将其设置为5.
当我将滑块滑动到2并导航到其他影片剪辑时。然后返回滑块,值为5.如何存储2的值而不是显示5?
import fl.events.SliderEvent;
import flash.media.SoundTransform;
var myTransform = new SoundTransform();
scMC.addEventListener(SliderEvent.THUMB_DRAG, changeVolume);
function changeVolume(event:SliderEvent):void{
MovieClip(this.root).myChannel.soundTransform = myTransform;
myTransform.volume = scMC.value;
volumeText.text = "Volume is " + scMC.value;
}
答案 0 :(得分:0)
您需要将值存储在全局变量或静态变量中。如果您不想进入自定义类文件和静态变量,可以使用时间轴代码执行此操作的简单方法如下:
在根时间轴代码中:
var sliderVal;
在您的滑块父母时间轴代码中(来自您的问题):
var myTransform:SoundTransform = new SoundTransform();
scMC.addEventListener(SliderEvent.THUMB_DRAG, changeVolume);
if(this.root["sliderVal"]){
scMC.value = this.root["sliderVal"];
}
function changeVolume(event:SliderEvent):void{
myTransform.volume = scMC.value;
this.root["sliderVal"] = scMC.value;
MovieClip(this.root).myChannel.soundTransform = myTransform;
volumeText.text = "Volume is " + scMC.value;
}
答案 1 :(得分:0)
您的问题是您没有将View与模型(数据)分开,因此模型的生命周期与View的生命周期相同。为了使模型能够独立于视图生存,您需要使视图仅显示它给出的值,并将值的任何更改提供给外部以供以后使用。
所以,比如:
public class SliderView extends MovieClip {
protected var _slider:Slider;
protected var _sliderValue:Number;
/*Flash will populate this variable for you if you put
a slider on the stage and give it an instance name of "slider."
*/
public function get slider():Slider {
return _slider;
}
public function set slider(value:Slider):void {
if (value != _slider) {
if (_slider) {
_slider.removeEventListener(SliderEvent.CHANGE, onSliderChange);
}
_slider=value;
if (_slider) {
_slider.addEventListener(SliderEvent.CHANGE, onSliderChange);
}
}
}
public function get sliderValue():Number{
return _sliderValue;
}
public function set sliderValue(value:Number):void {
if (value != _sliderValue) {
_sliderValue = value;
if (_slider) {
_slider.value = value;
}
dispatchEvent(new Event('sliderValueChanged'));//anything needing to know about the change is notified immediately
}
}
protected function onSliderChange(e:SliderEvent):void {
sliderValue = Slider(e.target).value;
}
}
请注意,从可维护性角度来看,此代码与您发布的时间轴样式代码相比具有多个优势。