createEmptyMovieで作成したMCの基準点を変更する方法
- createEmptyMovieを使用して作成したMCの基準点を変更する方法を教えてください。
- 現在、基準点は左下になっていますが、中心や右上に変更したい場合にはどのようにすればよいですか?
- アクションスクリプト2.0とFlashCSを使用していて、WinXPで動作させています。
- ベストアンサー
createEmptyMovieで作成したMCの基準点
アクションスクリプト2.0、FlashCS、WinXPを使用しています。 createEmptyMovie("test",1); _root.test.loadMovie("test.jpg"); _root.test._xscale = 10; _root.test._yscale = 10; onEnterFrame = function(){ _root.test._xscale += 10; _root.test._yscale += 10; } としたとき、基準点が左下になっているのですが、 これを中心とか、右上とかに変更するためには どのようにしたらいいのでしょうか。。
- hukazuo
- お礼率82% (188/228)
- Flash
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
"createEmptyMovieClip"で、"左上"ですね。 生成したtestの中に更にMCを作って、それにjpgを読み込み、 そのMCの座標を動かせば、どこにでも基準点を持っていけます。 横120px縦100pxの画像ファイルを例にすると、 中心にしたいなら、中のMCの_xを-60、_yを-50にする。 右上にしたいなら、中のMCの_xを-120にする。 といった感じです。 _xscale等は今の通りtestのサイズを変更します。 追加するのは、testの中に新しくMCを作ることと、 そのMCに画像を読み込むこと、そのMCの座標を動かすこと、です。 画像サイズに規則性などがなく、 自動でサイズ等を取り込みたい場合はMovieClipLoaderクラスを使いましょう。 MovieClipLoaderクラスについては、ヘルプに詳しく載っています。
関連するQ&A
- loadMovieしたムービークリップのボタン化
ムービークリップにloadMovieで1.jpgをロードし、それをボタンにしたいのですが、下のスクリプトではうまく動作しません。 menu01_mc.loadMovie("1.jpg"); menu01_mc._xscale=10; menu01_mc._yscale=10; menu01_mc.onRelease = function(){ gotoAndStop(5); } 最初のloadMovieの部分をなくし、 menu01_mc.onRelease = function(){ gotoAndStop(5); } とするとちゃんと動作します。 loadMovieしたムービークリップはボタンにできないのでしょうか? FlashCS3、actionscript2.0で作成しています。 よろしくお願いします。
- ベストアンサー
- Flash
- FlashCS5 ActionScript2.0で3つのボタンを制御し
FlashCS5 ActionScript2.0で3つのボタンを制御しています。 それぞれインスタンス名はbt1,bt2,bt3です。 動きはマウスオーバーで120%大きくなり、ロールアウトで100%へと戻るものです。 しかし、ロールアウトの動作中に他のボタンに触ると、ロールアウトの動作が中断してしまいます。 なぜでしょうか? //////////////////////////////////////// stop(); sx = 3; var i; //----------- for( i = 1; i < 4; i++){ Nov = "bt" + i; _root[Nov].onRollOver = function(){ Name = this._name; btOverMotion(Name); } _root[Nov].onRollOut = function(){ Name = this._name; btOutMotion(Name); } } //----------- function btOutMotion(eachNo){ No = eachNo; onEnterFrame = function(){ if(_root[No]._xscale < 100){ delete this.onEnterFrame; }else{ _root[No]._xscale -= sx*2; _root[No]._yscale -= sx*2; } } } //----------- function btOverMotion(eachNo){ No = eachNo; onEnterFrame = function(){ if(_root[No]._xscale > 120){ delete this.onEnterFrame; }else{ _root[No]._xscale += sx; _root[No]._yscale += sx; } } }
- ベストアンサー
- Flash
- 基準点について
お世話になります。 現在、全面フラッシュのWebサイトを制作しており、下記サイトのような動作をイメージしています。(バックイメージの動作) http://www.axisinc.co.jp/ 仕様は下記としています。 バックイメージの画像:横幅1000px 高さ800px 読み込むバックイメージの位置は、(0,0)です。 この状況で、基準点を左下の(0,-800)にしたいと考えています。イメージサイトでは、左下になっているため、可能なのだとおもうのですが、方法が全くわかりません。 ちなみにアクションスクリプトは下記を設定しています。 ------------------------------------------------------------------- /*初期設定*/ Stage.scaleMode = "noScale"; Stage.align = "TL"; resizeListener = new Object(); resizeListener.onResize = function() { fixMenu(); }; /*各MCの読込*/ Stage.addListener(resizeListener); this.attachMovie("backImage", "backImage", 1); /*ステージサイズの設定*/ var backWidth = 1000; var backHeight = 800; /*fixMenu関数実行*/ function fixMenu() { if (Stage.width/backWidth > Stage.height/backHeight) { scale = Stage.width/backWidth; } else { scale = Stage.height/backHeight; } /*背景の設定*/ _root.backImage._xscale = _root.backImage._yscale = 100*scale; } fixMenu(); ------------------------------------------------------------------- どなたか、基準点を左下にする方法をお教えください。 どうぞ宜しくお願いいたします。
- ベストアンサー
- Flash
- ボタン
以下のようなスクリプトで、写真のメニューを作っています。 画像の読み込みまでは、うまくできたのですが、ボタンにする ところでつまづいています。 以下のスクリプトでは、どのボタンをクリックしても、変数mに10が代入されているため、10.jpgがphoto_mcに表示されてしまいます。どのようにすれば、 menu1_mcをクリックすれば、1.jpg、 menu2_mcをクリックすれば、2.jpg、 menu3_mcをクリックすれば、3.jpg・・・ のようになるのでしょうか?説明が下手で申し訳ありません m(_ _)m i = 10; /*trace(i);*/ for (y=0; y<10; y++) { m = y+1; obj = this.attachMovie("menu", "menu"+m+"_mc", y); obj._x = 30; obj._y = 70*y+10; /*画像読み込み*/ name = "menu"+m+"_mc"; this[name].photo_mc.loadMovie("photo/"+m+".jpg this[name].photo_mc._xscale = 15;//% this[name].photo_mc._yscale = 15;//% /*ボタン化*/ this[name].onRelease = function() { _root.photo_mc.loadMovie("photo/"+m+".jpg"); }; } 環境はFlashCS3、ActionScript2.0です。 よろしくお願いします。
- 締切済み
- 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
- ムービークリップの拡大縮小
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
- 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
- 画像を中央にズームさせるには
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
- MCクリックで任意の場所を中心に拡大したい
ステージの中心にMCを配置し、MCをクリックすると、クリックした座標を中心に徐々に拡大させたいのですが、うまくいきません。 拡大をしない場合は、 MC._x -= MC._xmouse; MC._y -= MC._ymouse; でクリックした箇所が中心になるのですが、 拡大していくとうまく計算できず大きくずれてしまいます。 onEnterFrameでMC._xscale、MC._yscaleが100から20ずつ増加し 最終的に200になるようにしているのですが、 この場合クリックした箇所を中心に拡大するにはどのように計算すれば良いでしょうか?
- ベストアンサー
- Flash
- Flash ActionScript(アクションスクリプト)の挙動
Flash ActionScript(アクションスクリプト)の挙動が 思うようにならず困っています。 ●使用ツール Macromedia Flash MX ●やりたいこと ムービークリップ【mc_4_0】【mc_4_1】【mc_4_2】が配置されている。 各ムービークリップにマウスが乗っているかを毎フレーム判定し、 乗っていればx/yscaleを1.5倍に、乗っていなければ1倍に戻す。 ●現在の処理 ○メインタイムラインの処理 ---------------------------- //最初のシーンを設定 _global.scene = SceneMcSelect //毎フレーム、シーン関数を呼ぶ onEnterFrame = function() { //現在シーンを呼ぶ eval( _global.scene )(); } ---------------------------- ○SceneMcSelect関数の定義 ---------------------------- function SceneMcSelect(){ for( count = 0 ; count < 3 ; count++ ){ //マウスが乗ったか? eval("mc_4_" + count).onRollOver = function(){ trace(count); eval("mc_4_" + count)._xscale = 150; eval("mc_4_" + count)._yscale = 150; } //マウスが離れたか? eval("mc_4_" + count).onRollOut = function(){ trace(count); eval("mc_4_" + count)._xscale = 100; eval("mc_4_" + count)._yscale = 100; } } } ---------------------------- ●現在の挙動 onRollOverやonRollOutの判定は正しく行われているようですが、 x/yscaleの変更処理が行われません。 traceでcountの値を確認すると、なぜか【3】になっています。 難しい処理をしているわけではないと思うのですが、 思うとおりの挙動にならず困っています。 何か間違いや見落とし等ございましたら、ご指摘お願いいたします。
- ベストアンサー
- Flash
お礼
左上でした^^ MCの中にさらにMCを作成するのですね。。 MovieClipLoaderクラスに関しても調べてみます。 ありがとうございました。