リプタクのもう覚えられません
Google
Web サイト内
topmemo ▶ スライドショーサンプル_ver1.0

ActionScript

スライドショーサンプル_ver1.0

スライドショーのサンプル_ver1.0

指定した外部JPEG画像(同ドメイン内)を一定時間おきにスライド表示させる。
表示させるJPEG画像はXMLファイルで指定。(http://www.sample.com/sample.jpg や sample/sample.img)


サンプルを見る

サンプルをダウンロード(zip)


【ActionScript3.0 サンプルソースコード】

stop();
//------------------------------------------------------------------------変数の宣言
var xml_obj:XML;//xmlオブジェクト
var load_xml:URLLoader = new URLLoader();
var req_xml:URLRequest = new URLRequest("pic.xml");//XMLファイルURL
var pic_n:int;//画像枚数
var pic_i:int;//ターゲット画像ナンバー
var url_jpg:String;//画像URL
var load_jpg:Loader = new Loader();//画像読込み用Loaderクラス
var loading_mc:MovieClip = new loading_MC();//ムービークリップ

//画像用フレーム枠変更用変数
var frMa:int = -1;//フレーム枠上下左右余白長さ(px)
var frH:Number;//枠高さ
var frW:Number;//枠幅
var frHt:Number;//目標枠高さ
var frWt:Number;//目標枠幅
var frSp:Number = 0.4;//変更する割合(max=1)
var drSpan:int = 8;//描画回数
var drSec:int = 50;//描画間隔秒数//(sec/1000)

//画像配置用変数
var al:Number = 0;//透明度
var alt:Number = 1.0;//透明度目標(max=1)
var drSpanJ:int = 10;//描画回数(透明度目標値を割り切れる回数)
var drSecJ:int = 20;//描画間隔秒数

//次の画像読み込み開始まで待機時間
var drSecA:int = 3000;//(sec/1000)
//------------------------------------------------------------------------外部XMLファイルの読込み
load_xml.load(req_xml);//読込み開始
load_xml.addEventListener(Event.COMPLETE,comp_LX);//完了後、解析へ
//------------------------------------------------------------------------外部XMLファイルの解析
function comp_LX(event):void {
	xml_obj = new XML(event.target.data);//XMLオブジェクトの生成
	pic_n = xml_obj.child("pic").length();//画像枚数取得
	//ファイアーフォックス対策として1クッション(0.5秒)入れてみる
	var timeStop:Timer = new Timer(500,1);
	timeStop.addEventListener(TimerEvent.TIMER,timeStopf);
	timeStop.start();//1クッション&フレーム中央へ
}
//------------------------------------------------------------------------1クッション&フレーム中央
function timeStopf(event:TimerEvent):void {
	frame_mc.x = stage.stageWidth/2-frame_mc.width/2;//フレーム枠横中央
	frame_mc.y = stage.stageHeight/2-frame_mc.height/2;//フレーム枠縦中央
	addEventListener(Event.ENTER_FRAME, imgL_f);//画像読み込みへ
}
//------------------------------------------------------------------------画像リセット&読み込み
function imgL_f(e):void {

	//画像消去
	if (load_jpg.root) {
		removeChild(load_jpg);
		load_jpg.unload();
	}
	//ローディングムービー配置
	loading_mc.x = stage.stage.stageWidth/2;
	loading_mc.y = stage.stageHeight/2;//縦中央
	addChildAt(loading_mc,1);

	//画像読込み
	url_jpg =xml_obj.pic[pic_i].file_name;//画像URL設定
	load_jpg.load(new URLRequest(url_jpg));//画像読込み
	load_jpg.contentLoaderInfo.addEventListener(Event.COMPLETE,comp_LJ);//画像読込み完了へ

	//最後までいったら0に戻す
	if (pic_i < pic_n-1) {
		pic_i += 1;
	} else {
		pic_i = 0;
	}
	removeEventListener(Event.ENTER_FRAME, imgL_f);//ENTER_FRAME解除
}
//------------------------------------------------------------------------画像読込み完了
function comp_LJ(e):void {//画像読込みコンプリートイベント
	//目標フレーム枠長さ設定
	frHt = load_jpg.height + frMa * 2;
	frWt = load_jpg.width + frMa * 2;

	//フレーム枠高さ変更用タイマー設定
	var timeH:Timer = new Timer(drSec,drSpan);//X秒間隔X回
	timeH.addEventListener(TimerEvent.TIMER,timeH_f);//関数との関連付け
	timeH.addEventListener(TimerEvent.TIMER_COMPLETE,timeH_c_f);//タイマー完了後の関数関連付け
	timeH.start();//フレーム枠変更へ

	//ローディングムービー消去
	if (loading_mc.root) {
		removeChild(loading_mc);
	}
}
//------------------------------------------------------------------------フレーム枠高さ変更
function timeH_f(event:TimerEvent):void {
	frame_mc.height = frame_mc.height + (frHt - frame_mc.height) * frSp;//フレーム枠高さ
	frame_mc.y = stage.stageHeight/2-frame_mc.height/2;//縦中央
}
function timeH_c_f(event:TimerEvent):void {//タイマーコンプリートイベント
	frame_mc.height = frHt;//フレーム枠高さ
	frame_mc.y = stage.stageHeight/2-frame_mc.height/2;//縦中央
	//フレーム枠横幅変更用タイマー設定
	var timeW:Timer = new Timer(drSec,drSpan);//X秒間隔X回
	timeW.addEventListener(TimerEvent.TIMER,timeW_f);//関数との関連付け
	timeW.addEventListener(TimerEvent.TIMER_COMPLETE,timeW_c_f);//タイマー完了後の関数関連付け
	timeW.start();//フレーム幅変更へ
}
//------------------------------------------------------------------------フレーム枠幅変更
function timeW_f(event:TimerEvent):void {
	frame_mc.width = frame_mc.width + (frWt - frame_mc.width) * frSp;//フレーム枠幅
	frame_mc.x = stage.stageWidth/2-frame_mc.width/2;//横中央
}
function timeW_c_f(event:TimerEvent):void {//タイマーコンプリートイベント
	frame_mc.width = frWt;
	frame_mc.x = stage.stageWidth/2-frame_mc.width/2;//横中央
	//画像配置用タイマー設定
	var timeJ:Timer = new Timer(drSecJ,drSpanJ);//X秒間隔X回
	timeJ.addEventListener(TimerEvent.TIMER,timeJ_f);//関数との関連付け
	timeJ.addEventListener(TimerEvent.TIMER_COMPLETE,timeJ_c_f);//タイマー完了後の関数関連付け
	timeJ.start();//フレーム幅変更へ
}
//------------------------------------------------------------------------画像配置
function timeJ_f(event:TimerEvent):void {
	al += alt/drSpanJ;//透明度
	load_jpg.alpha = al;
	load_jpg.x = stage.stageWidth/2-load_jpg.width/2;//横中央
	load_jpg.y = stage.stageHeight/2-load_jpg.height/2;//縦中央
	addChild(load_jpg);
}
function timeJ_c_f(event:TimerEvent):void {//タイマーコンプリートイベント
	al = alt;//小数点対策
	load_jpg.alpha = al;//小数点対策
	//次の画像読込みまでタイマー設定
	var timeA:Timer = new Timer(drSecA,1);
	timeA.addEventListener(TimerEvent.TIMER,timeAf);
	timeA.start();//次の画像読込みへ
}
//------------------------------------------------------------------------次の画像読込みまでの待機時間
function timeAf(event:TimerEvent):void {
	//画像消去用タイマー設定
	var timeJ2:Timer = new Timer(drSecJ,drSpanJ);//X秒間隔X回
	timeJ2.addEventListener(TimerEvent.TIMER,timeJ2_f);//関数との関連付け
	timeJ2.addEventListener(TimerEvent.TIMER_COMPLETE,timeJ2_c_f);//タイマー完了後の関数関連付け
	timeJ2.start();//画像消去へ
}
//------------------------------------------------------------------------画像消去
function timeJ2_f(event:TimerEvent):void {
	al -= alt/drSpanJ;//透明度
	load_jpg.alpha = al;
}
function timeJ2_c_f(event:TimerEvent):void {//タイマーコンプリートイベント
	al = 0;//透明度リセット
	//画像消去
	if (load_jpg.root) {
		removeChild(load_jpg);
		load_jpg.unload();
	}
	addEventListener(Event.ENTER_FRAME, imgL_f);//画像リセット&読み込みへ
}
last update 2009.3.12
参考・出典等
「特に無し」

▲page top

topmemoblogtestaboutmail
Copylight(C)2008 Riptac. All Rights Reserved.