日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

(转)AS反射应用

發布時間:2025/3/19 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 (转)AS反射应用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

總結下as3反射的相關用法,主要是四個函數:
flash.system.ApplicationDomain.getDefinition(linkName:String):Class;? ???//flashcs元件庫中的某個元件鏈接名稱
flash.utils.getDefinitionByName(name:String):Object;? ? //返回name參數指定的類的類對象引用
flash.utils.getQualifiedClassName(value:*):String;? ? //返回對象的完全限定類名
flash.utils.getQualifiedSuperClassNameTest;? ? // 返回value參數指定的對象的基類的完全限定類名。

在as3.0中,你會發現在flash.utils包中有一系列函數提供了反射的功能。主要包含以下功能:
* 確定對象的類
* 確定接口聲明的常數和方法
* 獲取類的成員、構造函數、方法、父類信息
* 在運行時根據類名創建類的實例
* 在運行時根據成員名稱來調用對象成員
* 在運行時根據方法名稱來調用對象方法

看代碼:
Main.as類

  • package
  • {
  • import flash.display.MovieClip;
  • import flash.display.Shape;
  • import flash.display.Sprite;
  • import flash.system.ApplicationDomain;
  • import flash.utils.getDefinitionByName;
  • import flash.utils.getQualifiedClassName;
  • import flash.utils.getQualifiedSuperclassName;
  • import test.IPerson;
  • import test.PersonImplA;
  • /**
  • * as3反射實例
  • * @author xuechong
  • * @language as3 fp9
  • * @date 2012.06.03
  • * @QQ群交流 241294271
  • * */
  • public class Main extends Sprite
  • {
  • //private var _personAersonImplA;
  • public function Main()
  • {
  • //getDefinitionFunc();
  • getDefinitionByNameFunc();
  • //getQualifiedClassNameFunc();
  • //getQualifiedSuperClassNameFunc();
  • }
  • /**
  • * flash.system.ApplicationDomain類中的一個函數
  • * aa字符串就是flashcs元件庫中的鏈接名稱(也就是元件綁定的類的名字)
  • */
  • public function getDefinitionFunc():void
  • {
  • var app:ApplicationDomain = ApplicationDomain.currentDomain;
  • try
  • {
  • var cls:Class = app.getDefinition("aa") as Class;
  • var mc:MovieClip = new cls() as MovieClip;
  • mc.y = 300;
  • this.addChild(mc);
  • }
  • catch(error:ReferenceError)
  • {
  • trace("反射錯誤", error.message);
  • }
  • }
  • /**
  • * flash.utils.getDefinitionByName(name:String):Object
  • * 返回name參數指定的類的類對象引用
  • * 注:如果是自定義類則要先定義上此類的引用
  • * */
  • public function getDefinitionByNameFunc():void
  • {
  • var ClassReference:Class = getDefinitionByName("test.PersonImplA") as Class; //[class PersonImplA]
  • var obj:IPerson = new ClassReference() as IPerson; //[object PersonImplA]
  • obj.sayHello();
  • }
  • /**
  • * flash.utils.getQualifiedClassName(value:*):String
  • * 返回對象的完全限定類名
  • * */
  • private function getQualifiedClassNameFunc():void
  • {
  • var sh:Shape = new Shape();
  • trace(getQualifiedClassName(sh)); //flash.display::Shape
  • var aersonImplA = new PersonImplA();
  • trace(getQualifiedClassName(a)); //test:ersonImplA
  • trace(getQualifiedClassName(this)); //Main
  • }
  • /**
  • * flash.utils.getQualifiedSuperClassNameTest
  • * 返回value參數指定的對象的基類的完全限定類名。
  • * 即返回繼承關系上的父類
  • * */
  • private function getQualifiedSuperClassNameFunc():void
  • {
  • var sh:Shape = new Shape();
  • trace(getQualifiedSuperclassName(sh)); //flash.display:isplayObject
  • var aersonImplA = new PersonImplA();
  • trace(getQualifiedSuperclassName(a)); //flash.display::Sprite
  • trace(getQualifiedSuperclassName(this)); //flash.display::Sprite
  • }
  • }
  • }


  • IPerson.as接口

  • package test
  • {
  • public interface IPerson
  • {
  • function sayHello():void;
  • }
  • }


  • PersonImplA.as類

  • package test
  • {
  • import flash.display.Sprite;
  • public class PersonImplA extends Sprite implements IPerson
  • {
  • public function PersonImplA()
  • {
  • }
  • public function sayHello():void
  • {
  • trace("This is PersonImplA");
  • }
  • }
  • }

  • PersonImplB.as類

  • package test
  • {
  • import flash.display.Sprite;
  • public class PersonImplB extends Sprite implements IPerson
  • {
  • public function PersonImplB()
  • {
  • }
  • public function sayHello():void
  • {
  • trace("This is PersonImplB");
  • }
  • }
  • }


  • (原)as3反射實例.rar

    來自:http://bbs.9ria.com/thread-133293-1-1.html

    總結

    以上是生活随笔為你收集整理的(转)AS反射应用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。