ダブルクリック位置で拡大/縮小
ダブルクリックした位置を中心にして拡大、縮小するアクションの作り方です
解説はつづきから
新規ファイル作成
ステージ設定はサイズを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; } }
これでムービープレビューすると以下のようになってるかと思います
以上、ダブルクリック位置で拡大/縮小でした