2011-10-25 スライドショー途中
後は画像の指定をすればおっけー
♥0 |
Line 203 |
Modified 2011-10-25 20:28:30 |
MIT License
archived:2017-03-20 19:30:13
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);
}
}
}