关键代码:
1
<?
xml version="1.0" encoding="utf-8"
?>
2 <!--
3
4 [Pepe's Samples] part 1
5
6 Author : Pepe at Flex User Group in Japan (FxUG).
7 an architect at LINKcom corporation.
8 Blog : http://Shigeru-Nakagaki.com/
9 FxUG : http://www.fxug.net/
10 LINKcom : http://www.linkcom.co.jp/ (Japanese only)
11
12 Instructions
13 You can use this sample code in your own responsibility.
14
15 -->
16 < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="vertical"
viewSourceURL ="srcview/index.html" >
17
18 < mx:creationComplete >
19 <![CDATA[
20 initApp();
21 ]]>
22 </ mx:creationComplete >
23
24 < mx:Script >
25 <![CDATA[
26 import flash.utils.describeType;
27 import mx.controls.Alert;
28
29
30 private var ld:Loader;
31
32 private function initApp():void
33 {
34 ld = new Loader();
35 ld.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleted);
36 ld.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrHandler);
37 ld.contentLoaderInfo.addEventListener(
SecurityErrorEvent.SECURITY_ERROR,securityErrHandler);
38 }
39
40 private function loadSWF():void
41 {
42 var sSWF:String = txtURL.text;
43 var req:URLRequest = new URLRequest(sSWF);
44 var context:LoaderContext = new LoaderContext(false,
ApplicationDomain.currentDomain,null);
45 req.contentType = "";
46 ld.load(req,context);
47 }
48
49 private function getDef():void
50 {
51 var cls:Class = loadClassDefinition(txtClassName.text);
52 if(cls){
53 var obj:Object = new cls();
54 txtDump.text = flash.utils.describeType(obj).toString();
55 }
56 }
57
58 private function loadCompleted(e:Event):void
59 {
60 Alert.show("[" + e.target.url + "] loaded");
61 }
62
63 private function ioErrHandler(e:IOErrorEvent):void
64 {
65 Alert.show(e.text);
66 }
67
68 private function securityErrHandler(e:IOErrorEvent):void
69 {
70 Alert.show(e.text);
71 }
72
73 private function loadClassDefinition(sClassName:String):Class
74 {
75 var cls:Class = null;
76 try{
77 cls = ld.contentLoaderInfo.applicationDomain.
getDefinition(sClassName) as Class;
78 return cls;
79 }catch(e:Error){
80 throw new IllegalOperationError(sClassName + " doesn't exist");
81 }
82 return cls;
83 }
84
85
86 ]]>
87 </ mx:Script >
88
89 < mx:Label text ="A sample of describing class definition " fontWeight ="bold" fontSize ="16" />
90 < mx:HRule width ="100%" height ="40" />
91 < mx:HBox width ="100%" >
92 < mx:TextInput id ="txtURL" text =
"http://Shigeru-Nakagaki.com/flex_samples/ApplicationDomain/getDefinitionDump
/RunTimeClass03/RunTimeClass03.swf" width ="400" />
93 < mx:Button x ="10" y ="10" label ="Load SWF" click ="loadSWF()" />
94 </ mx:HBox >
95 < mx:HBox width ="100%" >
96 < mx:TextInput id ="txtClassName" text ="org.Pepe.ExPanel" width ="400" />
97 < mx:Button x ="10" y ="40" label ="Get Definition" click ="getDef()" />
98 </ mx:HBox >
99 < mx:HBox width ="100%" height ="90%" >
100 < mx:TextArea id ="txtDump" width ="100%" height ="100%" />
101 </ mx:HBox >
102
103 </ mx:Application >
104
105
2 <!--
3
4 [Pepe's Samples] part 1
5
6 Author : Pepe at Flex User Group in Japan (FxUG).
7 an architect at LINKcom corporation.
8 Blog : http://Shigeru-Nakagaki.com/
9 FxUG : http://www.fxug.net/
10 LINKcom : http://www.linkcom.co.jp/ (Japanese only)
11
12 Instructions
13 You can use this sample code in your own responsibility.
14
15 -->
16 < mx:Application xmlns:mx ="http://www.adobe.com/2006/mxml" layout ="vertical"
viewSourceURL ="srcview/index.html" >
17
18 < mx:creationComplete >
19 <![CDATA[
20 initApp();
21 ]]>
22 </ mx:creationComplete >
23
24 < mx:Script >
25 <![CDATA[
26 import flash.utils.describeType;
27 import mx.controls.Alert;
28
29
30 private var ld:Loader;
31
32 private function initApp():void
33 {
34 ld = new Loader();
35 ld.contentLoaderInfo.addEventListener(Event.COMPLETE,loadCompleted);
36 ld.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,ioErrHandler);
37 ld.contentLoaderInfo.addEventListener(
SecurityErrorEvent.SECURITY_ERROR,securityErrHandler);
38 }
39
40 private function loadSWF():void
41 {
42 var sSWF:String = txtURL.text;
43 var req:URLRequest = new URLRequest(sSWF);
44 var context:LoaderContext = new LoaderContext(false,
ApplicationDomain.currentDomain,null);
45 req.contentType = "";
46 ld.load(req,context);
47 }
48
49 private function getDef():void
50 {
51 var cls:Class = loadClassDefinition(txtClassName.text);
52 if(cls){
53 var obj:Object = new cls();
54 txtDump.text = flash.utils.describeType(obj).toString();
55 }
56 }
57
58 private function loadCompleted(e:Event):void
59 {
60 Alert.show("[" + e.target.url + "] loaded");
61 }
62
63 private function ioErrHandler(e:IOErrorEvent):void
64 {
65 Alert.show(e.text);
66 }
67
68 private function securityErrHandler(e:IOErrorEvent):void
69 {
70 Alert.show(e.text);
71 }
72
73 private function loadClassDefinition(sClassName:String):Class
74 {
75 var cls:Class = null;
76 try{
77 cls = ld.contentLoaderInfo.applicationDomain.
getDefinition(sClassName) as Class;
78 return cls;
79 }catch(e:Error){
80 throw new IllegalOperationError(sClassName + " doesn't exist");
81 }
82 return cls;
83 }
84
85
86 ]]>
87 </ mx:Script >
88
89 < mx:Label text ="A sample of describing class definition " fontWeight ="bold" fontSize ="16" />
90 < mx:HRule width ="100%" height ="40" />
91 < mx:HBox width ="100%" >
92 < mx:TextInput id ="txtURL" text =
"http://Shigeru-Nakagaki.com/flex_samples/ApplicationDomain/getDefinitionDump
/RunTimeClass03/RunTimeClass03.swf" width ="400" />
93 < mx:Button x ="10" y ="10" label ="Load SWF" click ="loadSWF()" />
94 </ mx:HBox >
95 < mx:HBox width ="100%" >
96 < mx:TextInput id ="txtClassName" text ="org.Pepe.ExPanel" width ="400" />
97 < mx:Button x ="10" y ="40" label ="Get Definition" click ="getDef()" />
98 </ mx:HBox >
99 < mx:HBox width ="100%" height ="90%" >
100 < mx:TextArea id ="txtDump" width ="100%" height ="100%" />
101 </ mx:HBox >
102
103 </ mx:Application >
104
105