●716*445のステージ(24fps)を設定(背景色、ステージサイズは好みや写真サイズに応じて決める)
●画面下部にスライド枚数表示用ダイナミックテキストボックス(インスタンスン名:pNo_txt)、拡大写真を閉じるためのボタン(インスタンス名:close_btn)を配置する
●swfと同じディレクトリにimgフォルダを置き、その中に拡大写真(720*405、p1.jpg,p2.jpg,,,)、サムネイル写真(140*80、ps1.jpg,,,,)
それぞれ25枚を収納しておく
|
//Tween、easingクラスのインポート
import mx.transitions.Tween;
import mx.transitions.easing.*;
//スライド枚数
var num = 25;
//サムネイルの幅、高さ
var tw = 140;
var th = 80;
//サムネイル整列列数
var col = 5;
//サムネイル群収納用ムービークリップの作成
this.createEmptyMovieClip("thumbnailContainer",0);
//拡大写真読み込み用ムービークリップ
for (i = 1; i <= num; i++) {
this.createEmptyMovieClip("load_mc" + i,50 + i);
}
var picNo:Number;
loadThumb();
//サムネイル群のロード・表示とイベント
function loadThumb() {
for (i = 1; i < num + 1; i++) {
mc = thumbnailContainer.createEmptyMovieClip("thumb" + i, i);
mc.createEmptyMovieClip("inside_mc",i);
mc.inside_mc._x = -tw / 2;
mc.inside_mc._y = -th / 2;
mc.inside_mc.loadMovie("img/ps" + i + ".jpg");
mc._x = Stage.width / 2;
mc._y = Stage.height / 2;
mc.order = i;
mc.onRelease = function() {
mcEnable(1);
picNo = this.order;
loadPic(picNo,_root["load_mc" + picNo],"thumbClick");
};
setThumb(mc);
}
}
//サムネイル群の配置
function setThumb(mc) {
pOrder = mc.order;
mc._x = (tw + 3) * (0.5 + ((pOrder - 1) % col));
mc._y = 18+(th + 5) * (0.5 + Math.floor((pOrder - 1) / col));
lag = pOrder * 0.05;
mcTween = new Tween(mc, "_alpha", None.easeOut, 0, 0, lag, true);
mcTween.onMotionFinished = function() {
new Tween(mc, "_alpha", None.easeOut, 0, 100, lag / 2, true);
};
}
//拡大写真のロードと表示
function loadPic(pNo, loadMc, from) {
thumbnailContainer._visible = false;
var mcLoader:MovieClipLoader = new MovieClipLoader();
jpg = "img/p" + pNo + ".jpg";
mcLoader.loadClip(jpg,loadMc);
var oListener:Object = new Object();
oListener.onLoadInit = function() {
if (from == "thumbClick") {
var tw1 = new Tween(loadMc, "_alpha", Regular.easeOut, 0, 100, 1, true);
var tw2 = new Tween(loadMc, "_x", Regular.easeOut, 0, 0.5, 1, true);
tw1.onMotionFinished = function() {
close_btn.onRelease = load_mcRels;
Mouse.addListener(mouseListener);
};
}
};
mcLoader.addListener(oListener);
pNo_txt.text = picNo + "/" + num;
}
//拡大写真を非表示・サムネイル群再表示
function load_mcRels() {
load_mcUnload();
thumbnailContainer._visible = true;
var tw3 = new Tween(thumbnailContainer, "_alpha", Regular.easeOut, 0, 100, 1, true);
tw_array.push(tw3);
tw3.onMotionFinished = function() {
mcEnable(0);
Mouse.removeListener(mouseListener);
};
}
//全拡大写真のアンロード
function load_mcUnload() {
for (j = 1; j < num + 1; j++) {
_root["load_mc" + j].unloadMovie();
}
}
//サムネイルのマウスクリックに対する反応を有効or無効にする
function mcEnable(bNum) {
for (i = 1; i < num + 1; i++) {
if (bNum == 0) {
thumbnailContainer["thumb" + i].enabled = true;
} else {
thumbnailContainer["thumb" + i].enabled = false;
}
}
}
//マウスドラッグによる写真切り替え
var mouseListener = new Object();
mouseListener.onMouseDown = function() {
if (_ymouse < 400) {
var mc = _root["load_mc" + picNo];
var nextNo = picNo;
if (nextNo > num - 1) {
nextNo = 1;
} else {
nextNo = picNo + 1;
}
var nextmc = _root["load_mc" + nextNo];
loadPic(nextNo,nextmc,"sidePic");
nextmc._x = Stage.width;
var preNo = picNo;
if (preNo < 2) {
preNo = num;
} else {
preNo = picNo - 1;
}
var premc = _root["load_mc" + preNo];
loadPic(preNo,premc,"sidePic");
premc._x = -Stage.width;
preMousex = _xmouse;
mouseListener.onMouseMove = function() {
close_btn.enabled = false;
var movex = (_xmouse - preMousex);
mc._x = movex;
nextmc._x = Stage.width + movex;
premc._x = -Stage.width + movex;
mouseListener.onMouseUp = function() {
delete this.onMouseMove;
if (movex) {
Mouse.removeListener(mouseListener);
dir = movex / Math.abs(movex);
var nextx = Stage.width + dir * Stage.width;
var prex = -Stage.width + dir * Stage.width;
var tw4 = new Tween(mc, "_x", Regular.easeOut, mc._x, dir * Stage.width, 1, true);
var tw5 = new Tween(nextmc, "_x", Regular.easeOut, nextmc._x, nextx, 1, true);
var tw6 = new Tween(premc, "_x", Regular.easeOut, premc._x, prex, 1, true);
tw6.onMotionFinished = function() {
mc.unloadMovie();
if (dir > 0) {
nextmc.unloadMovie();
} else if (dir < 0) {
premc.unloadMovie();
}
picNo = picNo - dir;
if (picNo > num) {
picNo = 1;
}
if (picNo < 1) {
picNo = num;
}
pNo_txt.text = picNo + "/" + num;
movex = 0;
Mouse.addListener(mouseListener);
close_btn.enabled = true;
};
}
};
};
}
};
|