2011-10-25 スライドショー途中

by akkey.guitar
後は画像の指定をすればおっけー
♥0 | Line 203 | Modified 2011-10-25 20:28:30 | MIT License
play

ActionScript3 source code

/**
 * Copyright akkey.guitar ( http://wonderfl.net/user/akkey.guitar )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ugiC
 */

// forked from akkey.guitar's 縦型スライドショー 2011-3-8
package{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.events.MouseEvent;
    import flash.display.SimpleButton;
    import flash.events.Event;
    import flash.events.TimerEvent;
    import flash.utils.Timer;
    import flash.net.URLRequest;
    import flash.net.navigateToURL;
    import flash.external.*;
    import flash.filters .*;
    import flash.text.TextFormat;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.net.URLLoader;

/*--------------------------------
TweenLiteライブラリの読み込み
--------------------------------*/
    //import gs.easing.Back;
    //import gs.TweenLite;
    import com.greensock.*;
    import com.greensock.easing.*;
[SWF(backgroundColor=0,frameRate=30)]

    public class Test01 extends MovieClip {
        
/*--------------------------------
変数、配列の設定
--------------------------------*/
        
        // 画像を自動的に変更するタイマー
        public var imageTimer:Timer;
        // ボタン用タイマー
        public var imageTimerUP:Timer;
        public var imageTimerDOWN:Timer;
        // 現在表示されている画像の番号
        public var imageNum:Number = 0;
        public var urlNum:Number = 0;
        //ローダーから読んだURLを配列に格納
        public var imageLoaderAry:Array = new Array();
        public var imageLoaderRinkAry:Array = new Array();
        //loadImage内変数宣言
        public var LoadUrl:String;
        public var LoadRinkUrl:String;
        public var i:Number;
        public var I:Number;
        public var imageY:Number = 140;
        public var req_array:Array = new Array();
        public var imageLoader_array:Array = new Array();
        public var moveBox_array:Array = new Array();
        public var loadNum_array:Array = new Array();
        public var pointY:Array = new Array();
        public var pointY2:Array = new Array();
        public var pointX:Array = new Array();
        public var pointX2:Array = new Array();
        //シンプルボタン
        public var load_up:SimpleButton = new SimpleButton();
        public var load_down:SimpleButton = new SimpleButton();

    public var target = parent;


/*--------------------------------
XML用 変数、配列の設定
--------------------------------*/
    private var xmlLoader:URLLoader;    // XMLを読み込むローダー
    private var MyXmlData:Array;    // xmlのデータを保存する配列

/*--------------------------------
クラス呼び出し
--------------------------------*/
        
            public function Test01(){
            var testint:uint = 12;
            //trace(testint);
            mainFunc();
            }

/* --------------------------------
XML読み込み
----------------------------------- */
private function mainFunc():void{
// URLLoader型のインスタンスを生成
xmlLoader = new URLLoader();
// 読み込み完了イベントを登録する
xmlLoader.addEventListener (Event.COMPLETE,doComplete);
// URLRequestインスタンスを作成
var req:URLRequest = new URLRequest("xml/xmlData.xml");
// XMLファイルを読み込む
xmlLoader.load (req);
}

private function doComplete (e:Event) {
    // 読み込んだ内容を元に、XMLデータを作成(<data>の中身)
    var xml:XML = new XML(e.target.data);
    // XMLデータの<item>の中身をxmlListに格納
    var xmlList:XMLList = xml.item;
    // 連想配列を用いて各配列にデータを格納
    MyXmlData =  new Array();
    MyXmlData["photo"]  = xmlList.photo.*;
    MyXmlData["url"]    = xmlList.url.*;
    MyXmlData["target"] = xmlList.target.*;

    /*--------------------------------
    関数の実行
    --------------------------------*/
    //loadImageを実行する
    loadImage ();

}

/*--------------------------------
関数
--------------------------------*/

// 画像を読み込む
private function loadImage (){
    
    // 保存したimageNumをもとに、MyXmlData["photo"]の配列から写真のURLを取得
    for (I=0; I<MyXmlData["photo"].length(); I++) {
        
        LoadUrl = MyXmlData["photo"][imageNum + I];

        LoadRinkUrl = MyXmlData["url"][urlNum + I];

        //画像Urlを配列に振り分け
        imageLoaderAry[I] = LoadUrl;

        //Linkを配列に振り分け
        //imageLoaderRinkAry[I] = LoadRinkUrl;
        
        if (imageNum>=MyXmlData["photo"].length()) {
        LoadUrl = MyXmlData["photo"][imageNum];
        }
        
        //Loaderクラスで画像を読み込む
        req_array[I] = new URLRequest(imageLoaderAry[I]);
        imageLoader_array[I] = new Loader();
        imageLoader_array[I].load (req_array[I]);
        //外枠に合わせるため位置調整
        imageLoader_array[I].x = 10;
        imageLoader_array[I].y = 0;
        //ムービークリップ格納用
        moveBox_array[I] = new MovieClip();


        //画像の表示場所
    moveBox_array[I].x = I * 152 - 76;
    moveBox_array[I].y = 4;

        //画像にリンク付け
    moveBox_array[I].link = new URLRequest(MyXmlData["url"][I]);
        //クリックされたらリンクに飛ぶ
        moveBox_array[I].addEventListener (MouseEvent.CLICK,onClick);
    // クリックされたら実行される
    function onClick(evt:MouseEvent):void{
    navigateToURL(evt.target.link , "_self" );
    }
        // 子要素(テキストフィールド)に対してマウスを無効にする
        moveBox_array[I].mouseChildren = false;
        // ロールオーバーした際にマウスを指に変更
        moveBox_array[I].buttonMode = true;
        
        //ロード画像をムービークリップに変換し、配置
        addChild(moveBox_array[I]);
        moveBox_array[I].addChild(imageLoader_array[I]);

        //左右ボタン
        slide_l.addEventListener (MouseEvent.CLICK,onClickUP);
        slide_l.x = 78;
        slide_l.y = 26;
        addChild(slide_l);
        
        slide_r.addEventListener (MouseEvent.CLICK,onClickDOWN);
        slide_r.x = 1001;
        slide_r.y = 26;
        addChild(slide_r);
    
    
        //trace(MyXmlData["photo"].length());
    
    
    }//for文終了
    
    // startTimerを実行する
    startTimer ();
    
}//loadImage ()終了




    /*--------------------------------
    タイマー系の関数
    --------------------------------*/
private function onTimerCalled (e:TimerEvent):void {
    // 呼ばれるたびにimageNumの番号を増やしていく
    imageNum++;
    
    slide_l.mouseEnabled = false;
    slide_r.mouseEnabled = false;
    imageTimerUP = new Timer(1100,0);
    // タイマーをスタートさせる
    imageTimerUP.start ();
    // タイマーが実行されるたびにonTimerCalledUpが呼び出される
    imageTimerUP.addEventListener (TimerEvent.TIMER,onTimerCalledUp);
        function onTimerCalledUp (e:TimerEvent):void {
            slide_l.mouseEnabled = true;
            slide_r.mouseEnabled = true;
            imageTimerUP.stop ();
            //trace(target.slide_l);
        }

    // MyXmlData["photo"]の長さより大きくなった場合、imgeNumに0を代入
    if (imageNum>=MyXmlData["photo"].length()) {
        imageNum = 0;
    }
    
    //trace (imageNum+"番目の画像です");
    
    for (I=0; I<moveBox_array.length; I++) {
        if(moveBox_array[I].x > 152*MyXmlData["photo"].length()-86){
            moveBox_array[I].x = -76;
        }
        //trace(moveBox_array[I].x);
        //trace(MyXmlData["photo"].length());
        pointX[I] = moveBox_array[I].x + 152;
        function move():void {
            TweenLite.to(moveBox_array[I], 0.5, {x:pointX[I], y:4, ease:Circ.easeInOut});
        }
        move();
        
    //trace(moveBox_array[I].y);
    //pointX[I] = -270;
    //trace(pointX[I]);

    }//for文終了
    
}


//アップボタン
private function onClickUP (e:MouseEvent):void {
    
    //ボタンを押してる間動きをストップ
    imageTimer.stop ();
    
    //ボタン裏初期設定
    buttonUPover.x = 78;
    buttonUPover.y = 26;
    buttonDOWNover.x = 1001;
    buttonDOWNover.y = 26;
    
    //ボタン表示
    addChild(buttonUPover);
    addChild(buttonDOWNover);

    imageTimerUP = new Timer(1100,0);
    // タイマーをスタートさせる
    imageTimerUP.start ();
    // タイマーが実行されるたびにonTimerCalledUpが呼び出される
    imageTimerUP.addEventListener (TimerEvent.TIMER,onTimerCalledUp);
        function onTimerCalledUp (e:TimerEvent):void {
            //ボタン表示
            removeChild(buttonUPover);
            removeChild(buttonDOWNover);
            imageTimerUP.stop ();
            //trace(target.slide_l);
        }

    for (I=0; I<moveBox_array.length; I++) {
            if(moveBox_array[I].x < 10){
                moveBox_array[I].x = 152*MyXmlData["photo"].length()-76;
            }
            pointX2[I] = moveBox_array[I].x + 152;
            function move():void {
                TweenLite.to(moveBox_array[I], 0.5, {x:pointX2[I] - 304, y:4, ease:Circ.easeInOut});
                }

            move();
    
    }//for文終了

    //動きをスタート
    imageTimer.start ();

}
    
    //ダウンボタン
private function onClickDOWN (e:MouseEvent):void {
    
    //ボタンを押してる間動きをストップ
    imageTimer.stop ();
    
    //ボタン裏初期設定
    buttonUPover.x = 78;
    buttonUPover.y = 26;
    buttonDOWNover.x = 1001;
    buttonDOWNover.y = 26;

    //ボタン表示
    addChild(buttonUPover);
    addChild(buttonDOWNover);
    
    imageTimerDOWN = new Timer(1100,0);
    // タイマーをスタートさせる
    imageTimerDOWN.start ();
    // タイマーが実行されるたびにonTimerCalledDounが呼び出される
    imageTimerDOWN.addEventListener (TimerEvent.TIMER,onTimerCalledDoun);
        function onTimerCalledDoun (e:TimerEvent):void {
            //ボタン表示
            removeChild(buttonUPover);
            removeChild(buttonDOWNover);
            imageTimerDOWN.stop ();
            //trace(target.slide_r);
        }

    for (I=0; I<moveBox_array.length; I++) {
            function move():void {
                TweenLite.to(moveBox_array[I], 0.5, {x:moveBox_array[I].x+152, y:4, ease:Circ.easeInOut});
            }
            if(moveBox_array[I].x > 152*MyXmlData["photo"].length()-86){
            moveBox_array[I].x = -76;
            }

            move();
            
            //trace(moveBox_array[I].x);
    
    }//for文終了
    
    //動きをスタート
    imageTimer.start ();

}
    
private function onTimerCalledUp (e:TimerEvent):void {
                load_up.mouseEnabled = true;
                load_down.mouseEnabled = true;
                imageTimerUP.stop ();
                trace(load_up);
}

private function onTimerCalledDoun (e:TimerEvent):void {
                //ボタン有効化
                load_down.mouseEnabled = true;
                load_up.mouseEnabled = true;
                imageTimerDOWN.stop ();
                trace(load_down);
}
    
    

// タイマーをスタートする
private function startTimer () {
    // 5秒間隔で無限に実行する
    imageTimer = new Timer(5000,0);
    // タイマーをスタートさせる
    imageTimer.start ();
    // タイマーが実行されるたびにonTimerCalledが呼び出される
    imageTimer.addEventListener (TimerEvent.TIMER,onTimerCalled);
}
    

  

    }
    
}