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