ゲーム作成時に問題発生!ムービープレビュー以外では動かない

このQ&Aのポイント
  • ゲームを途中まで作成したが、ムービープレビュー以外では動かない問題が発生している。
  • パブリッシュプレビューやサーバーにUPしてもコントロールが効かない。
  • 問題の原因や解決策について教えてほしい。
回答を見る
  • ベストアンサー

ムービープレビューでないと動きません。

ゲームを途中まで作ったのですが、ムービープレビューで出力したときにしか動きません。 (他のパブリッシュプレビューや実際にサーバーにUPして見ましたがコントロールがききません)問題があれば教えて頂きたく質問させて頂きました。 どうぞよろしく御願いします。 onClipEvent (load) { _root.target._x=100 speed = 0; rot = -90; dx = 0; dy = 0; } onClipEvent (enterFrame) { _root.target.honou.gotoAndStop(1); if(Key.isDown(Key.SPACE)) {speed +=0.8; _root.target.honou.gotoAndStop(2); } if(Key.isDown(Key.LEFT)){ rot -= 3 this._y +=2} if(Key.isDown(Key.RIGHT)) { rot += 3 this._y +=2} else{ this._y =this._y + 3 } dx = Math.cos(rot * Math.PI / 180) * speed; dy = Math.sin(rot * Math.PI / 180) * speed; speed *= 0.9; _x += dx; _y += dy; _rotation = rot; }

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

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

  • ベストアンサー
noname#35109
noname#35109
回答No.1

おもしろいです! 月面付近のロケットロケットか何かの動きですね。 スペースキーを押すと ロケットエンジンが噴射を開始して,上に行きますが, 油断していると下に落ちてしまうような感じでしょうか。 それで,『←』キーや『→』キーで進む方向を決めるのですね。 あえて書くなら,  ~~~略~~~ onClipEvent (enterFrame) { //_root.target.honou.gotoAndStop(1); ↓移動 if (Key.isDown(Key.SPACE)) { speed += 0.8; _root.target.honou.gotoAndStop(2); }else{ _root.target.honou.gotoAndStop(1); }  ~~~略~~~ の方が良いような気もしますが, 今のままでもOKです。 つまり,問題なく動きましたが… ブラウザを通して見たときは, フォーカスがFlashに当たっていないので,一度Flashをクリックしないとキー操作できませんが, 問題点はそこでしょうか? 「ブラウザに埋め込んだ Flash ムービーにキーボードフォーカスを与える」 http://www.macromedia.com/jp/support/flash/ts/documents/tn_15586.htm だいたいは「スタート」ボタンを付けて対処します。 他は特に問題点は見えないのですが… (私の目はふし穴なもので)

ohirosi
質問者

お礼

有難う御座います。 正しくロケットをイメージしています。 ご指導いただいたとおり、 一度Flashをクリックする事で解決しました。 後、確かにelseを使ったほうが、1箇所にまとめられて確かにスマートですね!勉強になりました。 どうも有難う御座います。

関連するQ&A

  • Flashのキーボード操作で

    キーボードのテンキーでコマンドを選択するアクションスクリプトをくんでいるのですが・・・・・ onClipEvent (keyDown) { if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { this._y += 30; } else if (Key.isDown(Key.UP) or Key.isDown(Key.DOWN)) { this._y = -30; }else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)){ this._x = +50; }else if (Key.isDown(Key.LEFT) or Key.isDown(Key.RIGHT)){ this._x = -50; } if (Key.isDown(Key.SPACE)) { _root.flag = 1; } } というアクションスクリプトを組むと上下はうまく移動するのですが横移動がうまくいきません。いきなり予期しないところに移動してしまったりしてしまいます・・・・。

    • ベストアンサー
    • Flash
  • マウスを避けるムービークリップ

    マウスが近づくと逃げるMCを制作しようとしているのですが、 思うようにいかず悩んでいます。 A B C D E F G H I J K L M N O P Q R S T U V W X Y Z という風に並んだそれぞれのアルファベットのMCに マウスが近づくとある一定の範囲の距離を取り、離れると元の場所に戻る… というふうな動きにしたいのです。 今は、 a_mc.onEnterFrame = function () { X=70;//_rootのAのx座標 Y=211;//_rootのAのy座標 var dx = _root._xmouse-this._x; var dy = _root._ymouse-this._y; var kyori = Math.sqrt(dx * dx+dy * dy); var kakudo = Math.atan2(this._y-_root._ymouse,this._x-_root._xmouse); if(kyori<100){ this._x += kyori * Math.cos(kakudo) * 0.05; this._y += kyori * Math.sin(kakudo) * 0.05; this._x = (this._x * 5+X)/6; this._y = (this._y * 5+Y)/6; } }; と記述してマウスと反対方向の動きをさせていますが、 マウスから離れるという動きではないのです…。 分かりづらい説明ですみませんが、ヒントかなにかあれば教えてください。 制作環境は、CS4で、AS2です。

    • ベストアンサー
    • Flash
  • ムービーにマスクをかける

    以下のようなムービーにマスクをかけると、 マスクの上にムービーが走ってしまいます。 解決方法はあるでしょうか。 onClipEvent(load){ tateSize = 1400; tate = 1400; mY = tateSize/2; tateInt = Math.floor (tateSize/tate); cloneNo = ++_root.photoC; if(cloneNo<=tateInt){ pClone = this._name + cloneNo; this.duplicateMovieClip(pClone, cloneNo); this._y += cloneNo*tate; } } onClipEvent(enterFrame){ if (this._y<(-tate*0.5 - 5)) { this._y += (tateInt+5)*tate; } else if (this._y>(tateSize + tate*0.5 + 5)) { this._y -= (tateInt+1)*tate; } this._y -= (_root._ymouse - mY)/30; }

  • ムービークリップボタンの連動?

    お世話になります。 AS2.0の初心者です。 ページAにムービークリップタイプのボタンbuttonAとbuttonBがあります。そして、ページCがあります。 this.gotoAndStop(1);白 this.gotoAndStop(2);黒 this.gotoAndStop(3);白 仕様としては、 最初ページには、buttonAボタンしかありません。 この状態でEnterキーを押すと、buttonAが反応しページAで結果がでます。そして、buttonAボタンは見えなくなり、buttonBボタンが見えます。 ここで、もう一回Enterキーを押すと今度はbuttonBが反応し、ページCに移動します。 でも、実際は、最初Enrterキーを押すと、buttonAボタンだけではなく、buttonBボタンも一緒に反応しちゃって、一気にページC移動します。こうなると結果を見ることができません。 ここで質問ですが、最初Enterキーを押した場合、buttonAボタンだけ、反応させる方法はありませんか?そして、2度目のEnterキーを押すと今度はbuttonBボタンだけ反応する、、、 以下は、そのソースです。どこが間違っていますか。よろしくお願いします。 ●大元アクションスクリプト buttonA._visible=true; buttonB_visible=false; buttonA.onKeyDown = function() { if (Key.isDown(Key.ENTER)) { //ページAに結果出力 buttonA._visible=false; buttonB_visible=true; } } ●buttonAのアクションスクリプト // 何かキーが押された時 onClipEvent (keyDown) { if (Key.getCode() == 13) { this.gotoAndStop(2); } } // 何かキーが放された時 onClipEvent (keyUp) { if (Key.getCode() == 13) { this.gotoAndStop(1); } } ●buttonBのアクションスクリプト // 何かキーが押された時 onClipEvent (keyDown) { if (Key.getCode() == 13) { this.gotoAndStop(2); } } // 何かキーが放された時 onClipEvent (keyUp) { this.gotoAndStop(1); if (Key.getCode() == 13) { //ページCへ移動 } }

    • ベストアンサー
    • Flash
  • Key操作について

    http://www.kaitopurin.com/ 上記のサイトの様にキャラクターをキー操作によって動かしたいのですが、わかりません。 var thirom:MovieClip; var back:MovieClip; var speed:Number = 4; thirom.onEnterFrame = test; function test():Void { if(Key.isDown(Key.LEFT)) this._x -= speed; if(Key.isDown(Key.RIGHT)) this._x += speed; if(Key.isDown(Key.UP)) this._y -= speed; if(Key.isDown(Key.DOWN)) this._y += speed; } 途中までスクリプトを書いてみたんですが、ここから先がわかりません。例えば動かす対象のムービークリップ内にジャンプやしゃがむ動作を取り入れて、ラベルなどで移動する方法が一般的なんでしょうか? どうかご教授お願いします。 環境はMac,flash8です。

    • ベストアンサー
    • Flash
  • 坂道を転がる動きをご教授願いたい

    現在、Flash8にて任意の角度を指定し、 そので転がるボールの動きを作っています。 Actionscriptは以下の通りです。 //角度 rot=0; //転がるmc、ballの質量 m=0.5; //静止摩擦係数 ius=0.05; //運動摩擦係数 iuk=0.07; //時間  t=0; tt=1/30; //重さ w=0.5*9.8; //坂道のmc、saka saka.onEnterFrame=function(){  this._rotation=rot; //垂直抗力  N=w*Math.cos(rot*Math.PI/180); //転がる力  Fp=w*Math.sin(rot*Math.PI/180); //静止摩擦力  Fs=ius*N; //転がるかどうかの判定  if(Fp<Fs){ //運動摩擦力   Fk=iuk*(w*-1); //加速度を出してx、yに代入    Fk_p=[Fk*Math.cos(rot*Math.PI/180),Fk*Math.sin(rot*Math.PI/180)]; Fp_p=[Fp*Math.cos(rot-180*Math.PI/180),Fp*Math.sin(rot-180*Math.PI/180)]; Fnet=[Fp_p[0]+Fk_p[0],Fp_p[1]+Fk_p[1]]; a=new Array(); a[0]=Fnet[0]/0.5; a[1]=Fnet[1]/0.5; t=t+tt; _root.ball._x+=0*t+1/2*a[0]*t*t; _root.ball._y+=0*t+1/2*a[1]*t*t; } //転がるボールのmc、ball ball.onEnterFrame=function(){  this._rotation=rot; } ballが坂道を転がらずあらぬ方向に行っちゃいます。 どこがどう間違っているのかも頭がゴチャついてて判りません。 物凄く勘違いなことをしているのだと思います。 お教え願えればと思います。よろしくお願いします。

    • ベストアンサー
    • Flash
  • 雪の降るスクリプトで、、、

    以前雪の降るスクリプトについて質問させていただいたものです。 フレームには、 for (k=0; k<50; k++) { duplicateMovieClip(this.snow, "snow"+k, k); } で、ムービークリップには、 onClipEvent (load) { //specifies the size of the movie stage movieWidth = 300; movieHeight = 200; //variables that will modify the falling snow i = 1+Math.random()*2; k = -Math.PI+Math.random()*Math.PI; //giving each snowflake unique characteristics this._xscale = this._yscale=50+Math.random()*100; this._alpha = 75+Math.random()*100; this._x = -10+Math.random()*movieWidth; this._y = -10+Math.random()*movieHeight; } onClipEvent (enterFrame) { //putting it all together rad += (k/180)*Math.PI; this._x -= Math.cos(rad); this._y += i; if (this._y>=movieHeight) { this._y = -5; } if ((this._x>=movieWidth) || (this._x<=0)) { this._x = -10+Math.random()*movieWidth; this._y = -5; } } これを再生するといきなりステージに現れてしますのですが、 ステージの上からY座標Oから(上から降るように)するにはどう したらよいでしょうか? onClipEvent (load)に this._y = 0; と付け加えてみましたが駄目でした。 ご教授お願いいたします。

    • ベストアンサー
    • Flash
  • テキスト内の正誤判定

    [I]+[II]=[SUM] [合否] テキストボックス[I]、[II]、[SUM]、[合否]の4つを配置して、スペースキーを押した際、[I]+[II]の合計が[SUM]と等しい場合には[合否]の中に○を、等しくない場合は×を表示させたいのです。[I]+[II]は、1桁の値をランダムで作り出し、[SUM]の中に数字を打ち込める用にしています。 今までに出来たスクリプトは以下の通りになってます。 なお、[I]=suuzi1,[II]=suuzi2,[SUM]=hyoujiとし,また、KEYCODE =["", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " ", ""];は長いので略しております。 onClipEvent (keyDown) { if (Key.isDown(Key.SPACE)) { _root.suuzi1 = Math.floor(Math.random()*10); _root.suuzi2 = Math.floor(Math.random()*10); _root.hyouji = ""; } } onClipEvent (load) { // キーが押されたとき KEYCODE = new Array(); KEYCODE = ["", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " ", ""]; } onClipEvent (keyDown) { // キーが押されたとき _root.CODE = Key.getCode(); _root.hyouji = _root.hyouji+KEYCODE[_root.CODE]; }

  • 雪が降るスクリプトについて

    雪がふるスクリプトを http://www.kirupa.com/developer/mx/snow.htm で拾ったのですが、flashplayer6対応のようで、 これをflashplayer7対応にするにはどうしたらよいのでしょうか? フレームには、 for (k=0; k<50; k++) { duplicateMovieClip(this.snow, "snow"+k, k); } で、ムービークリップには、 onClipEvent (load) { //specifies the size of the movie stage movieWidth = 300; movieHeight = 200; //variables that will modify the falling snow i = 1+Math.random()*2; k = -Math.PI+Math.random()*Math.PI; //giving each snowflake unique characteristics this._xscale = this._yscale=50+Math.random()*100; this._alpha = 75+Math.random()*100; this._x = -10+Math.random()*movieWidth; this._y = -10+Math.random()*movieHeight; } onClipEvent (enterFrame) { //putting it all together rad += (k/180)*Math.PI; this._x -= Math.cos(rad); this._y += i; if (this._y>=movieHeight) { this._y = -5; } if ((this._x>=movieWidth) || (this._x<=0)) { this._x = -10+Math.random()*movieWidth; this._y = -5; } } とあるようですが。

    • ベストアンサー
    • Flash
  • 1フレーム~5フレームまで表示されなくなったのは。。。

    こんにちわ毎回お世話になっております 新しいフラッシュを作ったのですが 前回のフラッシュにしようしたロード画面を 使いまわしました。 ムービークリップ自体には onClipEvent (load) { _root.stop(); } onClipEvent (enterFrame) { if (100 == Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)) { _root.gotoAndPlay(5); } } onClipEvent (enterFrame) { this.gotoAndStop(Math.floor(_root.getBytesLoaded()/_root.getBytesTotal()*100)); } と前回同様記述しました。 しかし今回はロード画面がでず 白紙の画面のまま読み込みが完了し そのままフレーム5に進んでしまっています。 何回もやりなおしたのですが どうしても白紙のまま読み込んでしまいます。 これはFLA自体が破損?したのでしょうか? 非常に困っています。 なにかアドバイスがありましたらお願いいたします。 別のロードムービーを作ったものの 白紙のまま読み込みされました。。。 FLASH8 WIN XP使用です。

    • ベストアンサー
    • Flash

専門家に質問してみよう