Actionscript 3 AS3-通过鼠标单击添加和删除OneInterFrame EventListener

Actionscript 3 AS3-通过鼠标单击添加和删除OneInterFrame EventListener,actionscript-3,event-listener,Actionscript 3,Event Listener,尝试添加EventListener,然后单击鼠标删除EventListener。添加一个有效,但它不起作用。在布顿身上是加卢麦克,在巴顿身上是加卢克洛斯麦克 gall_mc.addEventListener(MouseEvent.CLICK, scroller); function scroller(event:MouseEvent):void { var verticalCenter:Number = stage.stageHeight / 2; var limit:Num

尝试添加EventListener,然后单击鼠标删除EventListener。添加一个有效,但它不起作用。在布顿身上是加卢麦克,在巴顿身上是加卢克洛斯麦克

gall_mc.addEventListener(MouseEvent.CLICK, scroller);

function scroller(event:MouseEvent):void
{

    var verticalCenter:Number = stage.stageHeight / 2;
    var limit:Number = stage.stageHeight - galleryHolder.height;
    var speed:Number = 0.1;
    var scrollY:Number = 0;

    stage.addEventListener(Event.ENTER_FRAME, scrollContent);

    function scrollContent(e:Event):void
    {
        scrollY =  -  speed * (mouseY - verticalCenter);
        galleryHolder.y +=  scrollY;
        if (galleryHolder.y>0) { galleryHolder.y= 0;}
        else if (galleryHolder.y< limit) { galleryHolder.y= limit; }
    }
    function eventHandler(event:Event):void
    {
    event.currentTarget.removeEventListener(Event.ENTER_FRAME, MouseEvent.CLICK.gall_close_mc);     
    }


}
========

看。

你把这里的一些事情弄糊涂了。首先,removeEventListener将函数作为第二个参数,而不是MouseEvent.CLICK.gall\u close\u mc,它什么都不是。其次,在AS3中嵌套函数不是一个好主意,除非你真的不知道自己在做什么,而你不知道。第三,函数eventHandler将不会被调用,除非您显式地调用它,而您不是。重新措辞问题,解释你想做什么,可能附上一张图片。这里的人们正在努力学习,有些人帮助人们不要侮辱他们!你能指出我侮辱某人的地方吗?不过,代码仍然可以改进。在AS3中,以这种方式嵌套函数不是一个好主意,scroller是类/对象的一个很好的候选者。
gall_mc.addEventListener(MouseEvent.CLICK, scroller);

function scroller(event:MouseEvent):void
{

    var verticalCenter:Number = stage.stageHeight / 2;
    var limit:Number = stage.stageHeight - galleryHolder.height;
    var speed:Number = 0.1;
    var scrollY:Number = 0;

    stage.addEventListener(Event.ENTER_FRAME, scrollContent);

    function scrollContent(e:Event):void
    {
        scrollY =  -  speed * (mouseY - verticalCenter);
        galleryHolder.y +=  scrollY;

    }
    gall_close_mc.addEventListener(MouseEvent.CLICK, closeClickHandler);

    function closeClickHandler(event:MouseEvent):void
    {

        stage.removeEventListener(Event.ENTER_FRAME, scrollContent);
    }



}
gall_close_mc.addEventListener(MouseEvent.CLICK, closeClickHandler);

function closeClickHandler(event:MouseEvent):void 
{
     // removeEventListener method params are :- 
     // 1. the event name, 2. the handler you assigned to it
     stage.removeEventListener(Event.ENTER_FRAME, closeClickHandler);
}