import flash.display.Shape;
import flash.display.MovieClip;
import flash.events.MouseEvent;
//Tweenクラスのインポート
import fl.transitions.Tween;
import fl.transitions.easing.*;
//グローフィルターの設定(写真の枠取り)
import flash.filters.GlowFilter;
var glow1:GlowFilter=new GlowFilter(0xffffff,0.8,3,3,8,3,true);
var glow2:GlowFilter=new GlowFilter(0xff0000,0.8,3,3,8,3,true);
var glow3:GlowFilter=new GlowFilter(0xffffff,0.8,16,16,8,1,true);
var col:Number=5;//サムネイル配置列数
var row:Number=5;//行数
var pNum:Number=col*row;
var t_w:Number=100;//サムネイルの幅
var t_h:Number=100;//高さ
var p_w:Number=400;//拡大写真の幅
var p_h:Number=400;//高さ
var pNo:Number;//写真番号
var resetMode:Number;//0:サムネイル表示時、1:拡大写真表示時
var screen:MovieClip;//拡大写真表示用MC
var int_a:Array = new Array();//重複しない乱整数発生用配列
var int_b:Array = new Array();//
var blackScreen:Shape;//半透明黒色スクリーン
var forward_btn:MovieClip;//送りボタン
var backward_btn:MovieClip;//戻りボタン
//サムネイル収容MC
var thumbContainer:MovieClip = new MovieClip();
addChild(thumbContainer);
//リセットボタンの配置と動作
var reset_btn = new r_btn();
reset_btn.x=stage.stageWidth-100;
reset_btn.y=stage.stageHeight-30;
addChild(reset_btn);
resetMode=0;
reset_btn.buttonMode=true;
function resetting(event:MouseEvent):void {
forward_btn.visible=backward_btn.visible=false;
if (resetMode==0) {
for (var i=1; i<=pNum; i++) {
var mc=MovieClip(thumbContainer.getChildByName("p"+i));
thumbContainer.removeChild(mc);
}
init();
} else {
blackScreen.graphics.clear();
button_enable();
resetMode=0;
removeChild(screen);
}
}
reset_btn.addEventListener(MouseEvent.CLICK, resetting);
//再生開始;
init();
//サムネイルのランダム配置、座標・角度のランダム設定
function init():void {
generateRandomInt();
var pos:Array=int_b;
generateRandomInt();
var depth:Array=int_b;
for (var i:uint=1; i<=pNum; i++) {
var k:Number=parseInt(pos[i-1])+1;
var d:Number=parseInt(depth[i-1])+1;
var mc:MovieClip = new MovieClip();
thumbContainer.addChild(mc);
mc.name="p"+i;
var jpg:String="img/sp"+i+".jpg";
loadPic(mc,jpg);
mc.x = 0.6*t_w*Math.random()+(k-1)%col*(100);
mc.y = 0.6*t_h*Math.random()+Math.floor((k-1)/col)*(100);
mc.rotation=-45+90*Math.random();
mc.filters=[glow1];
mc.n=i;
mc.buttonMode=true;
mc.enabled=false;
mc.addEventListener(MouseEvent.ROLL_OVER, rover);
mc.addEventListener(MouseEvent.ROLL_OUT, rout);
mc.addEventListener(MouseEvent.CLICK, rlease);
}
}
var p_mc:MovieClip;
var p_mcIndex:Number;
//サムネイルのロールオーバー
function rover(event:MouseEvent):void {
p_mc=event.target as MovieClip;
p_mcIndex=thumbContainer.getChildIndex(p_mc);
thumbContainer.setChildIndex(p_mc, thumbContainer.numChildren-1);
p_mc.filters=[glow2];
var tw1:Tween=new Tween(p_mc,"scaleX",Regular.easeOut,1,1.2,0.5,true);
var tw2:Tween=new Tween(p_mc,"scaleY",Regular.easeOut,1,1.2,0.5,true);
}
//サムネイルのロールアウト
function rout(event:MouseEvent):void {
thumbContainer.setChildIndex(p_mc,p_mcIndex);
p_mc.filters=[glow1];
var tw3:Tween=new Tween(p_mc,"scaleX",Regular.easeOut,1.2,1,0.5,true);
var tw4:Tween=new Tween(p_mc,"scaleY",Regular.easeOut,1.2,1,0.5,true);
}
//サムネイルのリリース
function rlease(event:MouseEvent) {
p_mc.filters=[glow1];
blackScreenDraw();
pNo=p_mc.n;
var jpg:String="img/p"+pNo+".jpg";
loadPic2(jpg);
button_notenable();
resetMode=1;
forward_btn.visible=backward_btn.visible=true;
}
//送りボタンと戻りボタンの配置と動作
forward_btn = new f_btn();
forward_btn.x=stage.stageWidth/2+p_w/2+10;
forward_btn.y=stage.stageHeight/2-25;
addChild(forward_btn);
forward_btn.buttonMode=true;
backward_btn = new b_btn();
backward_btn.x=stage.stageWidth/2-p_w/2-50;
backward_btn.y=stage.stageHeight/2-25;
addChild(backward_btn);
backward_btn.buttonMode=true;
forward_btn.visible=backward_btn.visible=false;
function nextPic(event:MouseEvent) {
if (pNo++>pNum-1) {
pNo=1;
}
removeChild(screen);
var jpg="img/p"+pNo+".jpg";
loadPic2(jpg);
}
forward_btn.addEventListener(MouseEvent.CLICK, nextPic);
function prevPic(event:MouseEvent) {
if (pNo--<2) {
pNo=pNum;
}
removeChild(screen);
var jpg="img/p"+pNo+".jpg";
loadPic2(jpg);
}
backward_btn.addEventListener(MouseEvent.CLICK, prevPic);
//サムネイルのボタンモードのオン、オフ;
function button_enable() {
for (var i:uint=1; i<=pNum; i++) {
var mc=MovieClip(thumbContainer.getChildByName("p"+i));
mc.addEventListener(MouseEvent.ROLL_OVER, rover);
mc.addEventListener(MouseEvent.ROLL_OUT, rout);
mc.addEventListener(MouseEvent.CLICK, rlease);
mc.buttonMode=true;
}
}
function button_notenable() {
for (var i:uint=1; i<=pNum; i++) {
var mc=MovieClip(thumbContainer.getChildByName("p"+i));
mc.removeEventListener(MouseEvent.ROLL_OVER, rover);
mc.removeEventListener(MouseEvent.ROLL_OUT, rout);
mc.removeEventListener(MouseEvent.CLICK, rlease);
mc.buttonMode=false;
}
}
//サムネイル写真の読み込み、表示
function loadPic(load_mc, url):void {
var mcLoader=new Loader();
load_mc.addChild(mcLoader);
var urlReq:URLRequest=new URLRequest(url);
mcLoader.load(urlReq);
}
//拡大写真の読み込み、表示、拡大;
function loadPic2(url):void {
screen = new MovieClip();
addChild(screen);
screen.buttonMode = true;
screen.x=stage.stageWidth/2-p_w/2;
screen.y=stage.stageHeight/2-p_h/2;
screen.filters=[glow3];
var tw:Tween=new Tween(screen,"alpha",Regular.easeOut,0,1,1,true);
var mcLoader=new Loader();
screen.addChild(mcLoader);
var urlReq:URLRequest=new URLRequest(url);
mcLoader.load(urlReq);
mcLoader.contentLoaderInfo.addEventListener( Event.COMPLETE , loadedPic);
function loadedPic(event:Event) {
screen.addEventListener(MouseEvent.CLICK, removePic);
function removePic(event:MouseEvent) {
blackScreen.graphics.clear();
button_enable();
removeChild(screen);
resetMode=0;
forward_btn.visible=backward_btn.visible=false;
}
}
}
//指定範囲内の重複しない乱整数発生関数
function generateRandomInt():Array {
for (var i:uint=0; i<pNum; i++) {
int_a[i]=i;
}
var j:uint=0;
var a_length:Number=int_a.length;
while (a_length) {
var int_r:Number = Math.floor(Math.random()*(pNum-j));
int_b[j]=int_a.splice(int_r,1);
j++;
a_length=int_a.length;
}
return int_b;
}
//ステージを覆う矩形の描画(半透明ブラックスクリーン)
function blackScreenDraw() {
blackScreen = new Shape();
var gr=blackScreen.graphics;
gr.beginFill(0x000000,0.6);
gr.drawRect(0,0,stage.stageWidth,stage.stageHeight);
gr.endFill();
addChild(blackScreen);
setChildIndex(blackScreen,1);
}