forked from: 縦型スライドショー 2011-3-8
forked from 縦型スライドショー 2011-3-8 (diff: 1)
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/A5RU
*/
// 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;
[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 ();
}
}
}
