0

所以我有一个场景是一个选项菜单;在场景中,我有一个音量滑块;它工作正常(我可以滑动它并且音量会下降/上升),但是当我离开场景时,它会给我一个错误(只有在我使用滑块时才会发生):

TypeError:错误 #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; 
    }    
}  
4

1 回答 1

0

这是一个常见的问题,你可以寻找它。当你改变你的场景时,你需要删除你的事件,当你回到那个场景时,你需要再次添加它们。在这种情况下,你可以使用这个

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");
这将删除你的事件并且该问题应该结束:)

我希望它有帮助:))

于 2015-08-21T11:12:04.100 回答