[flash] Elegant Way to use Weak Listeners

Utility Class

package mypackage;

import flash.events.IEventDispatcher;

class WeakListeners
{
    public static /*inline*/ function addWeakListener(d:IEventDispatcher, type:String, 
                                    listener: Dynamic -> Void, ?useCapture:Bool = false, ?priority:Int = 0):Void
    {
        d.addEventListener(type, listener, useCapture, priority, true);
    }
}

usage:

package mypackage;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.Lib;


using mypackage.WeakListeners;

class Main 
{
    public static function main () 
    {
        var sprite = new Sprite();
        var g = sprite.graphics;
        g.beginFill(0xFF0000);
        g.drawRect(0, 0, 100, 100);
        g.endFill();
        Lib.current.addChild(sprite);
        sprite.addWeakListener(MouseEvent.CLICK, function (e) trace("click"));
    }
}

i think it's clearer and more readable than writing:

sprite.addEventListener(type, listener, false, 0, true);

it also decreases the possibility to forget using weak references.

version #7026, modified 2009-09-19 02:06:53 by tylermac