flash on 2011-3-8

by akkey.guitar
♥0 | Line 199 | Modified 2011-03-08 00:27:27 | 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/q8Bz
 */

package{
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.events.MouseEvent;
    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 com.greensock.*;
    import com.greensock.easing.*;
    
    public class BunkyoTOP extends MovieClip {



/*--------------------------------
変数、配列の設定
--------------------------------*/
// 画像のイメージを保存する配列
//var photoArr:Array;
// 画像を自動的に変更するタイマー
var imageTimer:Timer;
// ボタン用タイマー
var imageTimerUP:Timer;
var imageTimerDOWN:Timer;
// 現在表示されている画像の番号
var imageNum:Number = 0;
// XMLを読み込むローダー
//var xmlLoader:URLLoader;
// xmlのデータを保存する配列
var MyXmlData:Array;
//画像をまとめて格納
//var imgBox:DisplayObjectContainer;
//ローダーから画像変換用
var child_mc1:MovieClip;
//ローダーから読んだURLを配列に格納
var imageLoaderAry:Array = new Array();

var target = parent;

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

public 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 ();
}

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

// 画像を読み込む
function loadImage () {
    
    //loadImage内変数宣言
    var LoadUrl:String;
    var i:Number;
    var I:Number;
    var imageY:Number = 140;
    var req_array:Array = new Array();
    var imageLoader_array:Array = new Array();
    var moveBox_array:Array = new Array();
    var loadNum_array:Array = new Array();
    var pointY:Array = new Array();
    var pointY2:Array = new Array();
    // 保存した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(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 = 10;
        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を下に動かす
        function move():void {
            TweenLite.to(moveBox_array[I], 1, {x:10, y:I * 140 - 130});
        }
        //下まで来たmoveBoxを上に持っていく
        if(moveBox_array[I].y > 150*MyXmlData["photo"].length()-300){
            moveBox_array[I].y = 10;
        }

        move();

        //上下ボタン
        target.load_up.addEventListener (MouseEvent.CLICK,onClickUP);
        target.load_down.addEventListener (MouseEvent.CLICK,onClickDOWN);
    
        //trace(MyXmlData["photo"].length());
    
    
    }//for文終了


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

        // 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()-300){
                moveBox_array[I].y = -130;
            }
            pointY[I] = moveBox_array[I].y + 140;
            function move():void {
                //偶数・奇数で傾きを変える
                if((I % 2) == 0){
                TweenLite.to(moveBox_array[I], 1, {x:10, y:pointY[I], ease:Back.easeOut, rotation:2});
                }else{
                TweenLite.to(moveBox_array[I], 1, {x:10, y:pointY[I], ease:Back.easeOut, rotation:-2});
                }
            }

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

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

        //ボタン無効化
        target.load_up.mouseEnabled = false;
        target.load_down.mouseEnabled = false;
        imageTimerUP = new Timer(1100,0);
        // タイマーをスタートさせる
        imageTimerUP.start ();
        // タイマーが実行されるたびにonTimerCalledUpが呼び出される
        imageTimerUP.addEventListener (TimerEvent.TIMER,onTimerCalledUp);
            function onTimerCalledUp (e:TimerEvent):void {
                //ボタン有効化
                target.load_up.mouseEnabled = true;
                target.load_down.mouseEnabled = true;
                imageTimerUP.stop ();
                trace(target.load_up);
            }
    
        for (I=0; I<moveBox_array.length; I++) {
                if(moveBox_array[I].y < 10){
                    moveBox_array[I].y = 150*MyXmlData["photo"].length()-170;
                }
                pointY2[I] = moveBox_array[I].y + 140;
                function move():void {
                //偶数・奇数で傾きを変える
                    if((I % 2) == 0){
                    TweenLite.to(moveBox_array[I], 1, {x:10, y:pointY2[I] -280, ease:Back.easeOut, rotation:-2});
                    }else{
                    TweenLite.to(moveBox_array[I], 1, {x:10, y:pointY2[I] -280, ease:Back.easeOut, rotation:2});
                    }
                }

                move();
        
        }//for文終了

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

                move();
                
                trace(moveBox_array[I].y);
        
        }//for文終了
        
        //動きをスタート
        imageTimer.start ();
    
    }
    
    // タイマーをスタートする
    function startTimer () {
    // 5秒間隔で無限に実行する
    imageTimer = new Timer(5000,0);
    // タイマーをスタートさせる
    imageTimer.start ();
    // タイマーが実行されるたびにonTimerCalledが呼び出される
    imageTimer.addEventListener (TimerEvent.TIMER,onTimerCalled);
    }
    
    // startTimerを実行する
    startTimer ();
    
}//loadImage ()終了

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

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


    }
    
}

Forked