Как сохранить ползунок громкости фиксированным (при повторном входе в сцену) 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");
это удалит ваши события и эта проблема должна закончиться:)

Я надеюсь, что это помогает:))

Другие вопросы по тегам