| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
Namespace クラスには、名前空間を定義して操作するためのメソッドとプロパティが含まれています。名前空間を使用するシナリオには、次の 3 つがあります。
-
XML オブジェクトの名前空間 : 名前空間により名前空間接頭辞と、名前空間を識別する URI(Uniform Resource Identifier)を関連付けます。接頭辞は、XML オブジェクト内の名前空間を参照する場合に使用されるストリングです。接頭辞が未定義の場合、XML がストリングに変換されたときに接頭辞が自動的に生成されます。
-
メソッドを区別するための名前空間 : 名前空間により同名のメソッドを区別し、異なるタスクを実行できるようにします。2 つのメソッドの名前が同じでも、名前空間が異なる場合は、それぞれのメソッドで別のタスクを実行することができます。
-
アクセス制御するための名前空間 : 名前空間を使用して、クラス内のプロパティとメソッドのグループへのアクセスを制御できるようにします。プロパティとメソッドをプライベートの名前空間に配置すると、その名前空間へのアクセス権を持たないコードからそれらのプロパティとメソッドにアクセスできなくなります。他のクラス、メソッド、または関数に名前空間を渡すことによって、プロパティとメソッドのグループへのアクセスを許可することができます。
このクラスは、2 つの形式のコンストラクタメソッドを示しています。それぞれの形式が異なるパラメータを受け入れるからです。
XML、XMLList、および QName などのクラス同様、Namespace クラスには、ECMAScript for XML(E4X)仕様(ECMA-357 Edition 2)で定義されている強力な XML 処理規格が実装されています。
例を表示
prefix:String [読み書き可能]
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
名前空間の接頭辞です。
実装 public function get prefix():String public function set prefix(value:String):voiduri:String [読み書き可能]
| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
名前空間の URI です。
実装 public function get uri():String public function set uri(value:String):voidpublic function Namespace(uriValue:*)| 言語バージョン: | ActionScript 3.0 |
| ランタイムバージョン: | AIR 1.0 Flash Player 9 |
Namespace オブジェクトを作成します。新しい Namespace オブジェクトの uri プロパティと prefix プロパティに割り当てられる値は、uriValue パラメータに渡される値の型によって決まります。
-
値が渡されない場合、
prefix プロパティと uri プロパティは空のストリングに設定されます。
- 値が Namespace オブジェクトの場合、オブジェクトのコピーが作成されます。
-
値が QName オブジェクトの場合、
uri プロパティは QName オブジェクトの uri プロパティに設定されます。
注意:このクラスは、2 つのコンストラクタ項目を示しています。それぞれの形式が異なるパラメータを受け入れるためです。コンストラクタの動作は、各項目で詳細を示すように、渡されるパラメータの型と数によって異なります。ActionScript 3.0 はメソッドまたはコンストラクタのオーバーロードをサポートしていません。
パラメータ | uriValue:* — 名前空間の URI です。 |
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 プロパティに割り当てられます。
注意:このクラスは、2 つのコンストラクタメソッドを示しています。それぞれの形式が異なるパラメータを受け入れるためです。コンストラクタの動作は、各項目で詳細を示すように、渡される引数の型と数によって異なります。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 オブジェクトに定義されている名前空間を操作する方法を示しています。これを行うには、以下の手順を実行します。
- この例では 3 つの Namespace オブジェクトを定義します。各オブジェクトには、名前空間を定義する一意の URI を関連付けます。
-
myXML という名前の XML 変数を定義し、これを getRSS() の戻り値に割り当てます。 getRSS() メソッドは、いくつかの名前空間を持つ XML オブジェクトを定義し、この XML オブジェクトを返します。
-
この例では、
parseRSS() メソッドに myXML を渡し、そのメソッドを呼び出すことで、Array 型の変数を宣言して評価しています。parseRSS() では、デフォルトの XML 名前空間として rss が定義されています。またこの例では item オブジェクト(myXML 内にある)のリストを割り当てて XMLList 変数が定義されています。 配列が作成され、myXML.item 内の様々なノードが値として設定されます。 その後、配列が返されます。
-
配列内のエレメントは、
for ループを使用し、trace() を 3 回呼び出すことで出力されます。
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() という名前の 3 つのメソッドが別々の名前空間に存在しており、呼び出されたときにそれぞれが異なるストリングを返します。
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 状態では白)を適用します。変数は、対応する名前空間(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.
Thu Jan 8 2009, 12:14 AM -08:00