var fNum = [6, 6, 8, 9];
var x0 = y0=10;
var serialNum = 0;
var col = 8;
var row = 6;
arrangement();
function arrangement() {
generateRandomInt(col*row);
for (i=0; i<fNum.length; i++) {
for (j=0; j<fNum[i]; j++) {
serialNum++;
p_mc = this.createEmptyMovieClip("p_mc"+i+j, 10*i+j);
p_mc.createEmptyMovieClip("ps",10*i+j);
var number = 10*(i+1)+j;
jpg_s = "img/"+number+".jpg";
p_mc.ps.loadMovie(jpg_s);
k = parseInt(int_b[serialNum-1])+1;
p_mc._x = x0+75*((k-1)%col);
p_mc._y = y0+55*(Math.floor((k-1)/col));
if (j !== 0) {
p_mc._alpha = 40;
}
p_mc.serNum = i;
p_mc.num = j;
p_mc.onRollOver = a;
p_mc.onRollOut = b;
p_mc.onRelease = c;
}
}
resetting = true;
}
function a() {
ser = this.serNum;
for (o=0; o<fNum.length; o++) {
var mc0 = _root["p_mc"+o+0];
if (o !== ser) {
mc0._alpha = 40;
}
}
for (m=1; m<fNum[ser]; m++) {
_root["p_mc"+ser+m]._alpha = 100;
}
}
function b() {
ser = this.serNum;
for (o=0; o<fNum.length; o++) {
_root["p_mc"+o+0]._alpha = 100;
}
for (m=1; m<fNum[ser]; m++) {
_root["p_mc"+ser+m]._alpha = 40;
}
}
function c() {
ser = this.serNum;
n = this.num;
removeThumb(ser);
for (o=0; o<fNum[ser]; o++) {
var mc = _root["p_mc"+ser+o];
if (o == n && o !== 0) {
mc.targetx = Stage.width/2;
mc.targety = Stage.height/2;
loadPic(ser,n);
} else {
mc.targetx = x0+75*o;
mc.targety = 370;
resetting = false;
}
mc.onEnterFrame = function() {
this._x += (this.targetx-this._x)/5;
this._y += (this.targety-this._y)/5;
};
}
attachMovie("reset","reset_btn",100);
reset_btn._x = 620;
reset_btn._y = 300;
reset_btn.onRelease = reset;
}
function removeThumb(ser) {
for (i=0; i<fNum.length; i++) {
if (i !== ser) {
for (j=0; j<fNum[i]; j++) {
_root["p_mc"+i+j]._visible = false;
}
}
}
}
function reset() {
if (!resetting) {
load_mc.removeMovieClip();
reset_btn.removeMovieClip();
serialNum=0;
arrangement();
}
}
function loadPic(ser, n) {
load_mc = createEmptyMovieClip("load_mc", 110);
var mcLoader:MovieClipLoader = new MovieClipLoader();
jpg = 10*(ser+1)+n;
mcLoader.loadClip("img/pic"+jpg+".jpg",load_mc);
var oListener:Object = new Object();
oListener.onLoadInit = function() {
Lw = load_mc._width;
Lh = load_mc._height;
load_mc._x = Stage.width/2;
load_mc._y = Stage.height/2;
load_mc._xscale = load_mc._yscale=10;
load_mc.onEnterFrame = function() {
this._x += (Stage.width/2-Lw/2-this._x)/3;
this._y += (Stage.height/2-Lh/2-30-this._y)/3;
this._xscale += (100-this._xscale)/3;
this._yscale += (100-this._yscale)/3;
};
resetting = false;
};
mcLoader.addListener(oListener);
}
function generateRandomInt(maxN):Array {
int_a = [];
int_b = [];
for (a_num=0; a_num<maxN; a_num++) {
int_a[a_num] = a_num;
}
b_num = 0;
a_length = int_a.length;
while (a_length) {
int_r = Math.floor(Math.random()*(maxN-b_num));
int_b[b_num] = int_a.splice(int_r, 1);
b_num++;
a_length = int_a.length;
}
return int_b;
}
|
各シリーズの写真の数+1(名札)
サムネイル配置左上座標
サムネイル通し番号の初期化
サムネイル配置列の数
行の数
配置関数(arrangement)の実行
サムネイル配置のためのセットアップ関数
配置枠数(列数×行数)分の乱整数配列を取得
シリーズの数だけ
各シリーズの写真の数だけ
通し番号付け
サムネイルを表示するためのムービークリップ
そのムービークリップ内にさらにムービークリップ
サムネイル写真番号付け
読み込むサムネイル写真のファイル名
ムービークリップに読み込み
受け取った配列のそれぞれを整数の数値に変換
x座標
y座標
もし j が0でなければ(名札じゃなければ)
アルファ値を40に
シリーズ番号の取得
サムネイル写真番号の取得
サムネイルのロールオーバーで関数 a に
ロールアウトで関数 b に
リリースで関数 c に
リセットボタンを非可動に
サムネイルのロールオーバーで
シリーズ番号
各シリーズで
mc0(名札)
ロールオーバーされていないシリーズの
名札のロールオーバーを40に
ロールオーバーされているシリーズの各サムネルのアルファを100に(ハイライト)
サムネイルのロールアウトで
各シリーズの0番目(名札)のアルファを100に
その他のサムネイルすべてのアルファを40に
サムネイルのリリースで
リリースされたサムのシリーズ番号取得
写真番号の取得
サムネイル消去関数(removeThumb)へ
該当シリーズのムービークリップ
リリースされたサムで、0以外だったら
ステージの真ん中座標をtargetに
写真ロード関数(loadPic)の呼び出し
リリースされたサム以外
ステージ下部に整列配置する座標をtargetに
レセットボタン可動に
target座標に向かって移動
リセットボタンインスタンスの表示
ボタンのの配置
ボタンのリリースで、関数resetへ
サムネイル消去関数
リリースされたシリーズ以外のサムネイル
見えなくする
リセット関数
resettingがtrueでなければ
レセットボタンを消して
通し番号を0に
arrange関数へ
写真ロード関数
ロード用ムービークリップインスタンスの作成
MovieClipLoaderインスタンスの定義
写真ファイル番号
写真のロード
リスナーオブジェクトの定義
読み込みが終わった次のFRAMEで
ロードした写真の幅
高さ
配置座標
スケールを1/10に
配置座標に減速して徐々に近づける
スケールを100に徐々に拡大
リセットを可能に
リスナーの付与
重複しない整数乱数の配列発生関数
(「重複しない整数乱数の配列発生」を参照)
|