import flash.display.*;
var sname = ["Flower1", "Flower2", "Flower3", "Flower4", "Flower5", "Flower6", "Flower7", "Flower8", "Flower9", "Flower10"];
var picNum = 10;
var x0 = 5;
var bmp = createPerspectiveMap(500, 333);
var scX = scY=0;
var targetsc = 100;
var targetscY = 0;
var n = 0;
loadJPG(n);
onEnterFrame = function () {
mc = _root["mc"+n];
if (loaded) {
scY += (targetscY-scY)/5;
var displaceFilter = new flash.filters.DisplacementMapFilter(bmp, new Point(), 4, 4, scX, scY, 'color');
mc.filters = [displaceFilter];
mc._alpha += (100-mc._alpha)/10;
mc._xscale += (targetsc - mc._xscale)/5;
if (scY>254) {
targetsc = 100;
targetscY = 0;
mc.removeMovieClip();
loaded = false;
if (n>picNum-1) {
n = 1;
} else {
n++;
}
loadJPG(n);
}
if (scY<0.02) {
targetsc = 50;
targetscY = 255;
textBox._visible = true;
if (n == 10) {
textBox.slideName.text = sname[0];
} else {
textBox.slideName.text = sname[n];
}
}
}
};
function loadJPG(n) {
var mc = this.createEmptyMovieClip("mc"+n, 1);
var loadListener:Object = new Object();
loader = new MovieClipLoader();
loader.loadClip("img/p"+n+".jpg", mc);
loadListener.onLoadInit = function() {
mc._x = mc._y = x0;
var mcBmp = new BitmapData(mc._width, mc._height, true, 0x00FFFFFF);
mcBmp.draw(mc);
mc._alpha = 0;
mc._xscale = 20;
scY = 300;
loaded = true;
textBox._visible = false;
};
loader.addListener(loadListener);
}
function createPerspectiveMap(width, height) {
var bmp:BitmapData = new BitmapData(width, height, false, 0xffffff);
for (var j = 0; j<height; j++) {
for (var i = 0; i<width; i++) {
var col = 127+i/width*(j-height/2)/height*2*127;
bmp.setPixel(i,j,col);
}
}
return bmp;
} |
スライドの題名を配列で定義
総スライド数
スライド右上の表示座標
関数を使ってMapFilterを作成
scaleX,scaleYの初期値
画像(mc)のターゲットscaleの初期値
scaleYの初期値
画像をロード・切り替え関数の呼び出し
毎フレームごとに
画像のロードが完了したら
scaleYをtargetYに
DisplacementFilterの定義
mcにフィルターを適用
アルファーを100に
_xscaleをtargetscに
もしscYが254より大きくなったら
(ほぼ台形が完成したら)
元のサイズの四角形に
表示画像の消去
loadedをfaulseに
最後のスライドになったらnを1に
nに1を足す
loadJPG関数の呼び出し
もし、元の形状・大きさに戻ったら
台形に
テキストボックスを表示
テキストボックスにスライド題目を表示
写真のロード・切り替え関数
空のムービークリップmcの作成
リスナーの作成
MovieClipLoaderの作成
Loaderに写真をロード
ロードが完了し次を開始できるようになったら
写真と同じ大きさのBitmapDataを作り
mcの画像をBitmapDataとして取り込む
mcをやや小さめに表示
loadedをtrueに
表示文字を消す
loaderにリスナーを付加
台形作成用MapFilter作成関数
2つの直行するblueのグラデーションを作成し、BitmapDataを返す関数で、
5 1/2というブログサイトで紹介されているもの
ここでは、グラデーションの向きを90度回している(台形の向きを変えるため)
|