縦型スライドショー 2011-3-8

by akkey.guitar forked from forked from: flash on 2011-3-8 (diff: 139)
--------------------------------
TweenLiteライブラリの読み込み
--------------------------------
♥0 | Line 242 | Modified 2011-07-24 15:05:18 | MIT License
play

Related images

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/x6Pp
 */

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;
[SWF(backgroundColor=0,frameRate=30)]

    public class Test01 extends MovieClip {
        
/*--------------------------------
変数、配列の設定
--------------------------------*/
        
        // xmlのデータを保存する配列
        public var MyXmlData:Array;
        // 画像を自動的に変更するタイマー
        public var imageTimer:Timer;
        // ボタン用タイマー
        public var imageTimerUP:Timer;
        public var imageTimerDOWN:Timer;
        // 現在表示されている画像の番号
        public var imageNum:Number = 0;
        //ローダーから読んだURLを配列に格納
        public var imageLoaderAry:Array = new Array();
        //loadImage内変数宣言
        public var LoadUrl: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 load_up:SimpleButton = new SimpleButton();
        public var load_down:SimpleButton = new SimpleButton();

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

/* --------------------------------
XML読み込み
----------------------------------- */
private function mainFunc():void{
    var xml:XML = 
<data>
    <item>
        <photo>image0.jpg</photo>
        <url>http://gourmet.walkerplus.com/tuad/tw20th/</url>
        <target>0</target>
    </item>
    <item>
        <photo>image1.jpg</photo>
        <url>http://www.nikkei.com/</url>
        <target>0</target>
    </item>
    <item>
        <photo>image2.jpg</photo>
        <url>http://e-words.jp/w/E38397E383ADE382ADE382B7.html</url>
        <target>0</target>
    </item>
    <item>
        <photo>image3.jpg</photo>
        <url>http://www.yahoo.co.jp/</url>
        <target>0</target>
    </item>
    <item>
        <photo>image2.jpg</photo>
        <url>http://yahoo-mbga.jp/game/12004062/detail?_ref=aff%3Dyap056</url>
        <target>0</target>
    </item>
    <item>
        <photo>image3.jpg</photo>
        <url>http://gourmet.walkerplus.com/tuad/tw20th/</url>
        <target>0</target>
    </item>
</data>;

    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];
        
        //画像Urlを配列に振り分け
        imageLoaderAry[I] = LoadUrl;
        trace(imageLoaderAry[I]);
        
        if (imageNum>=MyXmlData["photo"].length()) {
        LoadUrl = MyXmlData["photo"][imageNum];
        }
        
        //Loaderクラスで画像を読み込む
        req_array[I] = new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/" + imageLoaderAry[I]);
        imageLoader_array[I] = new Loader();
        imageLoader_array[I].load (req_array[I]);
        //外枠に合わせるため位置調整
        imageLoader_array[I].x = 5;
        imageLoader_array[I].y = 5;
        //ムービークリップ格納用
        moveBox_array[I] = new MovieClip();
        /*偶数・奇数で傾きを変える
        if((I % 2) == 0){
        moveBox_array[I].rotation = -2;
        }else{
        moveBox_array[I].rotation = 2;
        }*/
        
        //外の四角
        var backrect = moveBox_array[I].graphics;
        backrect.beginFill(0xFFFFFF);
        backrect.drawRect(0,0,180,130);

        //画像の表示場所
        moveBox_array[I].x = 140;
        moveBox_array[I].y = I * 140 - 130;
        
        //画像にリンク付け
        moveBox_array[I].addEventListener (MouseEvent.CLICK,onClick);
        // 子要素(テキストフィールド)に対してマウスを無効にする
        moveBox_array[I].mouseChildren = false;
        // ロールオーバーした際にマウスを指に変更
        moveBox_array[I].buttonMode = true;
        
        //ロード画像をムービークリップに変換し、配置
        addChild(moveBox_array[I]);
        moveBox_array[I].addChild(imageLoader_array[I]);

        //moveBoxを下に動かす
        TweenLite.to(moveBox_array[I], 1, {x:140, y:I * 140 - 130});
        //下まで来たmoveBoxを上に持っていく
        if(moveBox_array[I].y > 150*MyXmlData["photo"].length()-300){
            moveBox_array[I].y = 10;
        }
        
        //シンプルボタン
        var imgLoaderUP:Loader = new Loader();  
        var imgLoaderUPover:Loader = new Loader();
        var imgLoaderUPover2:Loader = new Loader(); 
        var imgLoaderDOWN:Loader = new Loader();  
        var imgLoaderDOWNover:Loader = new Loader();
        var imgLoaderDOWNover2:Loader = new Loader(); 
        
        imgLoaderUP.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_up.png"));
        imgLoaderUPover.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_up_over.png"));
        imgLoaderUPover2.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_up_over2.png"));
        imgLoaderDOWN.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_down.png"));
        imgLoaderDOWNover.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_down_over.png"));
        imgLoaderDOWNover2.load(new URLRequest("http://www.oncekey.jp/test_page/flash_test/images/load_down_over2.png"));
        
        //通常の状態  
        load_up.upState = upButton(imgLoaderUP);
        load_down.upState = downButton(imgLoaderDOWN);
        //ダウン 
        load_up.downState = upButton(imgLoaderUPover2);
        load_down.downState = downButton(imgLoaderDOWNover2); 
        //ロールオーバー  
        load_up.overState = upButton(imgLoaderUPover);
        load_down.overState = downButton(imgLoaderDOWNover);
        //クリック時  
        load_up.hitTestState = load_up.upState;
        load_down.hitTestState = load_down.upState;
            
        load_up.x = 213;
        load_up.y = 5;
        load_down.x = 213;
        load_down.y = 425;
  
        addChild(load_up);
        addChild(load_down);

        //上下ボタン
        load_up.addEventListener (MouseEvent.CLICK,onClickUP);
        load_down.addEventListener (MouseEvent.CLICK,onClickDOWN);
    
        //trace(MyXmlData["photo"].length());
    
    
    }//for文終了
    
    // startTimerを実行する
    startTimer ();
    
}//loadImage ()終了

private function upButton(load:Loader):Sprite {  
            var mySprite1:Sprite = new Sprite();  
            mySprite1.addChild(load);  
            return mySprite1;  
}

private function downButton(load:Loader):Sprite {  
            var mySprite2:Sprite = new Sprite();  
            mySprite2.addChild(load);  
            return mySprite2;  
}


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

        // 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].y > 150*MyXmlData["photo"].length()-290){
                moveBox_array[I].y = -130;
            }
            pointY[I] = moveBox_array[I].y + 140;
            function move():void {
                TweenLite.to(moveBox_array[I], 1, {x:140, y:pointY[I], ease:Back.easeOut});
            }

            move();
            
        //trace(moveBox_array[I].y);
        //pointY[I] = -270;
        //trace(pointY[I]);
        //trace(moveBox_array[I]);

        }//for文終了
        
}


//アップボタン
    private function onClickUP (e:MouseEvent):void {
        
        //ボタンを押してる間動きをストップ
        imageTimer.stop ();

        //ボタン無効化
        load_up.mouseEnabled = false;
        load_down.mouseEnabled = false;
        imageTimerUP = new Timer(1100,0);
        // タイマーをスタートさせる
        imageTimerUP.start ();
        // タイマーが実行されるたびにonTimerCalledUpが呼び出される
        imageTimerUP.addEventListener (TimerEvent.TIMER,onTimerCalledUp);
    
        for (I=0; I<moveBox_array.length; I++) {
                if(moveBox_array[I].y < 10){
                    moveBox_array[I].y = 150*MyXmlData["photo"].length()-190;
                }
                pointY2[I] = moveBox_array[I].y + 140;
                function move():void {
                    TweenLite.to(moveBox_array[I], 1, {x:140, y:pointY2[I] -280, ease:Back.easeOut});
                }

                move();
        
        }//for文終了

        //動きをスタート
        imageTimer.start ();
    
    }
    
    //ダウンボタン
    private function onClickDOWN (e:MouseEvent):void {
        
        //ボタンを押してる間動きをストップ
        imageTimer.stop ();
        
        //ボタン無効化
        load_down.mouseEnabled = false;
        load_up.mouseEnabled = false;
        imageTimerDOWN = new Timer(1100,0);
        // タイマーをスタートさせる
        imageTimerDOWN.start ();
        // タイマーが実行されるたびにonTimerCalledDounが呼び出される
        imageTimerDOWN.addEventListener (TimerEvent.TIMER,onTimerCalledDoun);
    
        for (I=0; I<moveBox_array.length; I++) {
                function move():void {
                    TweenLite.to(moveBox_array[I], 1, {x:140, y:moveBox_array[I].y+140, ease:Back.easeOut});
                }
                if(moveBox_array[I].y > 150*MyXmlData["photo"].length()-300){
                moveBox_array[I].y = -130;
                }

                move();
                
                trace(moveBox_array[I].y);
        
        }//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);
}
    










/*--------------------------------
リンクの関数
--------------------------------*/
// リンクを設定する
public function setLink () {
    var link:URLRequest = new URLRequest(MyXmlData["url"][imageNum]);
    //var target:String = "_self";
    navigateToURL (link);
}

// クリックされたら実行される
public function onClick (e:MouseEvent):void {
    setLink ();
}







        

        
        
        
        
        
        
        

    }
    
}

Forked