スケーリングサンプルソース

ActionScript3でスケーリング処理を行なった際、しっかり嵌まったので備忘録です。

拡大縮小処理を行なう際にはscaleXorYプロパティを設定(=1が等倍)すれば自動で行なわれます。但し少し困ったことがあって、例えば拡大を実行すると画像がどんどん右へ流れて行ってしまって、スクリーンの外へ出て消えてしまいます。

ActionScript3ではscaleXorYプロパティで拡大・縮小を実行する際は、基準点を中心に実行されます。基準点は(0,0)に設定されています。基準点を変更する方法を調べてみましたが見つけることができませんでした。

そこで今回は基準点がスクリーンの中心にあるかのように拡大縮小ができる関数を作成しました。これで拡大縮小の際に画像が流れて消えてしまうことがなくなりました。

    // Map表示の伸縮処理
    public function scalemap(pich:Number):void {
      var sw:int = stage.stageWidth;
      var sh:int = stage.stageHeight;
      var lpt:Point = globalToLocal(new Point(sw/2, sh/2));
      scaleX += pich;
      scaleY = scaleX;
      var gpt:Point = localToGlobal(lpt);
      // センター位置計算
      x += (sw / 2) - gpt.x;
      y += (sh / 2) - gpt.y;
    }