| 套件 | 最上層 |
| 類別 | public final class Namespace |
| 繼承 | Namespace Object |
| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 1.0, Flash Player 9, Flash Lite 4 |
- XML 物件的命名空間:命名空間會使命名空間前置詞與識別該命名空間的統一資源識別項 (URI) 產生關聯。 前置詞是一個字串,用於參照 XML 物件內的命名空間。 如果未定義前置詞,當 XML 轉換為字串時,便會自動產生前置詞。
- 用來區別方法的命名空間:命名空間可以區別具有相同名稱的方法,以執行不同的工作。 如果兩個方法都具有相同的名稱,卻有不同的命名空間,它們便可以執行不同的工作。
- 用來存取控制項的命名空間:命名空間可以用來控制類別中一組屬性與方法的存取權限。 如果您將屬性與方法置入私有命名空間,任何無法存取該命名空間的程式碼,也無法存取這些屬性與方法。 您可以將命名空間傳遞給其他類別、方法或函數,藉以授與屬性與方法群組的存取權。
這個類別會顯示兩種形式的建構函式方法,因為每種形式都可以接受不同的參數。
這個類別 (以及 XML、XMLList 和 QName 類別) 會實作 ECMAScript for XML (E4X) 規格 (ECMA-357 第 2 版) 中定義的強大 XML 處理標準。
詳細資訊
相關 API 元素
公用屬性
| 屬性 | 定義自 | ||
|---|---|---|---|
![]() | constructor : Object
類別物件的參照或是特定物件實體的建構函數。 | Object | |
| prefix : String
命名空間的前置詞。 | Namespace | ||
| uri : String
命名空間的統一資源識別項 (URI)。 | Namespace | ||
公用方法
| 方法 | 定義自 | ||
|---|---|---|---|
根據 prefixValue 與 uriValue 參數的值,建立 Namespace 物件。 | Namespace | ||
會建立 Namespace 物件。 | Namespace | ||
![]() |
指出物件是否有已定義的指定屬性。 | Object | |
![]() |
指出 Object 類別的實體是否位於指定為參數的物件原型鏈中。 | Object | |
![]() |
指出指定的屬性是否存在,以及是否可列舉。 | Object | |
![]() |
為迴圈作業設定動態屬性的可用性。 | Object | |
![]() |
傳回代表此物件的字串,根據地區特定慣例進行格式化。 | Object | |
相當於 Namespace.uri 屬性。 | Namespace | ||
會傳回指定之物件的 URI 值。 | Namespace | ||
屬性詳細資訊
prefix | 屬性 |
uri | 屬性 |
建構函式詳細資料
Namespace | () | 建構函式 |
public function Namespace(prefixValue:*, uriValue:*)| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 1.0, Flash Player 9 |
會根據 prefixValue 與 uriValue 參數的值來建立 Namespace 物件。 這個建構函式需要這兩個參數。
prefixValue 參數的值會指定給 prefix 屬性,如下所示:
- 如果有傳遞
undefined,prefix便會設定為undefined。 - 如果此值為有效的 XML 名稱 (由
isXMLName()函數所決定),它便會轉換為字串,並指定給prefix屬性。 - 如果此值不是有效的 XML 名稱,
prefix屬性便會設定為undefined。
uriValue 參數的值會指定給 uri 屬性,如下所示:
- 如果有傳遞 QName 物件,
uri屬性便會設定為該 QName 物件的uri屬性值。 - 否則,
uriValue參數便會轉換為字串,並指定給uri屬性。
注意: 此類別會顯示兩個建構函式方法項目,因為每種形式都可以接受不同的參數。 如每個項目中所詳述,此建構函式會根據傳遞之引數的類型與數目而有不同的行為。 ActionScript 3.0 並不支援方法或建構函式多載。
參數prefixValue:* — 要用於命名空間的前置詞。
| |
uriValue:* — 命名空間的統一資源識別項 (URI)。
|
Namespace | () | 建構函式 |
public function Namespace(uriValue:*)| 語言版本: | ActionScript 3.0 |
| 執行階段版本: | AIR 1.0, Flash Player 9 |
會建立 Namespace 物件。 指定給新 Namespace 物件的 uri 與 prefix 屬性是根據為 uriValue 參數傳遞的值類型而定:
- 如果沒有傳遞任何值,
prefix與uri屬性便會設定為空字串。 - 如果此值是 Namespace 物件,便會建立該物件的副本。
- 如果其值是 QName 物件,
uri屬性便會設定為該 QName 物件的uri屬性。
注意:此類別會顯示兩個建構函式項目,因為每一種形式都可以接受不同的參數。 如每個項目中所詳述,此建構函式會根據傳遞之參數的類型與數目而有不同的行為。 ActionScript 3.0 並不支援方法或建構函式多載。
參數uriValue:* — 命名空間的統一資源識別項 (URI)。
|
方法詳細資訊
toString | () | 方法 |
valueOf | () | 方法 |
範例 如何使用本範例
NamespaceExample.as
下列範例會說明如何使用 XML 物件中定義的命名空間。 您可以使用下列步驟:
- 此範例會定義三個 Namespace 物件,而且每個物件都具有可定義命名空間的唯一 URI。
- 此範例會定義名為
myXML的 XML 變數,並將其指定給getRSS()傳回值。getRSS()方法會定義包含數個命名空間的 XML 物件,並傳回該 XML 物件。 - 此範例會宣告並評估 Array 變數,其方式是呼叫有傳遞
myXML給它的parseRSS()方法。 在parseRSS()中,預設 XML 命名空間會定義為rss,而此範例會藉由在myXML中指定item物件的清單來定義 XMLList 變數。 建立陣列,並為它填入myXML.item中的各種節點。 然後傳回該陣列。 - 接著便會列印此陣列中的元素,方法是使用
for迴圈及對trace()的三個呼叫。
package {
import flash.display.Sprite;
public class NamespaceExample extends Sprite {
private var rss:Namespace = new Namespace("http://purl.org/rss/1.0/");
private var rdf:Namespace = new Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
private var dc:Namespace = new Namespace("http://purl.org/dc/elements/1.1/");
public function NamespaceExample() {
var myXML:XML = getRSS();
var rssItems:Array = parseRSS(myXML);
var len:uint = rssItems.length;
for (var i:uint; i < len; i++) {
trace(rssItems[i].title);
trace(rssItems[i].creator);
trace(rssItems[i].date);
// Adobe Flash Developer Center
// Adobe
// 2005-08-08
// Flex Developer Center
// Adobe
// 2005-10-16
}
}
private function parseRSS(rssXML:XML):Array {
default xml namespace = rss;
var items:XMLList = rssXML.item;
var arr:Array = new Array();
var len:uint = items.length();
for (var i:uint; i < len; i++) {
arr.push({title:items[i].title, creator:items[i].dc::creator, date:items[i].dc::date});
}
return arr;
}
private function getRSS():XML {
var myXML:XML = <rdf:RDF
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns="http://purl.org/rss/1.0/"
xmlns:dc="http://purl.org/dc/elements/1.1/"
>
<channel rdf:about="http://www.xml.com/cs/xml/query/q/19">
<title>Test RSS</title>
<link>http://www.adobe.com/</link>
<description>This is a test RSS document.</description>
<language>en-us</language>
<items>
<rdf:Seq>
<rdf:li rdf:resource="http://www.adobe.com/devnet/flash/"/>
<rdf:li rdf:resource="http://www.adobe.com/devnet/flex/"/>
</rdf:Seq>
</items>
</channel>
<item rdf:about="http://www.adobe.com/devnet/flash/">
<title>Adobe Flash Developer Center</title>
<link>http://www.adobe.com/devnet/flash/</link>
<description>Welcome to the Flash Developer Center</description>
<dc:creator>Adobe</dc:creator>
<dc:date>2005-08-08</dc:date>
</item>
<item rdf:about="http://www.adobe.com/devnet/flex/">
<title>Flex Developer Center</title>
<link>http://www.adobe.com/devnet/flex/</link>
<description>Welcome to the Flex Developer Center</description>
<dc:creator>Adobe</dc:creator>
<dc:date>2005-10-16</dc:date>
</item>
</rdf:RDF>;
return myXML;
}
}
}
Namespace_2_Example.as
下列範例會說明如何使用命名空間,區別具有相同名稱但執行不同工作的方法。 在這個範例中,有三個名為
hello() 的方法位於個別的命名空間中,在呼叫每一個方法時都會傳回不同的字串。
package {
import flash.display.Sprite;
public class Namespace_2_Example extends Sprite {
public function Namespace_2_Example() {
var vocab:MultilingualVocabulary = new MultilingualVocabulary();
trace(vocab.hello()); // hello
var languages:Array = vocab.getLanguages();
for (var i:uint; i < languages.length; i++) {
var ns:Namespace = languages[i];
if (ns != null) {
trace(ns.toString() + ": " + vocab.ns::hello());
// hello
// MultilingualVocabulary:Hawaiian: aloha
// MultilingualVocabulary:French: bon jour
}
}
}
}
}
class MultilingualVocabulary {
public namespace French;
public namespace Hawaiian;
private var languages:Array;
public function MultilingualVocabulary() {
languages = new Array(Hawaiian, French);
}
public function hello():String {
return "hello";
}
Hawaiian function hello():String {
return "aloha";
}
French function hello():String {
return "bon jour";
}
public function getLanguages():Array {
return languages;
}
}
Namespace_3_Example.as
下列範例會使用命名空間名稱來選取適當的變數值。 它會說明如何將命名空間值儲存在變數中,然後使用該變數來參照該命名空間內的物件。
此範例會定義對應至矩形按鈕之滑鼠狀態的命名空間和顏色。 每次在繪製此按鈕時,此範例都會套用適當的色彩 (外面為紅色、上方為黃色,而下面為白色),透過的方式是參照對應命名空間 (out、over、down) 的 bgcolor 變數。
package {
import flash.display.Sprite;
public class Namespace_3_Example extends Sprite {
public function Namespace_3_Example() {
addChild(new StateButton("Press Me."));
}
}
}
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
class StateButton extends Sprite{
private namespace out;
private namespace over;
private namespace down;
private var label:TextField;
private var labelTxt:String;
private var ns:Namespace;
out var bgColor:Number = 0xFF0000;
over var bgColor:Number = 0xFFFF00;
down var bgColor:Number = 0xFFFFFF;
public function StateButton(str:String) {
buttonMode = true;
labelTxt = str;
ns = out;
draw();
addLabel();
addListeners();
}
private function addLabel():void {
label = new TextField();
label.text = labelTxt;
label.width = 50;
label.height = 20;
label.mouseEnabled = false;
addChild(label);
}
private function addListeners():void {
addEventListener(MouseEvent.MOUSE_UP, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_OUT, mouseOutHandler);
addEventListener(MouseEvent.MOUSE_OVER, mouseOverHandler);
addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function mouseOutHandler(e:Event):void {
ns = out;
draw();
}
private function mouseOverHandler(e:Event):void {
ns = over;
draw();
}
private function mouseDownHandler(e:Event):void {
ns = down;
draw();
}
private function draw():void {
this.graphics.clear();
this.graphics.beginFill(ns::bgColor);
this.graphics.drawRect(0, 0, 60, 20);
}
}
Tue Jun 12 2018, 03:47 PM Z
隱藏繼承公用屬性
顯示繼承公用屬性