Пакет | Верхний уровень |
Класс | 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 для спецификации XML E4X (ECMA-357, второе издание).
Дополнительно
Связанные элементы API
Свойство | Определено | ||
---|---|---|---|
constructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта. | Object | ||
prefix : String
Префикс пространства имен. | Namespace | ||
uri : String
Унифицированный идентификатор ресурса (URI-адрес) пространства имен. | Namespace |
Метод | Определено | ||
---|---|---|---|
Создает объект Namespace, исходя из значений параметров prefixValue и uriValue. | 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 |
Создает объект 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-адрес) пространства имен.
|
Namespace | () | Конструктор |
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-адрес) пространства имен.
|
toString | () | метод |
valueOf | () | метод |
- В этом примере определены три объекта 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); } }
Tue Jun 12 2018, 11:34 AM Z