Как сохранить ползунок громкости фиксированным (при повторном входе в сцену) Flash
Итак, у меня есть сцена, которая представляет собой меню опций; в сцене у меня есть слайдер громкости; он работает нормально (я могу сдвинуть его, и громкость будет уменьшаться / увеличиваться), но когда я покидаю сцену, это дает мне ошибку (происходит только, если я играю с ползунком):
Ошибка типа: ошибка № 1009: невозможно получить доступ к свойству или методу пустой ссылки на объект.
И это указывает на:
var myVolume:Number=V_Slider.V_Knob.x/mySliderLength;
и когда я снова вхожу, ползунок громкости возвращается в исходное положение. Я очень плохо знаком с Flash и AS3, поэтому любая помощь, которую я могу получить, очень ценится.
Вот код для ползунка громкости:
var dragging:Boolean=false;
var mySliderLength:uint=240;
var boundingBox:Rectangle=new Rectangle(0,0,mySliderLength,0);
V_Slider.V_Knob.addEventListener(MouseEvent.MOUSE_DOWN, dragKnob);
stage.addEventListener(MouseEvent.MOUSE_UP, releaseKnob);
V_Slider.V_Knob.buttonMode=true;
function dragKnob(myEvent:Event):void {
V_Slider.V_Knob.startDrag(false, boundingBox);
dragging=true;
V_Slider.V_Knob.addEventListener(Event.ENTER_FRAME, adjustVolume);
}
function releaseKnob(myEvent:Event):void {
if (dragging) {
V_Slider.V_Knob.stopDrag();
dragging=false;
}
}
function adjustVolume(myEvent:Event):void {
var myVolume:Number=V_Slider.V_Knob.x/mySliderLength;
var myTransform:SoundTransform=new SoundTransform(myVolume);
if (BGM_SC!=null) {
BGM_SC.soundTransform=myTransform;
}
}
1 ответ
Это общая проблема человека, которого ты можешь искать. Когда вы меняете сцену, вам нужно удалить свои События, а когда вы вернетесь к этой сцене, вам нужно добавить их снова. В этом случае вы можете использовать это
function workEvents(action:String):void
{
if(action == "add")
{
V_Slider.V_Knob.addEventListener(MouseEvent.MOUSE_DOWN, dragKnob);
stage.addEventListener(MouseEvent.MOUSE_UP, releaseKnob);
}
else
{
V_Slider.V_Knob.removeEventListener(MouseEvent.MOUSE_DOWN, dragKnob);
stage.removeEventListener(MouseEvent.MOUSE_UP, releaseKnob);
}
}
когда ты используешь это gotoAndStop/gotoAndPlay(1,"Scene 2");
также используйте это: workEvents("rm");
это удалит ваши события и эта проблема должна закончиться:)
Я надеюсь, что это помогает:))