get the class of any object
...and also create another instance of it
The application mxml:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="test()" viewSourceURL="srcview/index.html">
<mx:Script>
<![CDATA[
import mx.controls.NumericStepper;
import flash.utils.getQualifiedClassName;
private function test():void {
var o1:MovieClip = new MovieClip();
var o2:NumericStepper = new NumericStepper();
var o3:Object = new TestClass();
testResults.text += getObjectClass(o1);
testResults.text += "\n" + getObjectClass(o2);
testResults.text += "\n" + getObjectClass(o3);
testResults.text += "\n\n\nDuplication:";
testResults.text += "\n\nobj1:" + newInstanceOf(o1);
testResults.text += "\n\nobj2:" + newInstanceOf(o2);
testResults.text += "\n\nobj3:" + newInstanceOf(o3);
}
private function getObjectClass(obj:*):Class {
var className:String = getQualifiedClassName(obj);
var classOfObj:Class = ApplicationDomain.currentDomain.getDefinition(className) as Class;
return classOfObj;
}
private function newInstanceOf(obj:*):Object {
var objectClass:Class = getObjectClass(obj);
if(objectClass) {
return new objectClass();
}
return null;
}
]]>
</mx:Script>
<mx:Text id="testResults"/>
</mx:Application>
The TestClass class (save it in the same folder as the mxml, in a file called TestClass.as):
package
{
public class TestClass
{
public function TestClass()
{
trace("this is just a test class");
}
}
}