actionscript comment /* SVN FILE: $Id: FakeObject.as 42 2008-03-26 03:18:02Z xpointsh $ */ actionscript comment /** actionscript comment * Description actionscript comment * actionscript comment * Fake actionscript comment * Copyright 2008, Sean Chatman and Garrett Woodworth actionscript comment * actionscript comment * Licensed under The MIT License actionscript comment * Redistributions of files must retain the above copyright notice. actionscript comment * actionscript comment * @filesource actionscript comment * @copyright Copyright 2008, Sean Chatman and Garrett Woodworth actionscript comment * @link http://code.google.com/p/fake-as3/ actionscript comment * @package fake actionscript comment * @subpackage com.fake actionscript comment * @since 2008-03-06 actionscript comment * @version $Revision: 42 $ actionscript comment * @modifiedby $LastChangedBy: xpointsh $ actionscript comment * @lastmodified $Date: 2008-03-25 20:18:02 -0700 (Tue, 25 Mar 2008) $ actionscript comment * @license http://www.opensource.org/licenses/mit-license.php The MIT License actionscript comment */ actionscript code package com.fake actionscript code { actionscript code import flash.utils.*; actionscript blank actionscript comment /** actionscript comment * FakeObject is the root object for all classes actionscript comment * in Fake. It contains a reference to the class name actionscript comment * and class object. These are obtained by using the actionscript comment * reflection classes in flash.utils. actionscript comment */ actionscript code public dynamic class FakeObject extends Proxy actionscript code { actionscript comment /** actionscript comment * The name of the top level subclass actionscript comment */ actionscript code [Transient] public var className:String; actionscript comment /** actionscript comment * A reference to the top level subclass actionscript comment */ actionscript code [Transient] public var ClassRef:Class; actionscript blank actionscript code private var __item:Array; actionscript blank actionscript code public function FakeObject() actionscript code { actionscript code getClassInfo(); actionscript code __item = new Array(); actionscript code } actionscript blank actionscript comment /** actionscript comment * This method is called by the constructor. Populates the className and ClassRef using actionscript comment * getQualifiedClassName and getDefinitionByName actionscript comment */ actionscript code private function getClassInfo():void actionscript code { actionscript code var qcName:Array = getQualifiedClassName(this).split("::"); actionscript code className = qcName[1]; actionscript blank actionscript code var classPath:String = getQualifiedClassName(this).replace( "::", "." ); actionscript code ClassRef = getDefinitionByName(classPath) as Class; actionscript code } actionscript blank actionscript comment /** actionscript comment * Override the callProperty of the flash_proxy actionscript comment * @param method actionscript comment * @param args actionscript comment * @return actionscript comment * actionscript comment */ actionscript code override flash_proxy function callProperty(method: *, ...args):* actionscript code { actionscript code try actionscript code { actionscript code return ClassRef.prototype[method].apply(method, args); actionscript code } actionscript code catch (e:Error) actionscript code { actionscript code return overload(method, args); actionscript code } actionscript code } actionscript blank actionscript comment /** actionscript comment * To be overriden by subclasses. Allows calling any method on any object that extends FakeOject actionscript comment * @param method actionscript comment * @param args actionscript comment * actionscript comment */ actionscript code protected function overload(method:*, args:Array):void actionscript code { actionscript code } actionscript blank actionscript comment /** actionscript comment * get a property on the object actionscript comment * @param name actionscript comment * @return actionscript comment * actionscript comment */ actionscript code override flash_proxy function getProperty(name:*):* actionscript code { actionscript code return overloadGetProperty(name); actionscript code } actionscript blank actionscript code protected function overloadGetProperty(name:*):* actionscript code { actionscript code return __item[name]; actionscript code } actionscript blank actionscript comment /** actionscript comment * Set a property on the object actionscript comment * @param name actionscript comment * @param value actionscript comment * actionscript comment */ actionscript code override flash_proxy function setProperty(name:*, value:*):void actionscript code { actionscript code overloadSetProperty(name, value) actionscript code } actionscript blank actionscript code protected function overloadSetProperty(name:*, value:*):void actionscript code { actionscript code __item[name] = value; actionscript code } actionscript blank actionscript comment /** actionscript comment * Check if the property exits actionscript comment * @param name actionscript comment * @param value actionscript comment * actionscript comment */ actionscript code override flash_proxy function hasProperty(name:*):Boolean actionscript code { actionscript code if (__item[name]) actionscript code { actionscript code return true; actionscript code } actionscript code return false; actionscript code } actionscript code } actionscript code }