Главная / Action Script 3
ПакетВерхний уровень
Классpublic final class Namespace
НаследованиеNamespace Inheritance Object

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Класс Namespace содержит методы и свойства, позволяющие задавать пространства имен и работать с ними. Существует три сценария применения пространства имен.

В этом классе показаны два вида метода конструктора, поскольку каждый из них поддерживает разные параметры.

В этом классе (а также в классах XML, XMLList и QName) реализованы мощные стандарты обработки XML, определенные в сценарии ECMAScript для спецификации XML E4X (ECMA-357, второе издание).

Посмотреть примеры

См. также

XML
XMLList
QName
Спецификация языка ECMAScript для XML E4X (ECMA-357, редакция 2)
Использование пространств имен XML


Общедоступные свойства
 СвойствоОпределено
 Inheritedconstructor : Object
Ссылка на объект класса или функцию конструктора для данного экземпляра объекта.
Object
  prefix : String
Префикс пространства имен.
Namespace
 Inheritedprototype : Object
[статические] Ссылка на модель объекта класса или функции.
Object
  uri : String
Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
Namespace
Общедоступные методы
 МетодОпределено
  
Namespace(uriValue:*)
Создает объект Namespace.
Namespace
  
Namespace(prefixValue:*, uriValue:*)
Создает объект Namespace в соответствии со значениями параметров prefixValue и uriValue.
Namespace
 Inherited
Показывает, определено ли заданное свойство для объекта.
Object
 Inherited
Показывает, есть ли экземпляр класса Object в цепи прототипов объекта, заданного в качестве параметра.
Object
 Inherited
Показывает наличие заданного свойства и его перечисляемость.
Object
 Inherited
Задает доступность динамического свойства для операций цикла.
Object
  
Эквивалент свойства Namespace.uri.
Namespace
  
Возвращает значение URI заданного объекта.
Namespace
Сведения о свойстве
prefixсвойство
prefix:String  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Префикс пространства имен.



Реализация
    public function get prefix():String
    public function set prefix(value:String):void
uriсвойство 
uri:String  [чтение и запись]

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Унифицированный идентификатор ресурса (URI-адрес) пространства имен.



Реализация
    public function get uri():String
    public function set uri(value:String):void
Сведения о конструкторе
Namespace()Конструктор
public function Namespace(uriValue:*)

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает объект Namespace. Значения, присвоенные свойствам uri и prefix нового объекта Namespace, зависят от типа значения, переданного параметру uriValue:

Примечание. В этом классе показаны две записи конструктора, поскольку каждая из них поддерживает разные параметры. Режим работы конструктора меняется в зависимости от типа и количества переданных параметров (см. описание в записях). ActionScript 3.0 не поддерживает переопределение метода или конструктора.

Параметры
uriValue:* — Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
Namespace()Конструктор 
public function Namespace(prefixValue:*, uriValue:*)

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Создает объект Namespace, исходя из значений параметров prefixValue и uriValue. Для этого конструктора обязательны оба параметра.

Значение параметра prefixValue присваивается свойству prefix следующим образом:

Значение параметра uriValue присваивается свойству uri следующим образом:

Примечание. В этом классе показаны две записи метода конструктора, поскольку каждая из них поддерживает разные параметры. Режим работы конструктора меняется в зависимости от типа и количества переданных аргументов (см. описание в записях). ActionScript 3.0 не поддерживает переопределение метода или конструктора.

Параметры
prefixValue:* — Префикс, используемый для пространства имен.
 
uriValue:* — Унифицированный идентификатор ресурса (URI-адрес) пространства имен.
Сведения о методе
toString()метод
AS3 function toString():String

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Эквивалент свойства Namespace.uri.

Возвращает
String — Унифицированный идентификатор ресурса (URI) пространства имен в виде строки.
valueOf()метод 
AS3 function valueOf():String

Язык версии : ActionScript 3.0
Версии среды выполнения:  1.0 9

Возвращает значение URI заданного объекта.

Возвращает
String — Унифицированный идентификатор ресурса (URI) пространства имен в виде строки.
Примеры Как пользоваться примерами
NamespaceExample.as

В следующем примере показано, как работать с пространствами имен, определенными в объектах XML. Это можно сделать, выполнив следующие действия:
  1. В этом примере определены три объекта Namespace, каждый из которых имеет уникальный URI, определяющий пространство имен.
  2. В примере определяется переменная XML с именем myXML, которая присваивается возвращаемому значению getRSS(). Метод getRSS() применяется для определения объекта XML, содержащего несколько пространств имен и возврата данного объекта.
  3. В примере объявляется и оценивается переменная Array путем вызова метода parseRSS(), которому передается myXML. В parseRSS() пространство имен XML по умолчанию определяется как rss. Переменная XMLList определяется в примере путем присвоения списка объектов item переменной myXML. Создается массив, который заполняется данными о различных узлах, входящих в 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

В следующем примере показано, как пространства имен можно использовать для разграничения одноименных методов, выполняющих разные задачи. В данном примере три метода 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);
    }
}