ASが運営するWebサイトに飛びます

2008年02月14日

XMLの値のデータ型の変換、実行を行う



XMLオブジェクトのデータ型のデフォルトは、「XML」です。

XMLに記述されているのが、文字列でも数字でも一律「XML」のデータ型です。

一度変数に、XMLの値を格納するのがベターな方法ですが、XMLにアクセスする際に直接データ型を指定する事で、そのまま、値を指定したデータ型へ変換し、使用する事ができます。

XMLオブジェクトのデータ型を指定して、そのまま値を使用する一例。

ch_arr[uint(item_xl[i].ch[chi].ui)][2].content.gotoAndStop(String(item_xl[i].cf[cfi].@str))

この様にデータ型を指定する事で、そのままXMLの値をFlashのオブジェクトに適用する事ができます。
posted by 神風記 at 06:54| XML | このブログの読者になる | 更新情報をチェックする

2008年02月07日

XML Notepad 2007 でXMLファイルの中身を総て開く



AXEで動作させるXMLはMicro SoftのXML Notepad 2007を使って記述してます。


XML Notepad 2007でXMLファイルの属性の中身を総て開く方法。

「view」→「Expand All」

XMLファイルの属性の中身を総て開く事ができます。

XMLの記述効率が良くなれば、ゲームの制作効率もその分向上するので、XMLの効率のいい記述のために気づいた点をこれからブログに書いていこうと思います。
posted by 神風記 at 16:57| XML | このブログの読者になる | 更新情報をチェックする

2008年01月08日

XMLの要素名でdispatchEvent

XMLの要素名でdispatchEventができたのでメモ。応用次第で使える処理だと思うので後日詳しく記述したいと思います。とりあえずメモ。

my_mc.dispatchEvent(new Event(String(my_xl[0].children()[i].name().localName)))

例題

my_mcのaddEventListenerの第一引数に「bg」と定義(これがXMLのdispatchEvent」の検索対象。イベントが配信されると関数にアクセス

XMLをロードし、itemを検索。item内に「bg」という要素があると上記で定義された関数にアクセス。

my_mc.addEventListener("bg",bgHandler)

function bgHandler(evt:Event)
{
trace("bgの反応あり");
}

my_ulo.addEventListener(Event.COMPLETE,completeHandler)

var my_xml:XML;

my_ulo.load(new URLRequest("xml/sample.xml"))



function completeHandler(evt:Event)
{

my_xml=new XML(evt.target.data)

var my_xl:XML=my_xml.item[0];


var nodeLength_ui:uint=my_xl.children().length();
for(var i:uint=0;i
posted by 神風記 at 03:40| XML | このブログの読者になる | 更新情報をチェックする

2008年01月07日

XML.children()[x].name().localName でXMLの要素名を取得する

XML.children()[x].name().localName
でXMLの要素名を取得する事ができます。

my_xl[0].children()[i].name().localName

var my_ulo:URLLoader=new URLLoader();

my_ulo.addEventListener(Event.COMPLETE,completeHandler)

var my_xml:XML;

my_ulo.load(new URLRequest("xml/zinzya.xml"))

function completeHandler(evt:Event)
{

my_xml=new XML(evt.target.data)

//trace("evt="+my_xml)

var my_xl:XML=my_xml.item[0];
trace("my_xl="+my_xl.children().length())
//trace("length="+my_xl[0].length())
//trace("ノード取得"+my_xl[0].children()[1].toXMLString())
trace("ノード取得"+my_xl[0].children()[1].name().localName)
var nodeLength_ui:uint=my_xl.children().length();
for(var i:uint=0;i
posted by 神風記 at 02:11| XML | このブログの読者になる | 更新情報をチェックする

2008年01月06日

my_xml.children().length()で XMLのitemノード内に定義されたXMLの要素の数を取得

var my_ulo:URLLoader=new URLLoader();

my_ulo.addEventListener(Event.COMPLETE,completeHandler)

var my_xml:XML;

my_ulo.load(new URLRequest("xml/sample.xml"))

function completeHandler(evt:Event)
{

my_xml=new XML(evt.target.data)

//trace("evt="+my_xml)
if(my_xml.item[0].hasOwnProperty("bg"))
{
var my_xl=my_xml.item[0];
//XMLのitemノード内に定義されたXMLの要素の数を取得
trace("my_xl="+my_xl.children().length())
//trace("length="+my_xl[0].length())
trace("ノード取得"+my_xl[0].child(1))


trace("命令文を判断"+my_xml.item[0].lastName)
my_mc.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
//my_mc.dispatchEvent(new MouseEvent("bg"));
//clickSpace_mc.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
} else {

trace("命令文なし"+my_xml.item[0]);
}

}
posted by 神風記 at 20:05| XML | このブログの読者になる | 更新情報をチェックする

XMLのchildren().length()で指定したノードの中にある要素数を参照。



XMLのchildren().length()で指定したノードの中にある要素数を参照する事ができます。

var my_ulo:URLLoader=new URLLoader();

my_ulo.addEventListener(Event.COMPLETE,completeHandler)

var my_xml:XML;

my_ulo.load(new URLRequest("xml/zinzya.xml"))

function completeHandler(evt:Event)
{

my_xml=new XML(evt.target.data)

//trace("evt="+my_xml)
if(my_xml.item[0].hasOwnProperty("bg"))
{
var my_xl=my_xml.item[0];
trace("my_xl="+my_xl.children().length())
//trace("length="+my_xl[0].length())
trace("ノード取得"+my_xl[0].child(1))


trace("命令文を判断"+my_xml.item[0].lastName)
my_mc.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
//my_mc.dispatchEvent(new MouseEvent("bg"));
//clickSpace_mc.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
} else {

trace("命令文なし"+my_xml.item[0]);
}

}
posted by 神風記 at 19:59| XML | このブログの読者になる | 更新情報をチェックする

2007年12月27日

XMLへのアクセスを高速化(xmlList使用)

xmlへのアクセスを高速化できそうな処理を見つけたのでメモっときます。

ポイントは二つ

1
「xmlList」オブジェクトにxml.itemを代入する事でxml.item[index]へのアクセスをxmlList[index]で行う事ができる。

ここが重要

2
with(pass_xl[index_ui])
{
if(hasOwnProperty("text"))
{
trace("itemにtext要素が存在します")
}

if(hasOwnProperty("cg"))
{
trace("itemにcg様子が存在します")
}
}

withでxmlパスを回す事で一括してXMLのitemにアクセスできる

例題

1 xml.item[index_ui]へのをpass_xl[index_ui]で行うようにする

2 with(pass_xl[index_ui])で一括してpass_xl[index_ui])内の要素を参照する

var sample_ulo:URLLoader=new URLLoader();

var my_xml:XML;

sample_ulo.load(new URLRequest("xml/op.xml"));

sample_ulo.addEventListener(Event.COMPLETE,cpmpleteHandler)

var index_ui:uint=1;

var pass_xl:XMLList;

function cpmpleteHandler(evt:Event)
{
trace("ty="+typeof evt)
my_xml=new XML(evt.target.data);

pass_xl=my_xml.item;

//trace("my_xml="+my_xml)

with(pass_xl[index_ui])
{
trace("text="+text);

trace(hasOwnProperty("text"))
if(hasOwnProperty("text"))
{
trace("itemにテキストが存在します")
}



}

trace("pass_xl="+pass_xl[1])

}
posted by 神風記 at 05:34| XML | このブログの読者になる | 更新情報をチェックする

2007年11月08日

xmlの要素のlengthを参照する( ()空の引数を指定)

item内に同じ要素名が複数ある際に、要素の数がいくつあるかを判定。

例題

ロードしたxmlの同じitemの中に同じ「object」要素がいくつあるかを参照する。

XMLの場合、数(length)を取得するにはlength()と空の引数を指定する必要があります。

ソースコード | Flashゲーム研究所
posted by 神風記 at 12:47| XML | このブログの読者になる | 更新情報をチェックする

2007年11月07日

item内に同じ要素名が複数あった時は単数と違う読み取りを行う

item内に同じ要素名が複数あった時は単数と違う読み取りを行います。

例題

item内に要素名が重複した時に、取り出したい要素の本文を取得します。



<?xml version="1.0" encoding="utf-8"?>
<textLibrary>
<item>
<object>123</object>

</item>
</textLibrary>


というXMLのオブジェクトを読みとるには

trace(xml.item[0].object)というようにアクセスします。

そうすると本文の「123」が出力されます。

しかし、オブジェクトが複数あった場合はXMLは違う形で値を
返します。


<?xml version="1.0" encoding="utf-8"?>
<textLibrary>
<item>
<object>123</object>
<object>456</object>
</item>
</textLibrary>


「object」要素が二つあります。これにアクセスすると
<object>123</object>
<object>789</object>
という用に要素と本文を含めた値が返されます。

複数の要素名が重複したときは要素名[x]で本文を取得できます。


xml.item[0].object[0]

というように複数の要素名の中に取得したい要素の数字を代入する事で複数

の要素名があったときに取得したい要素の本文が取得できます。ソースコード | Flashゲーム研究所
posted by 神風記 at 01:00| XML | このブログの読者になる | 更新情報をチェックする

2007年10月04日

配列のメソッドreverseを使って配列の並びを反転

配列のメソッドreverseを使って配列の並びを反転させます。

reverseメソッドを使う事で配列の並び順を逆にする事ができます。

例題

配列オブジェクトを生成。配列の中に1,2,3,4,5と五つの文字を入れる。trace()すると1,2,3,4,5の文字が返される。この配列オブジェクトにreverseメソッドを適用。再度trace()すると5,4,3,2,1の順に返される。


ソースコード | Flashゲーム研究所
posted by 神風記 at 22:57| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年09月28日

hasOwnPropertyで指定した文字列が含まれているかどうかを判断

hasOwnPropertyメソッドで指定した文字列がX含まれているかどうかを判断します。

hasOwnProperty(name:String):Boolean

第一引数に検索したい文字列を代入します。文字列があった場合はtrueを返し、文字列がない場合はfalseを返します。

例題

XMLで検索したい文字があるかをhasOwnPropertyで判断します。
xmlオブジェクトのitemにbgという文字列があるかどうかを判断します
my_xml.item.hasOwnProperty("bg")

ソースコードを見る | Flashゲーム研究所
posted by 神風記 at 07:16| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年09月03日

XMLの属性を取得する(@でアクセス)

XMLの属性を取得するXMLの属性を取得します。
XMLの属性とは<getValue type="str">18</getValue>という文のtypeがXMLの属性にあたります。
XMLの属性は.@で取得します。
Flashゲームの制作においてXMLの操作は非常に重要ですのでXMLをいかに効率よく解析する事を突き詰める事は
Flashゲームの制作効率に大きく関わってくると思います。続きを読む
posted by 神風記 at 11:09| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年08月31日

AS3でXML画像ギャラリー

AS3でXML画像ギャラリーを構成します。
AS3でXML画像ギャラリーを生成します
前から少しずつUPしていきましたが
配列の処理など必要な処理はここで記述したので今回はすべてのソースコードを公開します
完成品はこういう風に表示されます
今回は動く事意外は考えないでコーディングしたのでソースコードは非常に雑で、汎用性は低いです

基本的な流れ

サムネイルが画面左に表示される
サムネイルが総てロードされるとサムネイルがクリック可能になる
サムネイルをクリック
本画像が画面右にクロスフェードで表示される
用意するファイルサムネイル画像のサイズは80×80
本画像のサイズは640×480にしておいてください
サムネイル画像(80×80)本画像(640×480)
サムネイルと本画像のパスを記載したXMLファイル

処理の流れ

XMLファイルをロードする
XMLから読み込む画像の数を判断するサムネイルを画像を格納するSpriteオブジェクトとLoaderオブジェクトを画像数分生成し、各配列に格納する
サムネイル画像を読み込み配列に格納されたSpriteオブジェクトに一つ一つ表示させる
サムネイル画像を総て読み込んだら総てのサムネイルにMouseEventを割り当てる。(クリックすると本画像をロードするイベント)
一度に表示されるサムネイルの数は5つ。
残りのサムネイルはXMLのノード順にマスクの下に表示されている。
5つ以上画像がある際はサムネイルをナビゲートするカーソルを表示する。
カーソルにはMouseEventを割り当てる(クリックするとマスクに隠れているサムネイルを5つ持ってくるイベント)
画像を読み込む際は、前の画像を表示させたままもう一つのLoaderで画像を読み込み前の画像とクロスフェードで表示する形式を取っているのでLoaderオブジェクトは二つ用意しておく。
本画像を表示する2つのLoaderオブジェクトにOPEN,PROGRESS,COMPLETEの三つのイベントを割り当てる。
OPENのイベントハンドラではローディングバー等のローディング画像を表示させる
PROGRESSのイベントハンドラではローディングの進行状況を表示させる
COMPLETEのイベントハンドラではローディング画像をremoveする
読み込んだ本画像を表示させ前の画像のアルファのアルファのをフェードアウト、新たに読み込んだ画像をフェードイン
本画像が表示される以上動作するソースファイルを用意したので宜しければ実際にダウンロードして色々試してみてください画像を用意してXMLに画像パスを書くだけですぐ動作します。
XMLの操作のみで更新できますのでFLASHでパブリッシュせずに
XMLの更新だけでギャラリーが更新されます

ソースファイル

非常に雑な作りなのでソースファイルの内容は変更する可能性があります最新の仕様はこのブログにアップしていきたいと思います


続きを読む
posted by 神風記 at 22:57| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年08月18日

AS3 XMLギャラリーのサンプル

AS3で構成したXMLギャラリーの簡単なエンジンを開発。動作テストを兼ねてTOPにおいてます。XMLで画像へのパスを記述→自動的にサムネイルを生成→クリック→クロスフェードで画像表示という構成。後々ソースコードをアップします。画像はAS3で製作中のFlashゲームのもの。
posted by 神風記 at 14:33| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年07月28日

XMLのノード数に応じてMCを自動生成

XMLのノード数に応じてMCを自動生成します。



続きを読む
posted by 神風記 at 04:49| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年07月27日

AS3でXML画像ギャラリー(2)

AS3でXML画像ギャラリー(1)の続き

サムネイルを読み込み、サムネイルをクリックすると同じ
XMLのノードの本画像へのパスをロードし、表示させる



続きを読む
posted by 神風記 at 12:40| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年07月26日

AS3でXML画像ギャラリー(1)

AS3でXML制御の画像ギャラリーを制作したい。

今回は用意したMC内にサムネイルを読み込む事から始める







続きを読む
posted by 神風記 at 20:11| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

XMLをロードして、アイテム数を取得

XMLをロードして、アイテム数を取得







続きを読む
posted by 神風記 at 13:44| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年07月20日

XMLのイベント取得

XML取得を復習。loaderオブジェクトとか完全にまだ覚えてないので早めに習得する必要がある。

続きを読む
posted by 神風記 at 20:59| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする

2007年07月15日

XMLのロードと解析

なぜかソースコードの一部が記事中に反映されないので(不具合?)とりあえず問題のfor文の計算式を日本語にしてソースコードを記載。

続きを読む
posted by 神風記 at 03:14| Comment(0) | TrackBack(0) | XML | このブログの読者になる | 更新情報をチェックする