[英]AS3 - add and remove an onenterframe EventListener, with a mouse click
嘗試添加一個EventListener,並通過單擊鼠標刪除一個EventListener。 添加一項有效,並且將其無效。 在Buton上是gall_mc,在off上是gall_close_mc
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);
}
}
========
感謝net.uk.sweet,我組合了我們的代碼,它可以工作了!
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);
}
請參閱EventDispatcher
docs 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.