
フレームアクションで覚える PV3D Vol.06 : スライドショー XMLバージョン
Clockmaker様の「フレームアクションで覚える PV3D Vol.06 : スライドショー」のエントリーのサンプルの改造版を制作しました。
元ファイルのURLはこちら
http://clockmaker.jp/blog/2009/05/papervision3d_tutorial_6/XMLパースを加えることによって、テキストの連携もできるようにしてみました

XML解析部分のプログラムの参考(技術評論社のNORIさんの連載記事より抜粋)
http://gihyo.jp/design/serial/01/flash_mt/0004また、テキストのタイピングアクションは「プロとして恥ずかしくないActionScript3.0の大原則」の33ページで紹介されていたスクリプトを参考に制作しております。
XMLとの連携部分は以下の通りです。
XML解析用のonLoad関数の中に、
1.まずはXMLをE4Xで解析
2.配列にデータを格納
3.Papervision3Dのマテリアルを生成する際に、配列に格納した画像データを表示させる
ような形になります。
(何せ初めてこのような投稿をしたもんで…修正ばかりで申し訳ないです)
引用:
/************************************************************************/
//URLLoaderオブジェクトを用意する。
var myLoader:URLLoader = new URLLoader();
//myLoaderの受け取るデータがテキストであることを宣言する。
myLoader.dataFormat=URLLoaderDataFormat.TEXT;
//myLoader読み込み終了時に実行する関数を定義する。
myLoader.addEventListener(Event.COMPLETE,onLoaded);
//イメージなどのデータが入る配列
var image_array:Array = new Array();
//onLoaded関数を設定
function onLoaded(e:Event):void {
//初期表示
var typeStr:TypeStr=new TypeStr(txt);
typeStr.typing("写真をクリックすると拡大表示されます。");
var typeStr2:TypeStr=new TypeStr(date);
typeStr2.typing("");
//XMLオブジェクトを作成して、読み込んだテキストデータをパース
var myXML:XML=new XML(e.target.data);
//E4XでmyXMLを解析
for each (var entrydata:XML in myXML.*) {
var t_object:Object = new Object();
//entrydataの中のimgタグのsrc属性を調べる
t_object.src=entrydata.img.@src;
t_object.id=entrydata.@id;
t_object.title=entrydata.@title;
t_object.date=entrydata.@date;
image_array.push(t_object);
}
//(5)写真の数(変数):応用
var PHOTO_NUM=image_array.length;
//(6)写真を配置する
for (var i:int = 0; i < PHOTO_NUM; i++) {
//(7)マテリアル(Material)を作成する (ビットマップファイルマテリアルは引数にライブラリの画像を指定します)
var material:BitmapFileMaterial=new BitmapFileMaterial("img/"+image_array[i].src);
//(8)イベントを拾うことができるようにする
material.interactive=true;
//表示しているビットマップイメージをスムーズにする
material.smooth=true;
//(9)平面(Plane)を作成する
var photo:Plane=new Plane(material,844,400,1,1);
//(10)photoオブジェクトのクリックイベントの設定
photo.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, clickHandler);
//(11)3D空間に球面を追加します
world.scene.addChild(photo);
//(12)写真ギャラリーを並べる 横=横幅×列番号+調整値(Planeの横幅の半分)
photo.x = 944 * (Math.floor(i / 3) - PHOTO_NUM / 3 / 2) + 944 / 2;
//(13)写真ギャラリーを並べる 縦=縦幅×行番号+調整値(Planeの高さの半分)
photo.y = 500 * (i % 3 - 2 / 3) - 500 / 2;
}
}
//XMLデータの読み込みを実行する
var myURLRequest:URLRequest=new URLRequest("photodata.xml");
myLoader.load(myURLRequest);
/************************************************************************/
あとは、Flashのサイズに合わせて、サイズに関するパラメータをいじっただけですが・・・
サンプル)
http://just1factory.kir.jp/Flaデータのご要望がありましたら
fumiya.def.mathmatica@gmail.comまで、ご一報ください。