事件监听器功能不会停止工作

时间:2015-02-12 05:27:52

标签: actionscript-3 flash-cs6

我已经制作了一个内容,在一帧中我有10个动画片段(5个颜色对),等分为两列。我已经为舞台mousedown,mouseup,mouse move添加了三个事件监听器。我已经从一个动画片段到另一个动画片段绘制了一条线以将一个列影片剪辑与另一个列相同的影片剪辑相匹配..我将代码添加到时间轴但是当我使用next / prev按钮进入下一帧或前一帧(其他有一些活动)时警告出现了:

  

无法访问null对象引用的属性或方法。       在CL3_Sc_Pat12_SL05_fla :: MainTimeline / mMove()
  这个waring没有为mousedown()mouseup()显示。我已经使用了相同的下一个和相同的前一个按钮3帧。对于帧跳跃我编号每帧作为帧没有1,2,3.if frameno == 3 goto帧2如果frameno == 2转到第1帧,那么它的工作原理......帧跳转代码在第1帧......

这是我的代码:

stage.addEventListener(MouseEvent.MOUSE_DOWN, mDown);    
stage.addEventListener(MouseEvent.MOUSE_UP, mUp);    
stage.addEventListener(MouseEvent.MOUSE_MOVE, mMove);

function mDown(event:MouseEvent):void
{
    mouseHolding = true;    
    clickedX = mouseX;    
    clickedY = mouseY;     
    myDrawing.graphics.moveTo(mouseX, mouseY);
    Line_draw.graphics.moveTo(mouseX, mouseY);

    if (pencil.hitTestObject(box1))   //box of 1st column
    {                   
        trace("box1 value is: "+chk_val_1);
    }
}

function mUp(MouseEvent):void
{
    myDrawing.graphics.lineTo(mouseX, mouseY);
    mouseHolding = false;   

    if (pencil.hitTestObject(hit_box1)) ////box of 2nd column
    {
        trace(boxes have same color);
        Line_draw.graphics.lineTo(mouseX, mouseY);
    } 
}

function mMove(MouseEvent):void
{   
    if (mouseHolding && mouseY < 510 )    
    {    
        clearTemp();    
        Line_draw.graphics.lineTo(mouseX, mouseY);    
    }
}

function clearTemp():void
{
    Line_draw.graphics.clear();
    Line_draw.graphics.lineStyle(6,0x0066CC,1);
    Line_draw.graphics.moveTo(clickedX, clickedY);
}

function nxt_click(event:MouseEvent)
{
    gotoAndPlay(3);     
}
function prev_click(event:MouseEvent)
{
    gotoAndPlay(1);     
}

我的代码工作正常,但我想知道为什么这个警告会一次又一次地出现?

1 个答案:

答案 0 :(得分:1)

你需要在你的&#34; anim4&#34;中画出箭头(线条)。框架,所以在这个框架之外你必须禁用这个功能并删除为此创建的所有舞台监听器,所以你可以这样做:

function nxt_click(event:MouseEvent)
{   
    if(){
        // your other instructions
    }
    // your other instructions

    else if (my_frame == 4)
    {
        stage.removeEventListener(MouseEvent.MOUSE_DOWN, mDown);
        stage.removeEventListener(MouseEvent.MOUSE_UP, mUp);
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, mMove); 
        gotoAndPlay("anim5");       
    }
}

退出&#34; anim4&#34;你应该做同样的事情。按下上一个按钮即可显示框架。

希望可以提供帮助。