所以我有一个场景,这是一个选项菜单;在场景中我有一个音量滑块;它工作正常(我可以滑动它,音量会下降/上升),但是当我离开现场时,它会给我一个错误(只有当我使用滑块时才会发生):
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;
}
}
答案 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");
这将删除您的事件,该问题应该结束:)
我希望它有帮助:))