なんか文字で書くとよくわからんのですがsample な感じです。トゥイーンと合わせるにはどうしたらいいかなぁ〜?っと考えてたらこうなりました。モーションガイドとかね。
なんか、無駄に長時間かけて作りましたが、よくよく考えて作りなおしたらすぐできたり orz。どうにも、MovieClip の階層が絡んでいる拡大縮小は苦手です。
/** * MovieClip 全体を移動させ、 * 特定の MovieClip を中心に動いているように見えるテスト。 * */class Scroller extends MovieClip{ private var point_mc:MovieClip; private var orgPosition:Object; private var orgDimension:Object; private var holdPointPos:Object; private var rate:Number; /** * コンストラクタ */ function Scroller() { this.initDimension(); this.holdPointPos = null; this.rate = 1; } /** * 位置とサイズを保持する */ private function initDimension():Void { this.orgPosition = {x:this._x, y:this._y}; this.orgDimension = {w:this._width, h:this._height}; } /** * ポイントの位置を固定する * * @param doHold ポイントの位置を固定するときには true */ public function hold( doHold:Boolean):Void { if( doHold == true ) { var p:Object = {x:this.point_mc._x, y:this.point_mc._y}; this.localToGlobal(p); this.holdPointPos = p; } else { this.holdPointPos = null; this.resetPosition(); } } /** * 拡大率を設定する * * @param scale 拡大率(パーセント指定) */ public function setScale( scale:Number):Void { this.rate = scale / 100; this._width = this.orgDimension.w * rate; this._height = this.orgDimension.h * rate; } /** * ムービークリップ全体を移動させる * */ private function moveWholeMovieClip():Void { var p:Object = {x:this.point_mc._x, y:this.point_mc._y}; this.localToGlobal(p); var box:Object = this.getBounds( this ); var boxMinPoint:Object = {x:box.xMin, y:box.yMin}; this.localToGlobal(boxMinPoint); this._x += (this.holdPointPos.x - p.x); this._y += (this.holdPointPos.y - p.y); } /** * 位置を初期位置に戻す */ private function resetPosition():Void { this._x = this.orgPosition.x; this._y = this.orgPosition.y; } /** * onEnterFrame */ private function onEnterFrame():Void { if( this.holdPointPos != null ) { this.moveWholeMovieClip(); } }}