- ベストアンサー
onEnterFrameで位置が止まらない問題について
- フラッシュのサイズが800×600pxで、9つのパネルを並べたイラストを作成し、指定した位置で止まるようにしたいです。
- 右上の番号を押すと想定の位置で止まらずに微妙にズレてしまいます。
- OnEnterFrameとdeleteを使用して座標位置を指定して止める方法がわかりません。どなたか教えていただけませんでしょうか。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
関連するQ&A
- onEnterFrameの止め方につきまして
※間違って違う場所に書き込んでしまったのでこちらに改めて記入します。 b1、b2、b3、b4、b5というインスタンスを作成し、横方向に均等に並べ、それとは別にnextbuttonというボタンを作成し、そこにマウスを乗せるとb1からb5までがx座標値が増える方向に一斉に流れ、nextbuttonからマウスがアウトすると止まるようにしました。 _root.stop(); nextbutton.onRollOver = function(){ _root.onEnterFrame = function(){ _root.b1._x += 10; _root.b2._x += 10; _root.b3._x += 10; _root.b4._x += 10; _root.b5._x += 10; }; }; nextbutton.onRollOut = function(){ _root.onEnterFrame = function(){ stop(); }; }; と記述しました。 しかし、このままではどこまでも右に行ってしまうので、b1のx座標値が徐々に増ていって、x:85に達した時点でonEnterFrameの動作が止まるようにしたいのです。 どなたかわかる方がいらっしゃいましたら、よろしくお願い致します。
- ベストアンサー
- Flash
- Flashでのインスタンスの座標について
こんばんは。 一つflashのインスタンスの座標について質問なのですが、 試しに actionscriptで _root.attachMovie("1","2",1); _root[2]._x = 300; という動作をさせたところ、_root[2]のx座標を300に設定していてもステージのx=300(左上を0,0とした座標)の位置と違う位置に表示されてしまいます。 これは何故このような現象がおきてしまうのでしょうか?ステージのx,yとインスタンスのx,yは基点が違うのでしょうか?ご教授頂ければ幸いです。
- ベストアンサー
- グラフィックソフト
- スライドバーのアクションスクリプト
いつも大変お世話になっております。 伸び縮むサイドバーを作っているのですが、伸ばしたまではいいのですが、元の位置に戻すほうがどうもうまくいきません。 以下、途中まで書いたスクリプトです。 ■.recruit_mcがバーの部分になります。 onClipEvent (load) { _root.recruit_mc._x = 859; _root.recruit_mc._y = 272; } onClipEvent (enterFrame) { rec_to_button.onRelease = function() { _root.recruit_mc.onEnterFrame = function() { if (_root.recruit_mc._x>=620) { _root.recruit_mc._x -= 10; } }; }; } -------------------------------------------------------------- if (_root.recruit_mc._x>=620) { _root.recruit_mc._x -= 10; } の箇所で else を使って、逆の場合をいろいろと書いているのですが どうもうまくいきません。 ボタンを押したら859→620まで移動、またボタンを押したら620→859 まで移動するようにするには、あとどう書き加えればいいですか? ご教授よろしくお願いします。
- ベストアンサー
- Flash
- movie clipのインスタンス名を変数にし文字列+数字を代入し.g
movie clipのインスタンス名を変数にし文字列+数字を代入し.gotoAndStopを行ったが動作しない。 Flash 初心者です。 「なぞ」にはまり込んでしまいました。よろしくお願いします。 作っているのは、 丸いボタンをクリックすると、下にある白い札の色が変わるインタラクションです。 丸いボタンは2個あり、四角の札も2個あります。 クリックするボタンに対応した札が色が変わり、その札以外は白になります。 初め次のようなアクションスクリプトを書いて、うまく動かすことができました。 var onMapButton_num = 0; onEnterFrame = function () { if (onMapButton_num == 0) { spotName1_mc.gotoAndStop("white"); spotName2_mc.gotoAndStop("white"); } else if (onMapButton_num == 1) { spotName1_mc.gotoAndStop("orange"); spotName2_mc.gotoAndStop("white"); } else if (onMapButton_num == 2) { spotName1_mc.gotoAndStop("white"); spotName2_mc.gotoAndStop("orange"); } }; onMapButton1_mc.onRelease = function() { onMapButton_num = 1; }; onMapButton2_mc.onRelease = function() { onMapButton_num = 2; }; ボタンを増やしたいので、記述を短するために次のように変えてみました。 (spotNameという変数を作りました) var onMapButton_num = 0; onEnterFrame = function () { var spotName = "spotName" + onMapButton_num + "_mc"; /* spotName */ if (onMapButton_num == 0) { spotName1_mc.gotoAndStop("white"); spotName2_mc.gotoAndStop("white"); } else if (onMapButton_num == 1) { spotName.gotoAndStop("orange"); /* spotName の使用*/ spotName2_mc.gotoAndStop("white"); } else if (onMapButton_num == 2) { spotName.gotoAndStop("white"); /* spotName の使用*/ spotName2_mc.gotoAndStop("orange"); } }; onMapButton1_mc.onRelease = function() { onMapButton_num = 1; }; onMapButton2_mc.onRelease = function() { onMapButton_num = 2; }; 結果、1つめのボタンをクリックしても、札の色が変わらなくなりました。 変数の使い方に問題があるのでしょうか? よろしくお願いします!
- ベストアンサー
- Flash
- loadMovieとonEnterFrameについて
はじめまして FLASH8を使用しています。 ActionScript初心者です。よろしくお願いします。 単体のswfだと機能するのですが、loadMovie後機能しなくなってしまいます。 読み込ませる側のアクションは ▽ボタンシンボルに on (press) { _root.moveMenu_1 = -138; menu_name.text = "キッズメニュー"; menu_text.text = kidsData; } ▽フレームアクション loadVariables("kidsmenu.txt", this); loadVariables("menmenu.txt", this); loadVariables("ladymenu.txt", this); loadVariables("seniormenu.txt", this); moveMenu_1 = -296; this.onEnterFrame = function() { img_y._x += ((0-moveMenu_1)-img_y._x)*0.1; }; MCのインスタンス名は「img_y」です。 他にボタンが3つほどあります。 swf単体だと機能します。 loadMovie後text・外部テキストは読み込むのですが、スクロールしなくなってしまいます。 これを3_1.swfとしました。 読み込む側のアクションは ▽ボタンシンボルに on (press) { _root.moveMenu = 2100; } 他に4つほどボタンがあります。 ▽フレームアクション scroll_flag = 0; moveMenu = 0; this.onEnterFrame = function() { if (scroll_flag == -1) { if (back_img._x<0) { moveMenu -= 20; } else { moveMenu = 0; } } if (scroll_flag == 1) { if (back_img._width+back_img._x>700) { moveMenu += 20; } else { moveMenu = 2800; } } back_img._x += ((0-moveMenu)-back_img._x)*0.1; }; back_img.c_1.loadTarget.loadMovie("1_1.swf"); back_img.c_2.loadTarget.loadMovie("2.swf"); back_img.c_3.loadTarget.loadMovie("3_1.swf"); back_img.c_4.loadTarget.loadMovie("4.swf"); back_img.c_5.loadTarget.loadMovie("5.swf"); スクロールするMCを「back_img」としました。 他に読み込んだものは機能したんですが 3_1だけうまく機能しません。 長々と失礼しました。
- ベストアンサー
- Flash
- 複数のムービークリップについて
毎度すみません。 複数のムービークリップ(以下MC)をステージに時間差でバラバラの位置に登場させたいのですが、最初で行き詰まってしまいましたのでご質問させてください。 5個のMC(1~5)をステージに配置し、インスタンス名をmc1~mc5で振っています。 スクリプトレイヤーに以下の様に記述しています。 ------------ for(i=1;i<5;i++){ var mc = this["mc"+i]; mc.num = i; } mc.num._visible = false; mc.num._alpha = 0; //MCを時間差で任意の位置に表示 var t=0; this.onEnterFrame = function(){ t++; if(t==25){ mc1._visible = true; mc1.onEnterFrame = function(){ this._y = 50; } } if(t==50){ mc2._visible = true; mc2.onEnterFrame = function(){ this._y = 100; } } if(t==75){ mc3._visible = true; mc3.onEnterFrame = function(){ this._y = 150; } } //以降、mc4、mc5は省略 } --------- --------- mc.num._visible = false; mc.num._alpha = 0; --------- の部分で、デフォルト時はmc1~5を非表示にしているつもりが、 最初から表示されてしまいます。 初心者なので、近いフラッシュを見よう見真似で作成しています。 根本的に記述法を間違えておりましたら、恐れ入りますがご指摘ください。 またもっと効率的な方法がありましたら、ご教授いただければ幸いです。 Flash8.0、ActionScript2.0で制作しています。
- ベストアンサー
- Flash
- onRelease文での動作について・・・。
ムービークリップをボタンにして、その階層の最初のフレームに this.onRollOver = function() { this.onEnterFrame = this.nextFrame; }; onRelease=function(){ var num:Number=0 onEnterFrame=function(){ trace("LOOP num ="+num) num ++ if(num>30){ delete onEnterFrame } } } stop() 最後のフレームに this.onRollOut = function() { this.onEnterFrame = function() { if (this._currentframe > 1) { this.prevFrame(); } }; }; とした場合について質問です。 ボタン上にカーソルがある場合は30までカウントされます。 しかし、クリック直後にカーソルがボタン上から離れるとカウントが停止します。 ボタンから離れてもカウントを続けるにはどうすればよいでしょうか?? ちなみに、このスクリプトは簡単に流れが分かるように作ったものなのでfor文などではなくonEnterFrame~での対処法を教えて下さい。 実際にはonEnterFrame以下はもっと長くなっているので・・・。 どうかお願いしますっ!!! m(_ _)m
- ベストアンサー
- Flash
- 吸着後の事
吸着後についてわからない事があります。 ドラッグ&ドロップでmaru_mcをsikakuというMCに吸着させています。 sikakuというMCに衝突していない時は指定座標に戻るようにしているのですが、二点うまくいかないところがあります。 吸着後、maru_mcをsikakuから離す時、maruがその場を動こうとしない時があり、すんなりドラッグできない。 maru_mcが、衝突していない時でも指定座標にもどらず、sikakuに吸着してしまう時があります。 改善点等たくさんあるとおもいますが、よろしくお願いします。 下記スクリプトです。 maru_mcのスクリプト on (press) { this.startDrag(); this.onEnterFrame = function() { if (this.hitTest(_root.sikaku)) { this._x += (_root.sikaku._x-this._x)/4; this._y += (_root.sikaku._y-this._y)/4; } }; } on (release, releaseOutside) { this.stopDrag(); this.onEnterFrame = function() { if (!this.hitTest(_root.sikaku)) { this._x += (400-this._x)/6; this._y += (300-this._y)/4; } else { this._x += (_root.sikaku._x-this._x)/4; this._y += (_root.sikaku._y-this._y)/4; } }; }
- 締切済み
- Flash
- ActionScriptでの繰り返し記述をすっきりまとめたい
FLASHのActionScriptを勉強中です。 繰り返し同じ様なものを記述する場合、for文か何かを使うと思うのですが、以下の場合はどうすればいいのでしょうか? *プログラムの内容は複数のインスタンスを表示してクリックで順次消えるというものです。インスタンスに記述ではなく、フレームに記述しています。(イベントハンドラメソッド) this.b1.onRelease = function(){ _root.b1._visible = false; }; this.b2.onRelease = function(){ _root.b2._visible = false; }; this.b3.onRelease = function(){ _root.b3._visible = false; }; 以下繰り返し… お詳しい方、よろしくお願いいたします。
- ベストアンサー
- Flash
- ムービークリップがマウスカーソルを追いかけ、マウスカーソルと同じ位置に来たときにムービークリップを変えたい
以下のようにスクリプトを書いたのですが ムービークリップがマウスカーソルと同じ位置に来ても ムービークリップがフレーム2に移動しません。 ドラゴンクエストVIIIのトップページのFlashのような 表現をしたいのですがうまくいきません。 http://www.square-enix.co.jp/dragonquest/eight/ _mc.onEnterFrame = function() { this._x += ( _root._xmouse - this._x ) / 5; if( this._x == _root._xmouse ) this._mc.gotoAndStop(2); else this._mc.gotoAndStop(1); }; どうすればこの問題を解決することができるのでしょうか。 ご存知の方がおられましたらご回答をよろしくお願いします。
- ベストアンサー
- Flash
お礼
有難うございます!!! 教えていただいた方法で完璧にできました。 「行き過ぎたら目標座標で固定する」方法は今後も何かと重宝すると思います。 まだまだ始めたばかりでわからないことだらけで、頭を抱えておりましたが、おかげさまでスッキリしました。 有難うございました。