• 締切済み

if文について(初心者です)

初めて書き込みさせて頂きます。 flashに興味を持ち、現在、独学にて学習をしております。 このような初歩の質問で、大変恐縮ですが、 ご教授頂ければ嬉しく思います。 ------------------------------------------------------------- シーン1のステージ上に、 ムービークリップ「photo_mc」(400x1000)を配置し、 マスク(400x350)をかけ、見える範囲を指定しました。 ボタンを2つ作成し、上下にMCが動くようにしました。 MCを上に移動させる為のボタンに、以下のスクリプトを書きました。 on (press) { photo_mc._y -= 70; //ボタンを押す度、photo_mcのy値を70引く trace(text_mc._y);  //yの値を出力、表示 if(photo_mc._y >= -850){ //もしphoto_mcのy値が-850か大きければ photo_text_mc._y -= 0; //photo_mcのy値を変化させない } } プレビューにて確認しますと、移動はしてくれるのですが、 ボタンを押していくと止まらずに、 そのまま上へどんどん移動してしまいます。 y軸の値の指定が、上手くできていないのでしょうか、、。 また、ひとつ考えたものとして、 y軸の値が指定した値になったら、ボタンそのものの機能を停止させる 、というスクリプトはあるのでしょうか、、。 "delete ~"など、使えないものかな、、と考えておりました。 本当に、情けない質問ではありますが、宜しくお願い致します。 長々と、失礼致しました。

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

みんなの回答

回答No.1

photo_text_mc._y -= 0; の行を photo_mc._y = -850; としてみてはどうでしょうか?上のプログラムでは70引いた後、photo_mcのy値が-850より大きければ、0を引くというようになっているように思います。それと、 if(photo_mc._y >= -850) は if(photo_mc._y <= -850) //photo_mcのy値が-850より小さければ の間違い?

maki_11
質問者

補足

futoshi123様 ご回答、本当にありがとうございます! 実は、質問をアップ後確認をした際に、 スクリプトにおかしい部分がありました。 インスタンス名「photo_text_mc」→「photo_mc」でした。 こちらの質問にそのままコピーアンドペーストすれば良かったものを、 手で打ち込んだ際に「_text」を入れてしまったようです、、。 確認不足ばかりで、本当に情けないばかりです。 on (press) { photo_mc._y -= 70; trace(photo_mc._y);   if(photo_mc._y >= -850){  photo_mc._y -= 0;  } } ↑こちらが実際打ち込んだものです。 そして、肝心の動きなのですが、、ご教授頂いたメッセージを 確認しつつ作業してみました。 止まってくれました! やはり、おっしゃる通り、 演算子の向き、また「photo_mc._y -=0;」の値を「=-850;」 に変える事により、思い通りになってくれました。 しつこいと感じられてしまうかもしれませんが、 futoshi123様、本当にありがとうございました!

関連するQ&A

  • eval関数を利用して複数の処理を1つのfunctionで行う

    こんにちは。 困ったので質問させてください。 今、MX2004のFLASHを使ってあるゲームを作成しています。 「XXX」とリンゲージ名をつけたムービークリップを          for(i=0;i<=100;i++){     obj = _root.attachMovie("XXX", "mc"+i, i);//MCの作成     obj._x = table_x[i];//X軸の値の格納テーブル     obj._y = table_y[i];//Y軸の値の格納テーブル     } で100個のムービックリップを画面上に『mc+連番(以下「mc●●」)』と名前をつけてで作成しました。 この画面上に作成したムービークリップmc●●をクリックするとTraceで「OK」と表示したいのですが・・・     mc1.onMouseUp = function(){       Trace("OK");     }     mc2.onMouseUp = function(){       Trace("OK");     }     mc3.onMouseUp = function(){       Trace("OK");     }     ・     ・×97回     ・ この様にmc●●と同じ数だけ100回同じような文を記述する方法しかないのでしょうか? 個人的には 『eval("_root.mc"+i)』を利用して同じような構文は削除したいのですが良い方法が思いつきません。 何か良い方法がありましたらご教授ください。 お願いします。

  • ボタンによるムービークリップ移動

    flashmx2004/actionscript2.0です。 ボタンにrollOverすると、別の場所にあるムービークリップが所定の位置まで移動する、と言う動きをさせたいと思っています。 ムービークリップがMC1としますと、単純にボタンに MC1._x=0; MC1._y=0; と指定したらその位置に移動はしますが、これのように瞬時に移動ではなく、動きがわかる程度のスピードで動くようにしたいのです。 イメージとしましては画像の上にシャッターのように次の画像が来る形にしたいのです。 フレームをあまり使わず、可能であればボタン1個で動作させたいのですが、どうにも手詰まりです。 ご教授戴ければ幸いです。

    • ベストアンサー
    • Flash
  • ボタンのカウント数でムービークリップの位置が変わるギャラリーの作り方

    いつもお世話になっております。 初めて質問させていただきます。 Flashは初心者です。 現在、写真のギャラリーを制作しております。 下記のようにサムネイルを下1列に並べ、上に写真を表示する形です。   ┌─────────┐   │         │ D  │  C    B  │A   │         │   │ ○ ○ ○ ○ ○ │   └─────────┘ ○→ボタン ボタン1を押すと、写真1がAの位置からBの位置へ移動。 ボタン2を押すと、写真1がBの位置からCの位置ヘ移動。 そして、写真2がAの位置からBの位置へ移動。 ボタン3を押すと、写真1はCの位置からDの位置へ移動し、 ステージ上から見えない状態に。 写真2はBの位置からCの位置ヘ移動。 写真3はAの位置からBの位置へ移動。 このようなものを制作しようとしています。 【ややこしい説明で申し訳ございません】 現在、 photo_mcというムービークリップの1フレームごとに、 写真1,2,3を入れて、ボタンのアクションスプリクトに on(press){ //ムービークリップを複製し、指定の位置に配置// obj = _root.attachMovie("photo_mc", "mc01", 1); obj._x = 390; obj._y = 0; //商品画像の決定// _root.mc01.gotoAndPlay(3); } を記入しており、 ボタンをクリックすると、選択したボタンの画像が 指示した場所に表示される、という状態です。 この先の処理にいきづまっております。 ボタンが押されたらrootにおいてあるcountに1を加算 ↓ countにある数字をphoto_mcが取得(?) ↓ その数字に応じて動くどの位置に行くか判断し、移動 というように動かそうとしているのですが、 最初のカウントに1を加算というところでつまづいており、 その先も、可能なのかどうかすらわからない状態です。 なにか別に良い方法があれば、ご教授いただければ幸いです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • 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です。 よろしくお願いします。

  • attachMovieでのインスタンス名

    以下のようなスクリプトを書いているのですが、 traceの値がすべてmenu_mcとなってしまいます。 インスタンス名をmenu1_mc,menu2_mc,menu3_mc,・・・としたいのですが、どうすればいいのでしょうか? i = 10; for(y = 0; y < i; y++) { trace(y); m = y+1; obj = _root.attachMovie("menu", "menu"+m, y); obj._x = 30; obj._y = 70*y; trace(this._name); } 環境はFlashCS3、ActionScript2.0です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • actionscriptでfor文が正常に動かない

    自分ではどうやっても解決できなかったのでどうかご教授ください。 面倒な作りになっているので大変申し訳ないのですが、少ない数だと機能したものの、数を増やしたことで上手く動かなくなってしまいまして… ご面倒だとは思いますが、どうか教えていただきたいです。 actionscript2.0で、Photo0~23のMCがあり、各MCの中には5フレームを作っています。 Photo0~23をクリックすることでnextFrameで1ずつフレームが進むよう設定していています。 問題はここからなのですが、ボタンを押したら各MCの今現在表示しているフレームごとにリネームをしようと考えています。 例)()内表示されているフレーム数 Photo0(5),Photo1(3),Photo2(3),Photo3(1),Photo4(4),Photo5(2) ↓ Photo0(5),Photo4(4),Photo1(3),Photo2(3),Photo5(2),Photo3(1) (フレームの表示番号が多い順番に並べ替える(調べる)) ↓リネーム Photo0(元Photo0),Photo1(元P4),Photo2(元P3),Photo3(元P2),Photo4(元P5),Photo5(元3) 現在表示しているフレーム番号をMCの番号順(Photo0~23)順に調べるスクリプトは下記で出来ています。 しかし、いざリネームをさせると20や21までしかリネームできずに困っています。 var clip_addr:MovieClip = _root; Change_b.onPress= function(){ _global.px = 0; Clip_Align(); } function Clip_Align():Void { var i:Number, j:Number, px:Number; var ref:MovieClip; //表示フレームを順に調べる for (i=5; i>=1; i--) { //全てのMCをチェック for (j=0, px=0; j<=23; j++) { //走査するMCの参照を作成 ref = clip_addr["Photo"+j]; //該当するMCがあった場合、順にリネームする if (ref._currentframe == i) { ref._name= "Photo"+_global.px; //5から1の順に出てくるかを調べる/正常(しかし↓で21しか出ていない場合は21個しか出てこない) trace(i) //ちゃんとリネームされているか調べる/ここで毎回20や21などバラバラな数字が… trace(ref) //次のためにpxを更新 _global.px++; } } } } ここからずっと進めずに立ち往生してしまっている状態で、困っています… どこをどう直せば希望の動作をしてくれるのか、 もしくは、記述しているスクリプトがそもそもこれでは出来ないようでしたら、どう改変したらいいのか教えていただきたいです。 何卒よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • 【新】超初心者です。思うように動いてくれません。

    たびたび申し訳ありません。勘違いがありましたので再投稿いたします。 下記の同タイトル質問はご放念ください。 「シーン1」にムービークリップ「MC01~10」を作成し、MC01から順に再生してゆくFLASHを作成しています。 それぞれのムービークリップの中に早送りボタン配置し、これを押すと次のムービークリップの指定したフレームに移動して再生してほしいのですが、思うように動いてくれません。 _root.mc##.gotoAndPlay(*); もダメでしたし、 _root.nextFrame(*); もダメでした。 (*=該当フレームの数) _root.nextFrame(); で指定すると、次のムービークリップの一番初めから再生はしてくれるのですが、 そのムービークリップ内の指定したフレームから開始したいのです…。 (そもそも、_root.nextFrame(*);が正しいのかどうかもよくわかっていません…) 使用しているのはAdobe Flash CS3 Progessional、Vistaにて作業しています。 まったくの初心者のため、説明不足・意味不明な表現がありましたらご指摘いただければと思います。 どうぞよろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS2.0 ボタンを押し続けた際の処理

    ボタンを押し続けた際に~する、という処理を実現するため 次のようなスクリプトを作成しました。 //ここから //1フレーム目 mc_hoge.onPress = function() { this.onEnterFrame = function(){ cnt++; if(cnt>=max_cnt) delete this.onEnterFrame; } } mc_hoge.onRelease = function() { delete this.onEnterFrame; if(cnt>=max_cnt) trace("~秒押し続けた際の処理"); else trace("普通のクリックをした際の処理"); cnt = 0; } max_cnt=24;//カウントの上限を設定します。適当に24としました。 cnt = 0;//カウント用変数を初期化 //ここまで onEnterFrameでボタンが押されている間、カウントを続けます。 (ボタンを離すか、上限に達したらonEnterFrrameを削除しています) そのカウントした値でボタンを押し続けたかを判定しています。 ここで、この方法よりも動作に負荷がかからないようにするためには このスクリプトをどのように書き換えればよいでしょうか。

  • 動くボタンの作り方

    MX2004を使っています…。 ステージ上のa_mcの中にb_mcがあってb_mcには onClipEvent (enterFrame) { this._rotation +=2 } というスクリプトを記述しました。 これでステージ上の動きはうまく行っていて さらに、それにb_mcにボタン機能をつけたいと思い、 b_mcの中にボタンクリップ→c_mcをつくりました。 そのボタンクリップにつけたい動きは、そのボタンにマウスを重ねると _rootに配置した、空のhyouji_mcに外部の0000_swf現れ、マウスを放すと消えるというものなのですが いろいろ本などをみてとりあえずそのボタンクリップ→c_mcに on(rollOver){ loadMovie("0000.swf",hyouji); } on (press) { getURL("url"); } というスクリプトをつけてみました。 getURLは正常に動くのですが外部ファイルは読み込めません… ちなみに、_rootに配置した、空のhyouji_mcにはhyoujiのインスタンス名を入れています。あと、swfフィアルは、元のファイルと同じところに入れています。 スクリプト勉強中で原因がわかりません… mcの入れ方など、間違っているところがありましたら ご指摘よろしくおねがいします… 他のスクリプトをみても、自分のファイルにうまく応用できない状態です…_rootに配置した、外部swfがマウスを放すと消えるというスクリプトも教えて頂けるとありがたいです。 宜しくお願いします。

    • ベストアンサー
    • Flash
  • ムービークリップを動かす

    FLASH 5 を使っています。 ボタンを使ってムービークリップを動かそうとしています。 下記のように書いて、ボタンを押した時と 『 ↓ 』 キーを押した時に 『 ●●_MC 』 が -10 ずつ動いて -550 まできたら動かないようにしています。 on (press, keyPress "<Down>") { if (_root.●●_MC._y>=-550) { _root.●●_MC._y-=10; } } 但しこれだとボタンを押す度に -10 ずつ動きますが、何度も押さなければなりません。 『 ↓ 』 キーを押し続けた場合は連続で動きます。 ボタンを押し続けた場合にも、連続で -10 ずつ動かすにはどのように書いたら良いのでしょうか? 間抜けな質問をしているかとは思いますが、不慣れなものですので何卒宜しくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう