1 actionscript comment /* SVN FILE: $Id: FakeObject.as 42 2008-03-26 03:18:02Z xpointsh $ */
2 actionscript comment /**
3 actionscript comment * Description
5 actionscript comment * Fake
6 actionscript comment * Copyright 2008, Sean Chatman and Garrett Woodworth
8 actionscript comment * Licensed under The MIT License
9 actionscript comment * Redistributions of files must retain the above copyright notice.
10 actionscript comment *
11 actionscript comment * @filesource
12 actionscript comment * @copyright Copyright 2008, Sean Chatman and Garrett Woodworth
13 actionscript comment * @link http://code.google.com/p/fake-as3/
14 actionscript comment * @package fake
15 actionscript comment * @subpackage com.fake
16 actionscript comment * @since 2008-03-06
17 actionscript comment * @version $Revision: 42 $
18 actionscript comment * @modifiedby $LastChangedBy: xpointsh $
19 actionscript comment * @lastmodified $Date: 2008-03-25 20:18:02 -0700 (Tue, 25 Mar 2008) $
20 actionscript comment * @license http://www.opensource.org/licenses/mit-license.php The MIT License
21 actionscript comment */
22 actionscript code package com.fake
24 actionscript code import flash.utils.*;
26 actionscript comment /**
27 actionscript comment * FakeObject is the root object for all classes
28 actionscript comment * in Fake. It contains a reference to the class name
29 actionscript comment * and class object. These are obtained by using the
30 actionscript comment * reflection classes in flash.utils.
31 actionscript comment */
32 actionscript code public dynamic class FakeObject extends Proxy
34 actionscript comment /**
35 actionscript comment * The name of the top level subclass
36 actionscript comment */
37 actionscript code [Transient] public var className:String;
38 actionscript comment /**
39 actionscript comment * A reference to the top level subclass
40 actionscript comment */
41 actionscript code [Transient] public var ClassRef:Class;
43 actionscript code private var __item:Array;
45 actionscript code public function FakeObject()
47 actionscript code getClassInfo();
48 actionscript code __item = new Array();
51 actionscript comment /**
52 actionscript comment * This method is called by the constructor. Populates the className and ClassRef using
53 actionscript comment * getQualifiedClassName and getDefinitionByName
54 actionscript comment */
55 actionscript code private function getClassInfo():void
57 actionscript code var qcName:Array = getQualifiedClassName(this).split("::");
58 actionscript code className = qcName[1];
60 actionscript code var classPath:String = getQualifiedClassName(this).replace( "::", "." );
61 actionscript code ClassRef = getDefinitionByName(classPath) as Class;
64 actionscript comment /**
65 actionscript comment * Override the callProperty of the flash_proxy
66 actionscript comment * @param method
67 actionscript comment * @param args
68 actionscript comment * @return
69 actionscript comment *
70 actionscript comment */
71 actionscript code override flash_proxy function callProperty(method: *, ...args):*
75 actionscript code return ClassRef.prototype[method].apply(method, args);
77 actionscript code catch (e:Error)
79 actionscript code return overload(method, args);
83 actionscript comment /**
84 actionscript comment * To be overriden by subclasses. Allows calling any method on any object that extends FakeOject
85 actionscript comment * @param method
86 actionscript comment * @param args
87 actionscript comment *
88 actionscript comment */
89 actionscript code protected function overload(method:*, args:Array):void
93 actionscript comment /**
94 actionscript comment * get a property on the object
95 actionscript comment * @param name
96 actionscript comment * @return
97 actionscript comment *
98 actionscript comment */
99 actionscript code override flash_proxy function getProperty(name:*):*
101 actionscript code return overloadGetProperty(name);
104 actionscript code protected function overloadGetProperty(name:*):*
106 actionscript code return __item[name];
109 actionscript comment /**
110 actionscript comment * Set a property on the object
111 actionscript comment * @param name
112 actionscript comment * @param value
113 actionscript comment *
114 actionscript comment */
115 actionscript code override flash_proxy function setProperty(name:*, value:*):void
117 actionscript code overloadSetProperty(name, value)
120 actionscript code protected function overloadSetProperty(name:*, value:*):void
122 actionscript code __item[name] = value;
125 actionscript comment /**
126 actionscript comment * Check if the property exits
127 actionscript comment * @param name
128 actionscript comment * @param value
129 actionscript comment *
130 actionscript comment */
131 actionscript code override flash_proxy function hasProperty(name:*):Boolean
133 actionscript code if (__item[name])
135 actionscript code return true;
137 actionscript code return false;