如何保持音量滑块固定(重新进入场景时)闪光灯

时间:2015-08-21 06:33:46

标签: actionscript-3 flash slider volume soundchannel

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

  

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; 
    }    
}  

1 个答案:

答案 0 :(得分: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");
这将删除您的事件,该问题应该结束:)

我希望它有帮助:))