Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Класс Namespace содержит методы и свойства, позволяющие задавать пространства имен и работать с ними. Существует три сценария применения пространства имен.
-
Пространства имен объектов XML. В пространствах имен префикс пространства имен связан с универсальным идентификатором ресурса (URI), который их определяет. Префикс — это строка, используемая при создании ссылки на пространство имен в объекте XML. Если префикс не определен, когда XML-файл преобразуется в строку, он генерируется автоматически.
-
Пространство имен для различения методов Пространства имен могут разграничивать одноименные методы, которым предстоит выполнять разные задачи. Если два метода названы одинаково, но их пространства имен различны, они могут выполнять разные задачи.
-
Пространства имен для контроля доступа Пространства имен могут применяться для управления доступом к группе свойств и методов в рамках класса. Если свойства и методы поместить в частное пространство имен, они станут недоступны для любого кода, не имеющего доступа к данному пространству имен. Можно предоставить доступ к группе свойств и методов, передав пространство имен другим классам, методам или функциям.
В этом классе показаны два вида метода конструктора, поскольку каждый из них поддерживает разные параметры.
В этом классе (а также в классах XML, XMLList и QName) реализованы мощные стандарты обработки XML, определенные в сценарии ECMAScript для спецификации XML E4X (ECMA-357, второе издание).
Посмотреть примеры
prefix:String
[чтение и запись]
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Префикс пространства имен.
Реализация public function get prefix():String
public function set prefix(value:String):void
uri:String
[чтение и запись]
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
Реализация public function get uri():String
public function set uri(value:String):void
public function Namespace(uriValue:*)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Создает объект Namespace. Значения, присвоенные свойствам uri
и prefix
нового объекта Namespace, зависят от типа значения, переданного параметру uriValue
:
- Если значение не передано, свойствам
prefix
и uri
присваивается пустая строка. - Если в качестве значения выбран объект Namespace, создается копия этого объекта.
- Если в роли значения выступает объект QName, свойство
uri
принимает значение свойства uri
объекта QName.
Примечание. В этом классе показаны две записи конструктора, поскольку каждая из них поддерживает разные параметры. Режим работы конструктора меняется в зависимости от типа и количества переданных параметров (см. описание в записях). ActionScript 3.0 не поддерживает переопределение метода или конструктора.
Параметры | uriValue:* — Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
|
public function Namespace(prefixValue:*, uriValue:*)
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Создает объект Namespace, исходя из значений параметров prefixValue
и uriValue
. Для этого конструктора обязательны оба параметра.
Значение параметра prefixValue
присваивается свойству prefix
следующим образом:
- Если передается
undefined
, для префикса
выбирается значение undefined
. - Если в качестве значения выбрано действительное имя XML, определенное функцией
isXMLName()
, оно преобразуется в строку и присваивается свойству prefix
. - Если в качестве значения выбрано недействительное имя XML, свойству
prefix
присваивается значение undefined
.
Значение параметра uriValue
присваивается свойству uri
следующим образом:
- Если передается объект QName, свойству
uri
присваивается значение свойства uri
объекта QName. - В противном случае параметр
uriValue
преобразуется в строку и присваивается свойству uri
.
Примечание. В этом классе показаны две записи метода конструктора, поскольку каждая из них поддерживает разные параметры. Режим работы конструктора меняется в зависимости от типа и количества переданных аргументов (см. описание в записях). ActionScript 3.0 не поддерживает переопределение метода или конструктора.
Параметры | prefixValue:* — Префикс, используемый для пространства имен.
|
|
| uriValue:* — Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
|
AS3 function toString():String
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Эквивалент свойства Namespace.uri
.
Возвращает | String — Унифицированный идентификатор ресурса (URI) пространства имен в виде строки.
|
AS3 function valueOf():String
Язык версии : | ActionScript 3.0 |
Версии среды выполнения: | AIR 1.0, Flash Player 9 |
Возвращает значение URI заданного объекта.
Возвращает | String — Унифицированный идентификатор ресурса (URI) пространства имен в виде строки.
|
В следующем примере показано, как работать с пространствами имен, определенными в объектах XML. Это можно сделать, выполнив следующие действия:
- В этом примере определены три объекта Namespace, каждый из которых имеет уникальный URI, определяющий пространство имен.
- В примере определяется переменная XML с именем
myXML
, которая присваивается возвращаемому значению getRSS()
. Метод getRSS()
применяется для определения объекта XML, содержащего несколько пространств имен и возврата данного объекта. - В примере объявляется и оценивается переменная Array путем вызова метода
parseRSS()
, которому передается myXML
. В parseRSS()
пространство имен XML по умолчанию определяется как rss
. Переменная XMLList определяется в примере путем присвоения списка объектов item
переменной myXML
. Создается массив, который заполняется данными о различных узлах, входящих в 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;
}
}
}
В следующем примере показано, как пространства имен можно использовать для разграничения одноименных методов, выполняющих разные задачи. В данном примере три метода
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;
}
}
В следующем примере имена из пространства имен применяются для выбора подходящего значения переменной. Здесь показано, как сохранять значение пространства имен в виде переменной и использовать ее для ссылок на объекты в этом пространстве имен.
В примере определяются пространства имен и цвета, соответствующие состояниям мыши для прямоугольной кнопки. Каждый раз при создании кнопки в примере применяется подходящий цвет (красный — для курсора за пределами кнопки; желтый — для курсора на кнопке; белый — для нажатия) путем ссылки на переменную 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);
}
}
© 2004-2008 Adobe Systems Incorporated. All rights reserved.
Wed Sep 24 2008, 07:56 AM -07:00