顶级
public final class Namespace
继承Namespace Inheritance Object

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

Namespace 类包含用于定义和使用命名空间的方法和属性。使用命名空间有以下三种方案:

因为每种形式接受不同的参数,所以此类显示两种形式的构造函数方法。

此类(与 XML、XMLList 和 QName 类一起)可实现强大的 XML 处理标准,该标准在 XML (E4X) 规范(ECMA-357 第 2 版)的 ECMAScript 中定义。

查看示例

另请参见

XML
XMLList
QName
ECMAScript for XML (E4X) specification (ECMA-357 edition 2)
Using XML namespaces


公共属性
 属性定义方
 Inheritedconstructor : Object
对类对象或给定对象实例的构造函数的引用。
Object
  prefix : String
命名空间的前缀。
Namespace
 Inheritedprototype : Object
[静态] 对类或函数对象的原型对象的引用。
Object
  uri : String
命名空间的统一资源标识符 (URI)。
Namespace
公共方法
 方法定义方
  
Namespace(uriValue:*)
创建 Namespace 对象。
Namespace
  
Namespace(prefixValue:*, uriValue:*)
根据 prefixValue 和 uriValue 参数值创建 Namespace 对象。
Namespace
 Inherited
指示对象是否已经定义了指定的属性。
Object
 Inherited
指示 Object 类的实例是否在指定为参数的对象的原型链中。
Object
 Inherited
指示指定的属性是否存在、是否可枚举。
Object
 Inherited
设置循环操作动态属性的可用性。
Object
  
等效于 Namespace.uri 属性。
Namespace
  
返回指定对象的 URI 值。
Namespace
属性详细信息
prefix属性
prefix:String  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

命名空间的前缀。



实现
    public function get prefix():String
    public function set prefix(value:String):void
uri属性 
uri:String  [读写]

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

命名空间的统一资源标识符 (URI)。



实现
    public function get uri():String
    public function set uri(value:String):void
构造函数详细信息
Namespace()构造函数
public function Namespace(uriValue:*)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

创建 Namespace 对象。分配给新 Namespace 对象的 uriprefix 属性的值取决于传递给 uriValue 参数的值的类型:

注意:因为每种形式接受不同的参数,所以此类显示两个构造函数项。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。

参数
uriValue:* — 命名空间的统一资源标识符 (URI)。
Namespace()构造函数 
public function Namespace(prefixValue:*, uriValue:*)

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

根据 prefixValueuriValue 参数值创建 Namespace 对象。此构造函数需要这两个参数。

prefixValue 参数的值分配给了 prefix 属性,如下所示:

uriValue 参数的值分配给了 uri 属性,如下所示:

注意:因为每种形式接受不同的参数,所以此类显示两个构造函数方法项。根据传递的参数类型和数量的不同(由每一项详细定义),此构造函数具有不同的行为。ActionScript 3.0 不支持方法或构造函数重载。

参数
prefixValue:* — 用于命名空间的前缀。
 
uriValue:* — 命名空间的统一资源标识符 (URI)。
方法详细信息
toString()方法
AS3 function toString():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

等效于 Namespace.uri 属性。

返回
String — 命名空间的统一资源标识符 (URI)(采用字符串形式)。
valueOf()方法 
AS3 function valueOf():String

语言版本: ActionScript 3.0
运行时版本: AIR 1.0 Flash Player 9

返回指定对象的 URI 值。

返回
String — 命名空间的统一资源标识符 (URI)(采用字符串形式)。
示例 如何使用示例
NamespaceExample.as

下面的示例说明如何使用 XML 对象中定义的命名空间。这是由以下步骤完成的:
  1. 此示例定义了 3 个 Namespace 对象,每个都有一个定义命名空间的唯一 URI。
  2. 此示例定义了名为 myXML 的 XML 变量并将其分配给 getRSS() 的返回值。getRSS() 方法定义了一个包含多个命名空间的 XML 对象,并返回该 XML 对象。
  3. 此示例声明并计算 Array 变量,方法是调用 parseRSS() 方法,并将 myXML 传递给该方法。在 parseRSS() 中,将默认的 XML 命名空间定义为 rss,此示例还定义了一个 XMLList 变量,方法是分配 myXMLitem 对象列表。创建一个数组,并用 myXML.item 中的各个节点填充。然后返回数组。
  4. 将输出数组中的元素,方法是使用 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

下面的示例说明如何使用命名空间区分具有相同名称却执行不同任务的方法。在本示例中,3 个名为 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

下面的示例使用命名空间名称选择相应的变量值。它说明如何在变量中存储命名空间值,并使用该变量引用该命名空间中的对象。

此示例为矩形按钮定义对应于鼠标状态的命名空间和颜色。每次绘制该按钮,此示例都会应用相应的颜色(鼠标光标在按钮外为红色;悬停在上方为黄色;按下按钮为白色),方法是引用 bgcolor 变量(针对相应的命名空间 (outoverdown)。

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);
    }
}