<ステージ等の準備>
●600*400、背景(任意)、12fpsのステージを設定する
●閲覧用シート(ここでは鈴が峰登山コース案内A4チラシ)をスキャナーなどでjpegファイルとし、これを1500*1000のサイズでFLASHに読み込んだのちシンボルに変換(基準点左上)、リンケージ名を map としてライブラリーに格納する
●「挿入」「新規シンボル」、タイプ「ボタン」で600*400の矩形を基準点を左上にして描き、リンケージ名を mask としてライブラリーに格納
●「挿入」「新規シンボル」、タイプ「ムービークリップ」でシンボル名、リンケージ名 slider を作成、編集画面で、150*8の矩形を(0,0)に描きシンボルに変換する。 さらに、(100,4)の位置に10*14の矩形を描きシンボルに変換、インスタンス名を knob とする
●「挿入」「新規シンボル」で、600*400の塗りのない枠を、好みの色、エフェクトで描き(0,0)、リンケージ名を frame とする |
attachMovie("map","map",1);
attachMovie("mask","mask",2);
attachMovie("slider","slider",3);
attachMovie("frame","frame",4);
map._x = -550;
map._y = -400;
slider._x = 30;
slider._y = 370;
var scaleMax = 150;
var scaleMin = 40;
var kx = slider.knob._x = 75;
map._xscale = map._yscale=scaleMin+kx/slider._width*(scaleMax-scaleMin);
map.setMask(mask);
var mouseListener:Object = new Object();
mouseListener.onMouseDown = function() {
var dx = _xmouse-map._x;
var dy = _ymouse-map._y;
flag = true;
mouseListener.onMouseMove = function() {
if (flag) {
map._x = _xmouse-dx;
map._y = _ymouse-dy;
if (map._x>0) {
map._x = 0;
}
if (map._x<(Stage.width-map._width)) {
map._x = Stage.width-map._width;
}
if (map._y>0) {
map._y = 0;
}
if (map._y<(Stage.height-map._height)) {
map._y = Stage.height-map._height;
}
}
};
mouseListener.onMouseUp = function() {
flag = false;
}
}
Mouse.addListener(mouseListener);
slider.knob.onPress = function() {
this.startDrag(true,0,4,150,4);
knobPress = true;
var mapx = map._x;
var mapy = map._y;
var k0 = slider.knob._x;
flag = false;
onEnterFrame = function () {
kx = slider.knob._x;
if (knobPress && Math.abs(kx-k0)>2) {
var scale = scaleMin+kx/slider._width*(scaleMax-scaleMin);
map._xscale = map._yscale=scale;
map._x = Stage.width/2-(Stage.width/2-mapx)*scale/100;
map._y = Stage.height/2-(Stage.height/2-mapy)*scale/100;
if (map._x>0) {
map._x = 0;
}
if (map._x<(Stage.width-map._width)) {
map._x = Stage.width-map._width;
}
if (map._y>0) {
map._y = 0;
}
if (map._y<(Stage.height-map._height)) {
map._y = Stage.height-map._height;
}
}
};
};
slider.knob.onRelease = function() {
this.stopDrag();
knobPress = false;
};
slider.knob.onReleaseOutside = function() {
this.stopDrag();
knobPress = false;
};
|
mapの初期位置
sliderの配置座標
mapのスケールの最大値と最小値
sliderノブの初期位置
mapの初期値
マスクをかけてステージ内のmapだけが見える
マウスリスナーオブジェクトの作成
マウスが押されたら
マウスが動いたら
mapの座標をdx(dy)だけマウスに近づける
mapのx座標(左端)が正になったら、
x座標方向の動きを止める
mapの右端のx座標がステージの右端より小さくなったら、動きを止める
マウスがアップされたら
flag を false に
マウスリスナーの登録
ノブ(knob)がプレスされたら
ドラッグ可能に
プレスされたことのフラッグを立てる
map座標の取得
ノブ座標の取得
ノブの座標取得
ノブがプレスされていて、かつ、位置が2px以上動いたら
ノブの動き(kx)に応じてscaleを計算
拡大・縮小した分の座標のずれを補正
ノブがリリースされたら
ノブからリリースアウトされたら
|