XML管理のフォトギャラリーPart:1

| | トラックバック(0)

最初に
この記事はFlash初心者向けです。書いてる本人も初心者です。(笑)

今回作るもの:
xml管理のフォトギャラリー

mp3プレイヤーやflvプレイヤーにも応用が可能だと思われます。
多分、、、、。

言語:
ActionScript2,xml


準備:
同じ階層にflaファイル、xmlファイル、新規フォルダ、

フォルダの名前はimageとし中に読み込む画像を入れます。
flaファイルはgallery.fla,xmlファイルはphoto.xmlと名前をつけます。

面倒な方はこちらからダウンロードしてください。
注意:flaファイルはCS3で書き出しています。

今回はflashにxmlを読み込み、画像のパスを抜き出すまでやります。

xmlコード
<?xml version="1.0" encoding="utf-8"?>
<images>
    <image thum="image/thum1.jpg" photo="image/photo1.jpg" />
    <image thum="image/thum2.jpg" photo="image/photo2.jpg" />
    <image thum="image/thum3.jpg" photo="image/photo3.jpg" />
    <image thum="image/thum4.jpg" photo="image/photo4.jpg" />
    <image thum="image/thum5.jpg" photo="image/photo5.jpg" />
    <image thum="image/thum6.jpg" photo="image/photo6.jpg" />
    <image thum="image/thum7.jpg" photo="image/photo7.jpg" />
    <image thum="image/thum8.jpg" photo="image/photo8.jpg" />
    <image thum="image/thum9.jpg" photo="image/photo9.jpg" />
    <image thum="image/thum10.jpg" photo="image/photo10.jpg" />
</images>

でflashで新規でファイルを開きます。
タイムラインの最初のフレームにActionScriptを書いていきます。

ActionScriptコード
var photoList:Array = new Array();

var xml:XML = new XML();

xml.ignoreWhite = true;

xml.onLoad = function() {

    nodes = this.firstChild.childNodes;

    for (var i = 0; i<nodes.length; i++) {

        photoList.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo});
        trace(photoList[i].photo);

    }
};

xml.load("photo.xml");
trace(xml.load("photo.xml"));

以下コードの解説

var photoList:Array = new Array();

まず、画像のパスを格納する配列を作成

var xml:XML = new XML();

次にxmlオブジェクトを作成

xml.ignoreWhite = true;

xmlデータの空白のみのノードや改行をアレする、、、。
、、、、、、とりあえず毎回設定します。

詳しくはヘルプを見て下さい。(笑)

xml.onLoad = function() {

nodes = this.firstChild.childNodes;
for (var i = 0; i<nodes.length; i++) {
photoList.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo}); trace(photoList[i].photo);
trace(photoList[i].photo);
  }
};

xmlをロードした後の設定です。
xmlのfirstChild.childNodesまでを変数"nodes"にします。

xml.onLoad = function() {

nodes = this.firstChild.childNodes;
for (var i = 0; i<nodes.length; i++) {
photoList.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo}); trace(photoList[i].photo);
trace(photoList[i].photo);
  }
};


そしてnodesの数だけfor文で回します。
ちなみにnodesってxmlの中のこれの事です→<image thum="image/thum1.jpg" photo="image/photo1.jpg" />

今回は10個ノードがあるので10回ファンクションが繰り返されます。
モチロンxmlのノードを増やせば回数も増えます。

xml.onLoad = function() {

nodes = this.firstChild.childNodes;
for (var i = 0; i<nodes.length; i++) {
photoList.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo}); trace(photoList[i].photo);
trace(photoList[i].photo);
 }
};

でnodesの中のthum=""とphoto=""の中の画像のパスだけ取り出して最初に作った配列"photoListに足していきます。

xml.onLoad = function() {

nodes = this.firstChild.childNodes;
for (var i = 0; i<nodes.length; i++) {
photoList.push({thum:nodes[i].attributes.thum, photo:nodes[i].attributes.photo}); trace(photoList[i].photo);
trace(photoList[i].thum);
  }
};

で、トレースします。
結果は以下のようになるはず、、、、

image/thum1.jpg
image/thum2.jpg
image/thum3.jpg
image/thum4.jpg
image/thum5.jpg
image/thum6.jpg
image/thum7.jpg
image/thum8.jpg
image/thum9.jpg
image/thum10.jpg


xml.load("photo.xml");
trace(xml.load("photo.xml"));

xmlをロードします。これは最後に書くのがお作法?らしいです。
今回は以上です。

次回はサムネイル画像をフラッシュ上に表示させ、横に並べるまでやります。

トラックバック(0)

このブログ記事を参照しているブログ一覧: XML管理のフォトギャラリーPart:1

このブログ記事に対するトラックバックURL: http://alwaysfinetuning.com/mt/mt-tb.cgi/27

このブログ記事について

このページは、が2008年4月17日 00:06に書いたブログ記事です。

ひとつ前のブログ記事は「急にアニメーションが止まるバグ?」です。

次のブログ記事は「flashのhelpパネルの文字が小さくなってしまった」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。