| |
startDragの座標を指定する方法 初心者です。よろしくお願いします。
mcが拡大縮小されても、拡大(もしくは縮小された)mcがドラックでスムーズに移動できるようにしたいと思います。 ですが、startDrag()の座標をどのように指定したらいいのかわからず、困っています。
まず、拡大・縮小・移動したいmc(仮にa_mcとします)のサイズはW:1500、H:1300です。 基準点は左上で、初期値(最初の座標)はX:-420、Y:-310です。
そして、a_mcに対しマスクがかけてあり、そのマスク内で拡大・縮小・移動ができるようにしてあります。 マスクのサイズはW:750、H:650です。 マスクの基準点は左上、初期値の座標はX:0、Y:0です。
現在のスクリプトは下記のとおりです。
_root.a_mc.onMouseMove = function() { this._root.a_mc.startDrag(false,-300,-150,-550,-350); };
更に、_rootに配置しているプラスとマイナスのmcには、下記のスクリプトを記述しています。
//マスク(スクリーン)の座標 var x0 = 0; var y0 = 0;
//マスク(スクリーン)サイズ var ws = _root.mask._width; var hs = _root.mask._height;
//拡大率 var rate = 5;
//+ボタンをクリックした時 plus.onPress = function() { if (_root.a_mc._xscale<200) { _root.a_mc._xscale += rate; _root.a_mc._yscale += rate; _root.a_mc._x -= (x0+ws/2-_root.a_mc._x)*rate/_root.a_mc._xscale; _root.a_mc._y -= (y0+hs/2-_root.a_mc._y)*rate/_root.a_mc._yscale; } };
//?ボタンをクリックした時 minus.onPress = function() { if (_root.a_mc._xscale>80 && _root.a_mc._x<=x0) { _root.a_mc._xscale -= rate; _root.a_mc._yscale -= rate; _root.a_mc._x += (x0+ws/2-_root.a_mc._x)*rate/_root.a_mc._xscale; _root.a_mc._y += (y0+hs/2-_root.a_mc._y)*rate/_root.a_mc._yscale; } };
ちなみに、 _root.a_mc._x += (x0+ws/2-_root.a_mc._x)*rate/_root.a_mc._xscale; _root.a_mc._y += (y0+hs/2-_root.a_mc._y)*rate/_root.a_mc._yscale; は、現在表示されている「a_mc」を拡大する時に中心をずらさないための計算式なのですが、他の方が作成したネット上にあるスクリプトを真似したもので、なぜこのような計算式になっているのか理解できないまま使用しています。
このスクリプトをムービープレビューで実行し、ドラックで移動しようとすると、ムービーが再生された直後の状態(拡大・縮小しないままの状態)では、この座標の指定で隙間が出てしまうこともなく、また、表示させたい箇所まで移動できないという事もなくスムーズに移動できるのですが、a_mcを拡大縮小すると、移動しすぎて隙間ができてしまったり、また、表示させたいところまで移動できなくなってしまいます。 拡大・縮小するごとに、this._root.a_mc.startDrag(false,-300,-150,-550,-350);の座標の比率を変えるような計算式を組み込まなくてはならないと予想していますが、理解不足でうまくゆきません。
教えを請いたく思います。 どうぞ、よろしくお願い致します。
|