ダブルクリック位置で拡大/縮小

zoom_zoom



ダブルクリックした位置を中心にして拡大、縮小するアクションの作り方です
解説はつづきから






新規ファイル作成
ステージ設定はサイズを400×300、背景色を#333333、フレームレートは30に





まず新規シンボル作成からActionScriptに書き出しにチェックを入れて、クラス名をPicに





シンボルに800×600の画像を基準点中央になるように配置




シーン1に戻って、ActionScript記述

var expansion:Boolean = true;    //拡大しているかどうか
var dragging:Boolean = false;    //ドラッグ中かどうか
var loc:Point = new Point();    //picの位置を決める変数
var bScale:Number = 1;    //拡大率

//土台となる空のスプライトをステージ中央に作成、配置
var base:Sprite = new Sprite();
base.x = stage.stageWidth/2;
base.y = stage.stageHeight/2;
addChild(base);

//画像のMCをステージと同じサイズにしてbaseに配置
var pic:Pic = new Pic();
pic.scaleX = pic.scaleY = 0.5;
base.addChild(pic);

//picのダブルクリックを有効に
pic.doubleClickEnabled = true;

//クリックを押しているときのイベント追加
addEventListener(MouseEvent.MOUSE_DOWN,onDown);
function onDown(e:Event):void {
    //ドラッグ開始
    pic.startDrag();
    dragging = true;
}

//クリックを離したときのイベント追加
addEventListener(MouseEvent.MOUSE_UP,onUp);
function onUp(e:Event):void {
    //ドラッグ停止
    pic.stopDrag();
    dragging = false;
    //locの位置をドラッグが終わった時の位置に
    loc.x = e.target.x;
    loc.y = e.target.y;
}

//ダブルクリックしたときのイベント追加
addEventListener(MouseEvent.DOUBLE_CLICK, dCHandler);
function dCHandler(e:MouseEvent):void {
    expansion = !expansion;//拡大しているかどうか切り替え

    //拡大しているとき
    if (expansion) {
        //ダブルクリックした位置がステージ中央にくるように
        //picの位置からステージ中央〜クリック位置までの距離を引く
        //2倍に拡大してるので半分に
        loc.x = pic.x-(mouseX-base.x)/2;
        loc.y = pic.y-(mouseY-base.y)/2;
        bScale = 1;//拡大率1に
    //拡大してないとき
    } else {
        //上と同様
        loc.x = pic.x-(mouseX-base.x);
        loc.y = pic.y-(mouseY-base.y);
        bScale = 2;//拡大率2に
    }
}

//徐々に移動、拡大するためのイベント追加
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void {
    //ドラッグ中ではないとき
    if (!dragging) {
        //picの位置を徐々にlocの位置に
        pic.x += (loc.x-pic.x)/3;
        pic.y += (loc.y-pic.y)/3;
        //baseの拡大率を徐々にbScaleの値に
        base.scaleX += (bScale-base.scaleX)/3;
        base.scaleY += (bScale-base.scaleY)/3;
    }
}


これでムービープレビューすると以下のようになってるかと思います







以上、ダブルクリック位置で拡大/縮小でした