SO object living

by pleclech
♥0 | Line 76 | Modified 2011-06-01 19:16:15 | MIT License
play

ActionScript3 source code

/**
 * Copyright pleclech ( http://wonderfl.net/user/pleclech )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/e9W4
 */

package {
    import flash.events.Event;
    import flash.utils.setTimeout;
    import com.bit101.components.TextArea
    
    public class FlashTest extends TextArea {
        public function FlashTest() {
            width=400
            height=400
            setTimeout(doTest, 500)                        
        }
        public function doTest():void {
            addEventListener(Event.ENTER_FRAME, onEnterFrame)
            var mc:MartysMC = new MartysMC(trace)
            var dataObject:Object =
            {
                x: 10,
                y: 34,
                alpha: 0.6
            };
            
            mc.update(dataObject);
            traceRegistered()
            
            mc.update({
                x: 10,
                y: 34,
                alpha: 0.6
            });
            traceRegistered()
        }
        public function trace(...args):void {
            text=text+args.join(", ")+"\n"
        }
        private var _isEmptyChecked:Boolean=false
        public function traceRegistered():void{
            var cnt:int=0
            for each (var id:int in Watch.dict) {
                cnt ++
                trace(new Date()+" : "+" live object  "+id)
            }
            if (cnt==0 && !_isEmptyChecked) {
                trace(new Date() + " : " + " no object living")
                _isEmptyChecked = true
            } else {
                _isEmptyChecked = (cnt==0)
            }            
        }

        public function onEnterFrame(e:Event):void{
            traceRegistered()
        }
    }
}
import flash.display.MovieClip;
import flash.utils.Dictionary;
class Watch {
    public static const dict:Dictionary=new Dictionary(true)
    public static var id:int=0
    public static function register(object:Object):int {
        ++id
        dict[object]=id
        return id
    }
}

class MartysMC extends MovieClip {
        private var _out:Function
        public function MartysMC(out:Function){
            _out=out
        }

        /**
         * Updates this
         * @param obj An object containing key/value pairs to represent new property values
         */
        public function update(obj:Object):void
        {
            var i:String;
            for(i in obj)
            {
                this[i] = obj[i];
            }
            
            // just add object to check liveness
            _out(new Date()+ " : " + " registering " + Watch.register(obj))
        }
}

Forked