flex中getDefinitionByName 函式的使用
在專案中自定義一個CheckboxGroup,這個控制元件裡面包含多個Checkbox想控制Checkbox的行為:所以使用查詢一下幫助使用flex中經典方法:getDefinitionByName 函式的使用
public function getDefinitionByName(name:String):Object
返回引數 name 中指定的類引用
引數 name:String - 類名稱
返回 Object - 返回引數 name 中指定的類引用
錯誤 ReferenceError - 找不到引數 name 對應的公共定義
as3中的getDefinitionByName函式是 返回 name 引數指定的類的類物件引用。
這樣就可以使用這個方法根據已知類的路徑的字串來獲取類的類物件引用。這樣就可以利用這個特性讓flash動態建立類的例項...
但問題是:
1. 使用getDefinitionByName方法獲得的類必須是在釋出的時候被編譯到swf文中的,否則就會報錯:"ReferenceError: Error #1065: 變數 <類的名字> 未定義。"
2. 由於使用import匯入的類(只是作為查詢類的路徑)並不會在釋出swf的時候被編譯進去(當然flash.*包裡面的類本身就是player中的),只用在程式碼中使用到的類才會被編譯進去...
那麼,要使用這個方法來實現動態執行怎麼辦? 只有把可能需要的所有類包含在程式碼中(比如在定義變數的型別聲名時使用 *),並且在開始聲名此類,聲名時可以隨便使用個名字,這樣才能使用getDefinitionByName方法...
實際上getDefinitionByName所獲得的類名就是前面你所做的聲名的名字引用
-------------------------------------------------
import com.ooph.parser.*;
//包內有ParserWeb類
var ss:ParserWeb;
//在此處聲名ParserWeb類,名為ss(名字不用與下面例項名的相同)
var sortStr:String="Web";
var P:Class = getDefinitionByName("com.ooph.parser.Parser"+sortStr) as Class;
//注意這裡要寫完整的類路徑 "com.ooph.parser.Parser"+sortStr
var newParser:* = new P();
getDefinitionByName(name) 返回 name 引數指定的類的類物件引用。 經過測試只能獲取內建的類,不能獲取自定類,怎麼解決呀?? 其實最終問題是,知道類名,但是為字串,如何獲取它?因為數量不定放在XML中配置的。 |
因為內建類庫肯定會被編譯到swf裡,這樣反射就能拿到。而自定義的類,如果整個工程裡都沒有用到,即使import也不會被編譯(不然swf裡的垃圾成分太多)。我建議可以把需要反射的類庫生成一個swf去載入,或者在工程的什麼地方引用一下。
getDefinitionByName | () | 函式 |
public function getDefinitionByName(name:String):Object
語言版本 : | ActionScript 3.0 |
RuntimeVersions: | AIR 1.0, Flash Player 9 |
返回 name
引數指定的類的類物件引用。
引數
name:String — 類的名稱。 |
返回
Object — 返回 name 引數指定的類的類物件引用。 |
引發
ReferenceError — 不存在具有指定名稱的公共定義。 |
相關文章
- Django中F函式的使用Django函式
- Vue中render函式的使用Vue函式
- perl 中glob函式的使用函式
- 如何使用函式指標呼叫類中的函式和普通函式函式指標
- Oracle中Decode()函式的使用Oracle函式
- MySQL中的SUM函式使用教程MySql函式
- lambda匿名函式使用中的坑函式
- Oracle中關於函式的使用Oracle函式
- 【函式】Oracle中聚合函式rank()使用方法函式Oracle
- Python中eval函式的表示式如何使用Python函式
- Shell中函式的定義和使用函式
- Java script 中的函式使用方法Java函式
- Python中函式的高階使用Python函式
- 如何使用python中的exec函式?Python函式
- Django中 render() 函式的使用方法Django函式
- SQL中的替換函式replace()使用SQL函式
- C++中compare函式的使用C++函式
- python 中偏函式 partial 的使用Python函式
- js中split函式的使用方法JS函式
- SQL-Server中datepart函式的使用SQLServer函式
- Python hasattr() 函式 // python中hasattr()、getattr()、setattr()函式的使用Python函式
- MySQL中MAX函式如何使用?MySql函式
- Rust中的into函式和from函式Rust函式
- 函式: 函式是怎麼使用的?函式
- javascript中的this使用場景以及箭頭函式中的thisJavaScript函式
- vertica 中位數函式 MEDIAN 的使用函式
- js父頁面使用iframe中的函式JS函式
- Python中zip函式的使用方法Python函式
- Sql 中的 left 函式、right 函式SQL函式
- JS中函式內套函式的呼叫JS函式
- python中fail函式如何使用PythonAI函式
- python中super函式如何使用?Python函式
- Oracle中CAST函式使用簡介OracleAST函式
- 在Excel中如何使用TEXT函式?Excel函式
- JS中的函式JS函式
- javascript中的函式JavaScript函式
- eclipse中怎麼使用flexEclipseFlex
- 使用bind()函式的產生的函式用作建構函式this的指向函式