包 | 顶级 |
类 | 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 类一起)可实现强大的 XML 处理标准,该标准在 ECMAScript for XML (E4X) 规范(ECMA-357 第 2 版)中定义。
了解详细信息
相关 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
。 - 如果该值为
isXMLName()
函数确定的有效 XML 名称,则将其转换为字符串并分配给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 对象中定义的命名空间。这是由以下步骤完成的:
- 此示例定义了 3 个 Namespace 对象,每个都有一个定义命名空间的唯一 URI。
- 此示例定义了名为
myXML
的 XML 变量并将其分配给getRSS()
的返回值。getRSS()
方法定义了一个包含多个命名空间的 XML 对象,并返回该 XML 对象。 - 此示例声明并计算 Array 变量,方法是调用
parseRSS()
方法,并将myXML
传递给该方法。在parseRSS()
中,将默认的 XML 命名空间定义为rss
,此示例还定义了一个 XMLList 变量,方法是分配myXML
中item
对象列表。创建一个数组,并用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
下面的示例说明如何使用命名空间区分具有相同名称却执行不同任务的方法。在本示例中,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
变量(针对相应的命名空间 (out
、over
、down
)。
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, 11:04 AM Z