拡大を制限するアクションスクリプト

このQ&Aのポイント
  • ボタンに設定されたアクションスクリプトを使用して、指定のオブジェクトを拡大・縮小する方法について質問があります。
  • 現在のスクリプトでは、無制限に拡大・縮小ができてしまうため、拡大・縮小の回数を制限する方法や、元の状態に戻す方法について教えてください。
  • また、現在のスクリプトではボタンをクリックすると最初のフレームに戻ってしまいますが、元の状態に戻る方法を教えてください。
回答を見る
  • ベストアンサー

拡大を制限するアクションスクリプト

いつもお世話になっています。 on(release){ _root.screen._xscale-=20; _root.screen._yscale-=20; } と、ボタンに入れて『screen』の部分を拡大、縮小するようにしました。 が、このままだと、どこまでも拡大・縮小できてしまうので、拡大・縮小の回数を制限するような方法や、一度拡大・縮小したものを元の状態に戻す方法はありますか? on(release){ this.play(); } この形だと、1フレーム目に戻ってしまいます。 1フレーム目に戻らない形で、元の状態に戻せるといいのですが・・・

  • Flash
  • 回答数1
  • ありがとう数1

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

縮小を 50% で固定するスクリプト on (release) { _root.screen._xscale -= 20; _root.screen._yscale -= 20; // もし scale が 50 以下になれば if (_root.screen._xscale<=50) { // scale を 50 で固定 _root.screen._xscale = 50; _root.screen._yscale = 50; } } 拡大縮小を元に戻すスクリプト on (release) { _root.screen._xscale = 100; _root.screen._yscale = 100; } 論理的に普通に考えれば良いだけです。 play stop gotoAndPlay gotoAndStop などはフレーム移動のスクリプトで, フレームによってモーショントゥイーンなどで拡大縮小させる場合に限って有効かもしれませんが, それ以外は通常サイズとフレームは全く関係ありません。 関係のないことを複雑に考えるとダメです。

maz1105
質問者

お礼

ありがとうございます!おかげさまで無事できました! 複雑に考えすぎていました また何かありましたらよろしくお願いします!

関連するQ&A

  • loadMovie の拡大縮小

    初めまして、ActionScript についてご質問があります。 loadMovie で外部ファイルのswfを、ムービークリップ「screen」で表示させています。 ボタンで以下のActionScriptを使って、 「screen」を拡大縮小しようと思っております。 on(release){ screen._xscale *=1.2; //幅を1.2倍に拡大 screen._yscale *=1.2; //高さを1.2倍に拡大 } on(release){ screen._xscale /=1.2; //幅を1/1.2倍に縮小 screen._yscale /=1.2; //高さを1/1.2倍に縮小  } これだと無限に拡大縮小ができてしまいます。 上限下限を設定することは可能でしょうか? よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • ムービークリップの拡大縮小

    MCをクリックしたら拡大・縮小をさせたく、過去の投稿を参考にしながら、以下のscriptを作りました。 onClipEvent(load){ v_orgScale = this._xscale; v_orgX = this._x; v_orgY = this._y; zoomState = false; } on(release, releaseOutside){ zoomState = !zoomState;  this.onEnterFrame = function(){   if( zoomState ){    if(this._xscale >= v_orgScale*2.3){     delete this.onEnterFrame;    }else{     this._xscale *= 1.1;     this._yscale *= 1.1;    }   }else if( !zoomState){    if(this._xscale <= v_orgScale){     this._xscale = v_orgScale;     this._yscale = v_orgScale;     delete this.onEnterFrame;    }else{     this._xscale *= 0.9;     this._yscale *= 0.9;    }   }  }; } ただ、これだとMCの基準点(0,0)に対しての拡大縮小なのでクリックしたポイントが拡大するにつれてどんどんずれていきますよね? これをクリックしたポイントがずれないように拡大縮小する事は可能でしょうか? 宜しくお願いいたします。

    • ベストアンサー
    • Flash
  • 縮小させる時の基点について

    ActionScriptを勉強中です。分からないことがあるので質問させていただきます。 ステージ上にマスクをかけたムービークリップ(インスタンス名:mc)があり、 そのmcを拡大ボタンと縮小ボタンを使い拡大/縮小できるようにしています。 mcが拡大されている時には、mc自体をドラッグして動かせるようにしています。 レイヤー構造は ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 1、ボタン:拡大ボタンと縮小ボタンを配置 2、マスク ---マスクの対象:mcを配置 3、背景:背景というか枠を書いています ーーーーーーーーーーーーーーーーーーーーーーーーーーーー となっております。 mcにには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (press) { left = Stage.width-this._width/2-2; top = Stage.height-this._height/2-98; right = this._width/2+2; bottom = this._height/2+2; this.startDrag(false, left, top, right, bottom); } on (release, releaseOutside) { this.stopDrag(); } ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 拡大ボタンには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (release) { if (mc._yscale < 300) { mc._xscale = mc._yscale += 100; } else { mc._xscale = mc._yscale = 300; } }ーーーーーーーーーーーーーーーーーーーーーーーーーーーー 縮小ボタンには ーーーーーーーーーーーーーーーーーーーーーーーーーーーー on (release) { if (mc._yscale > 100) { mc._xscale = mc._yscale -= 100; } else { mc._xscale = mc._yscale = 100; } } ーーーーーーーーーーーーーーーーーーーーーーーーーーーー と書いています。 拡大した時の挙動は問題ないのですが、縮小する時の挙動に問題があります。 mcの中心を基点にしているため、端の方でで縮小すると余白が見えてしまいます。 この余白を見せないためにはどうしたら良いのでしょうか? 素人考えでhitTest()を使えば良いのかと思っているのですが、なかなかうまくいきません。 どうしたらよいのかご教示いただけると助かります。よろしくお願いいたします。 制作環境はCS4でAS2.0です。

  • 外部SWFの中のムービークリップを拡大したい

    こんばんわ! ちょっとわからないことがあるので質問があります。 よろしくお願いします。 メインの空ムービー(インスタンス名"loadpoint")に外部SWF"hallo.swf"を読み込むとします。 メインに取り付けた拡大、縮小ボタンで 外部SWF"hallo.swf"の中のムービクリップ(インスタンス名"touten_mc")を拡大させるにはどのようにしたらよろしいでしょうか? ※ 拡大ボタンにいれたスクリプト 単純に on(release) _root.loadpoint.touten_mc._xscale = 110; _root.loadpoint.touten_mc._yscale = 110; } 結果できませんでした よろしくおねがいします。

    • ベストアンサー
    • Flash
  • 揺れるスクリプトについて

    こちらで教えていただいたサイトで揺れるスクリプト を勉強していたのですが、 ■をMCにして、  onClipEvent (load) {    this._xscale = this._yscale = 0;    function sMove(mScale,acc,conv) {      theScale = theScale*acc+(mScale-this._yscale)*conv;      this._xscale = this._yscale += theScale;    }  }  onClipEvent (enterFrame) {    if (this.hitTest(_root._xmouse,_root._ymouse,1)) {      sMove(130,0.8,0.2);    } else {      sMove(100,0.8,0.2);    }  } と書いたのですがプレビューすると真っ白なままなにも 表示されません。 なぜなのでしょうか?

    • ベストアンサー
    • Flash
  • scriptを使いまわしたい。

    見よう見まねで下記のようなスクリプトを記述しています。 複数のムービークリップに設定していますが、編集するのにかなり手間がかかります。うまく使いまわす方法はございませんでしょうか…。 また、記述の仕方にも問題等ありましたらご指南ください。。 onClipEvent (load) {  sx_move = Math.floor(Math.random() * -10) - 3;  sy_move = Math.floor(Math.random() * 6) - 3;  s_scale = Math.floor(Math.random() * 40) + 40;  _xscale = (s_scale);  _yscale = (s_scale);  n = 1; } onClipEvent (enterFrame) {  _x += (sx_move);  _y += (sy_move); } on (rollOver) {  mx.behaviors.DepthControl.bringToFront(_root);  this.onEnterFrame = function () {   n += 1;   _x -= (sx_move);   _y -= (sy_move);   if (n < 20) {    _x = (_x + 25) / 1.5;    _y = (_y + 12) / 1.5;    _xscale = (_xscale + 50) / 1.5;    _yscale = (_yscale + 50) / 1.5;   } else if (n < 40) {    stop();   } else if (n < 50) {    _x += 13;    _y += 13;    _alpha -= 20;    _xscale = (_xscale) / 1.2;    _yscale = (_yscale) / 1.2;   } else {    stop();   }  }; }

    • ベストアンサー
    • Flash
  • マウスオーバー(クリック)画像がでズーム

    下記のサイトのように画像にマウスが乗ったら、ズームするようにしたいのですが、どのようなスクリプトを書いているのでしょうか? http://www.bobscube.com/ もしくは下記のサイトのようにクリックすると画像がズームするサイト。スクリプト的には同じ(マウスクリックとマウスオーバーの違い)じゃないかと思うのですが・・・。 http://www.opfa.org/ 単純に画像がズームするだけなら、こちらのサイトに載っていた↓で出来るのですが、上記サイトのように滑らかにズームする方法が分かりません。 onClipEvent (load) { this._yscale = 100; this._xscale = 100; } on (rollOver) { this._yscale = 200; this._xscale = 200; } on (rollOut) { this._yscale = 100; this._xscale = 100; } ご教授宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 画像を中央にズームさせるには

    Flash超初心者です。 小さな画像が2、3個横に並んでいて、一つをクリックすると中央にズームし、他の画像をクリックすると先にズームされていた画像がもとの小さな画像に戻るようにしたいです。 http://www.suntory.co.jp/sho-chu/srk/urabanashi.html 過去ログに参考になるものがあり http://oshiete1.goo.ne.jp/kotaeru.php3?q=1444680 少し変更して下記のようにしました。 onClipEvent (load) { yScl = this._yscale; xScl = this._xscale; yPos = this._y; xPos = this._x; } on (rollOver) { this.onEnterFrame = function() { this._yscale *= 1.1; this._xscale *= 1.1; if (this._yscale>=yScl*2.5) { this._yscale = yScl*2.5; this._xscale = xScl*2.5; this.swapDepths(++_root.Depth); } }; } on (rollOut, dragOut) { this.onEnterFrame = function() { this._yscale *= 0.9; this._xscale *= 0.9; this._y += (yPos-this._y)*0.3; this._x += (xPos-this._x)*0.3; if (this._yscale<=yScl) { this._yscale = yScl; this._xscale = xScl; this._y = yPos; this._x = xPos; this.onEnterFrame = null; } }; } でも、これは画像のある同じ場所でズームするので画面の中央でズームさせたいです。 座標を指定すればいいという理屈はわかるのですが、どの部分にどういASを入れたらいいのがわかりません。 また、上記のASでは、ズームしたあとマウスがオブジェクトからはずれると画像がもとの大きさにもどってしまいます。 on (rollOut, dragOut)と入れているからでしょうが、では何を入れたらいいの悩んでしまいましてご相談させていただきました。 どなたかご教授ください。よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • FLASH アクションスクリプト

    画面のサイズを拡大縮小しても 常にセンターに表示させる アクションスクリプトで質問がございます。 back_mcが【背景】 main_mcが【オブジェクト】 _root.main_mc._x = ( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = ( Stage.height - _root.main_mc._height) /2; このアクションスクリプトで【オブジェクト】が最初から常にセンター表示になる事は分かるのですが、例えば座標x600 y500で始まるようにするのはどうしたら良いのでしょうか。 下記のアクションスクリプトでは、【オブジェクト】がx600 y500の位置に最初はあるのですが画面のサイズを拡大縮小してもピクリとも動きません。 Stage.align = "TL"; Stage.scaleMode = "noScale"; Stage.addListener(this); this.onResize = function() { _root.main_mc._x = 600;( Stage.width - _root.main_mc._width ) /2; _root.main_mc._y = 500;( Stage.height - _root.main_mc._height) /2; _root.back_mc._width = Stage.width; _root.back_mc._height = Stage.height; } this.onResize(); いまいち分かりにくい質問ですが伝わりますでしょうか。 分かる方、宜しくお願い致します。

    • ベストアンサー
    • Flash
  • 画像切り替えのアクションスクリプト

    3枚以上の画像を右と左に行くボタンで動かし切り替えて生きたいのですが、ちなみに画像の動き方はだんだん遅くなってとまるというのがベストです。 みようみまねでなんとか次のようにできたのですが、3枚以上はできません。 画像を横に並べて一枚にした画像をシンボルに変換し インスタンス名をpicにして次のスクリプトをそのムービークリップに書き込みました。 this._x = -200; this._y = 0; } onClipEvent (enterFrame) { if (flag==1) { dx = (0-this._x)/4; this._x += dx; } if (flag==0) { dx = (200+this._x)/4; this._x -= dx; } } なお、ボタンを2つ作成し、 on(release) { _root.pic.flag = 1; } と on(release) { _root.pic.flag = 1; }

専門家に質問してみよう