前回、
今回は、
おさらい
前回作成したフレームアクションは、
//読み込みオブジェクトの生成
var myLoader:URLLoader = new URLLoader();
//テキストデータという宣言
myLoader.dataFormat=URLLoaderDataFormat.TEXT;
//読み込み完了したらonLoaded()を実行
myLoader.addEventListener(Event.COMPLETE,onLoaded);
//読み込み完了時に実行される関数
function onLoaded(e:Event):void {
      //XMLデータとして読み込んだテキストデータをパース
      var myXML:XML=new XML(e.target.data);
      //E4XでmyXMLを解析
      for each (var entrydata:XML in myXML.*) {
            //entrydata の中のimgタグのsrc属性を調べる
            trace("src",entrydata.img.@src)
      }
}
//文字列をURLRequestオブジェクトにする
var myURLRequest:URLRequest=new URLRequest("photo.xml");
//XML読み込み実行
myLoader.load(myURLRequest);
実行すると、
今回は、
格納すべきデータは、
Objectデータを配列にする
1件分のデータはObjectにしておきます。これだと、
データの構造は次のようなイメージです。
では、
function onLoaded(e.Event):void{
      var myXML:XML=new XML(e.target.data);
      for each (var entrydata:XML in myXML.*) {
            var t_object:Object = new Object()
            t_object.src = entrydata.img.@src
            t_object.id = entrydata.id
            t_object.title = entrydata.title
      }
}
このままでは、
そこで、
配列 image_
var image_array:Array = new Array()
function onLoaded(e.Event):void{
      var myXML:XML=new XML(e.target.data);
      for each (var entrydata:XML in myXML.*) {
            var t_object:Object = new Object()
            t_object.src = entrydata.img.@src
            t_object.id = entrydata.id
            t_object.title = entrydata.title
            image_array.push(t_object)
      }
}
これで、
画像を読み込んで表示する関数を作る
画像を読み込むためには、
今回もURLの指定には、
var loader:Loader = new Loader()
var fileurl:URLRequest = new URLRequest("http://~.jpg")
loader.load(fileurl)
そこで、
また画像の指定方法は、
image_array[num].src
showPicture関数の定義は、
function showPicture(num:uint):void{
      var loader:Loader = new Loader()
      var fileurl:URLRequest = new URLRequest(image_array[num].src)
      loader.load(fileurl)
}
これで、
これらをまとめたものが次のスクリプトです。
function showPicture(num:uint):void{
      var loader:Loader = new Loader()
      addChild(loader)
      var fileurl:URLRequest = new URLRequest(image_array[num].src)
      loader.load(fileurl)
}
ムービープレビューで最初の画像を表示するには、
function onLoaded(e:Event):void {
      var myXML:XML=new XML(e.target.data)
      for each (var entrydata:XML in myXML.*) {
            var t_object:Object = new Object();
            t_object.src=entrydata.img.@src;
            t_object.id=entrydata.id;
            t_object.title=entrydata.title;
            image_array.push(t_object);
      }
      showPicture(0);
}
次の画像を指定する関数
フォトアルバムのように、
関数名は、
現在のimage_
var current_image_num:uint
function nextPicture():void {
  current_image_num++;
  if (current_image_num>=image_array.length-1) {
             current_image_num=0;
  }
  showPicture(current_image_num);
}
上記のスクリプトを解説すると、
その値が、
最後に、
- ※)
 - image_
arrayは0から始まるので、 長さ-1が最大値になります。  
nextPicture()を実行するイベント
現在の関数nextPicture()は、
そこで、
loader.addEventListener(MouseEvent.CLICK,nextPicture)
この1行をloaderを作成するshowPicture()の中に書きます。ただし、
MouseEventでnextPictureが呼ばれるため、
そこで、
function nextPicture(e:MouseEvent):void {
これで、
まとめ
これで、
最後に現在までのスクリプトをコメント付きで書いておきます。太字が今回作成したスクリプトです。また、
//読み込みオブジェクトの生成
var myLoader:URLLoader = new URLLoader();
//イメージのsrcなどが入るObjectの配列
var image_array:Array = new Array();
//現在表示しているimage_arrayの順番
var current_image_num:uint=0;
//
//テキストデータという宣言
myLoader.dataFormat=URLLoaderDataFormat.TEXT;
//読み込み完了したらonLoaded()を実行
myLoader.addEventListener(Event.COMPLETE,onLoaded);
//読み込み完了時に実行される関数
function onLoaded(e:Event):void {
      //XMLデータとして読み込んだテキストデータをパース
      var myXML:XML=new XML(e.target.data);
      //E4XでmyXMLを解析
      for each (var entrydata:XML in myXML.*) {
            //Objectの配列としてデータを格納
            var t_object:Object = new Object();
            t_object.src=entrydata.img.@src;
            t_object.id=entrydata.id;
            t_object.title=entrydata.title;
            image_array.push(t_object);
      }
      showPicture(0);
}
//イメージを表示する
function showPicture(num:uint):void {
      //読み込み用のMC
      var loader:Loader = new Loader();
      addChild(loader);
      //読み込み
      var fileurl:URLRequest=new URLRequest(image_array[num].src);
      loader.load(fileurl);
      //loaderをクリックしたときは、nextPictureを呼び出す
      loader.addEventListener(MouseEvent.CLICK,nextPicture);
}
//次のイメージを指定する
function nextPicture(e:MouseEvent):void {
      //現在のイメージ番号に1加算する
      current_image_num++;
      if (current_image_num>image_array.length-1) {
                  //もし、次のイメージの番号がイメージの配列の長さ-1を超えていたら、次の番号は0番目(先頭)にする
                  current_image_num=0;
      }
      //指定した番号にあるイメージを表示する
      showPicture(current_image_num);
}
//文字列をURLRequestオブジェクトにする
var myURLRequest:URLRequest=new URLRequest("http://www.3oclock.com/my_first_blog-gihyojp/photo.xml");
//XML読み込み実行
myLoader.load(myURLRequest);
次回以降は、
