ゴルフゲームで操作時間によって飛距離が変わる

このQ&Aのポイント
  • ゴルフゲームでKeyを押している時間によって、飛距離が変わるゲームがあります。
  • 同じような操作機能を作りたいと思い、質問させて頂きました。
  • getTimerを使用して操作時間を計測する予定です。
回答を見る
  • ベストアンサー

Keyを押している時間によって・・・

ゴルフゲームでKeyを押している時間によって、飛距離が変わるゲームがあります。 同じような操作機能を作りたいと思い、質問させて頂きました。 どうぞよろしく御願いします。 途中まで書いてみたのですが・・・getTimerとか使うんでしょうか? _root.startFlag = false; start_btn.onPress = function(){ if(_root.startFlag == false){ _root.startFlag = true; _root.startTime = getTimer(); } _root.start_btn.onRelease = function() { _root.startFlag = false; } } this.onEnterFrame = function(){ if(_root.startFlag == true){ if(ms<3000){ ms =getTimer() - _root.startTime; _root.dispTime = ms / 1000; this.createEmptyMovieClip("view_mc",0); view_mc.lineStyle(5,0xFF0000,100) view_mc.moveTo(0,100) view_mc.lineTo(ms/25,100) } if(ms>3000){ms=3000} }; }

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

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

  • ベストアンサー
  • perse
  • ベストアンサー率74% (113/152)
回答No.2

#1です。見落としてました。 伸び縮みするバーもつけてたんですね。 this.createEmptyMovieClip("view_mc", 0); start_btn.onPress = function() { _root.blnReturn = false;//trueのときバーが縮む _root.cnt = 0; _root.view_mc.clear(); _root.startTime = getTimer(); _root.onEnterFrame = BAR; }; //ボタンを離したとき(ヒットエリア以外でも)のイベント start_btn.onRelease = start_btn.onReleaseOutside=function () { _root.ResultTime = getTimer()-_root.startTime; _root.onEnterFrame = null; trace(_root.ResultTime); }; //onEnterFrameイベントで呼び出す関数 function BAR() { if (this.cnt<10 && this.blnReturn == false) {//バー伸びる this.cnt++; } else {//バー縮む blnReturn = true; this.cnt--; if (this.cnt<0) { //縮んで0以下になったら0に戻してフラグをfalseに this.cnt = 0; blnReturn = false; } } view_mc.clear(); view_mc.lineStyle(5, 0xFF0000, 100); view_mc.moveTo(0, 100); view_mc.lineTo(this.cnt*12, 100); } lineToとかは苦手なのでもっといい方法があるかもしれません。 バーの伸び縮みは別の方法としてあらかじめMCで用意しておくという手もあります。 MCにバーが延びて→縮むというアニメを描いといて(モーショントゥイーン等で)ボタンを押したときに再生、はなしたら停止という感じで。 タダ、それだと応用が利かなくなってしまいますが。 (ステージ2でステージ1より速く伸び縮みするとか)

ohirosi
質問者

お礼

有難う御座いました。確かにMCでやったほうが見栄えもいいような気がします。MCでチャレンジしてみます。 詳しく説明していただき有難う御座います。勉強になりました!!

その他の回答 (1)

  • perse
  • ベストアンサー率74% (113/152)
回答No.1

こんな感じでしょうか? start_btn.onPress = function() { _root.startTime = getTimer(); }; start_btn.onRelease = function() { _root.ResultTime = getTimer()-_root.startTime; trace(_root.ResultTime); //結果-ミリ秒 };

関連するQ&A

  • 経過時間について

    こんにちは 経過時間を0から表示して、ボタンが押されたら経過時間の計測・表示をストップし次のフレームに行き、また0から経過時間を表示したいのですが、どうすればいいでしょうか? 時間を表示させるdisptime.textとbtnというボタンをステージに配置しています。↓いろいろ試してみたのですが、フレーム移動した際に経過時間を0から表示させる方法がわかりません。。 flash8を使っています。 stop(); startflag=true; this.onEnterFrame=function(){ if(startflag==true){ starttime=getTimer(); keika=getTimer();-starttime; disptime.text=Math.floor(keika/1000); } }; btn.onRelease = function(){ startflag=false; nextFrame(); };

    • ベストアンサー
    • Flash
  • getTaimerがうまく動作してくれません

    いつも、ありがとうございます。FlashMXです。 衝突の後の少しの時間ボタンの使用を無効にしたいので以下のようなスクリプトをムービークリップに入れましたが、無効になった後に戻りません。 getTimerが効いていないのでしょうか?困っています。 onClipEvent (enterFrame) { if (_parent._parent.shin.hitTest(this)) { _parent._parent.shin.gotoAndStop("hit"); start = getTimer(); timer = 0.05*1000; if (getTimer()>start+timer) { _parent._parent.btn_l._visible = true; _parent._parent.btn_u._visible = true; _parent._parent.btn_r._visible = true; } else { _parent._parent.btn_l._visible = false; _parent._parent.btn_u._visible = false; _parent._parent.btn_r._visible = false; } } }

    • ベストアンサー
    • Flash
  • マウス位置によって画像を切り替える

    ステージ上のマウス位置を読み取り、その座標によって画像を切り替えるFlashを作成中なのですが、上手くいきません。 流れとしては 画像のファイルを読み込む ↓ 画像のファイル分だけムービークリップを作成 ↓ マウスの座標に応じて画像(ムービークリップを切り替える) というものです。 下記のようにかいています。 ●1フレーム目 //各画像の変数読み込み jpg1 = "test1.jpg"; jpg2 = "test2.jpg"; jpg3 = "test3.jpg"; jpg4 = "test4.jpg"; //初期配置 //空のMCを作成し、その中に画像変数を読み込ませる。 _root.createEmptyMovieClip("image_mc0",4); _root.createEmptyMovieClip("image_mc1",3); _root.createEmptyMovieClip("image_mc2",2); _root.createEmptyMovieClip("image_mc3",1); _root.image_mc0.loadMovie(_root.jpg1); _root.image_mc1.loadMovie(_root.jpg2); _root.image_mc2.loadMovie(_root.jpg3); _root.image_mc3.loadMovie(_root.jpg4); //マウスが押されたときに変数MCclickをオンにする _root.mouse_mc.onPress = function() { MCclick = true; trace( "押された時の変数 " +_root.MCclick); } //マウスが離れた時に変数MCclickをオフにする _root.mouse_mc.onRelease = function() { MCclick = false; trace( "離れた時の変数 " +_root.MCclick); nowpoint = (_root._xmouse); trace( "今の位置" + nowpoint); } //マウスがボタン領域外にいった時に変数MCclickをオフにする _root.mouse_mc.dragOut = function() { MCclick = false; trace( "どっかいった時の変数 " +_root.MCclick); } stop(); ●ステージ上にかぶせている透明なMC(mouse_mc) //MCclickがオンの時変数mc_xの値をとり続ける onClipEvent (mouseMove) { if (_root.MCclick) { _root.mc_x = (_root._xmouse); trace( "押された時の変数mc_xの位置 " + _root.mc_x); trace( "マウスを押したままの変数 " + _root.MCclick); //100以下の時に画像1を表示 if((_root.mc_x >= 0) || (_root.mc_x <= 100)){ _root.image_mc0._visible = true; _root.image_mc1._visible = false; _root.image_mc2._visible = false; } else if((_root.mc_x >= 100) || (_root.mc_x <= 200)){ _root.image_mc0._visible = false; _root.image_mc1._visible = true; _root.image_mc2._visible = false; } else if((_root.mc_x >= 200) || (_root.mc_x <= 300)){ _root.image_mc0._visible = false; _root.image_mc1._visible = false; _root.image_mc2._visible = true; } } } この書き方で一応動作はするのですが、1枚目と2枚目の画像の切り返しか動作が行われなくて困っています。 画像のサイズ、ステージのサイズは両方とも 400*400です。

    • ベストアンサー
    • Flash
  • カウントダウンタイマーについて

    カウントダウンタイマーで、クリックするとカウントダウンが始まる設定のコードを見つけましたが、 クリックをしないでもカウントダウンするためには、 どのコードを削ったら良いのかわかりませんでした。。 ご教授頂けたら幸いです。 onClipEvent (load) { cnt = 5*1000; _root.cnt_flg = false; } onClipEvent (enterFrame) { if (_root.cnt_flg) { ms = cnt-(getTimer()-_root.my_time); m = Math.floor(ms/60/1000); s = Math.floor(ms/1000)-m*60; if (ms>=0) { this.TM.text = "あと "+m+"分 "+s+"秒"; } else { this.TM.text = "TIMEOVER!"; } } } on (release) { if (!_root.cnt_flg) { _root.cnt_flg = true; _root.my_time = getTimer(); } }

    • ベストアンサー
    • Flash
  • カウントダウンタイマー

    Flashで作成したカウントダウンタイマーの設定時間をJavaScriptで変更することは可能でしょうか? 例) 11秒のカウントダウンをJavaScriptで50秒に変更等。 また、変更する場合、下記コードのどの部分を変更したら良いか ご教授頂けたら幸いです。 onClipEvent (load) { cnt = 11*1000; _root.cnt_flg = false; if (!_root.cnt_flg) { _root.cnt_flg = true; _root.my_time = getTimer(); } } onClipEvent (enterFrame) { if (_root.cnt_flg) { ms = cnt-(getTimer()-_root.my_time); m = Math.floor(ms/60/1000); s = Math.floor(ms/1000)-m*60; if (ms>=0) { this.TM.text = m; this.TS.text = s; } else { _root.gotoAndPlay("timeover"); } } }

  • アクションスクリプト 

    下記のアクションスクリプトで徐々に目標値へ近づけたいのですが、 うまくいきません。 わかる方よろしくお願いします! btn.onRollOver = function() { clearInterval(myID); for (var i:Number = 1; i<=Max; i++) { if (this.id != i) _root["btn"+i].thumb._y = 0 _root["btn"+i].name_txt._y = 20; _root["btn"+i].frame_mc._y = -2; _root["btn"+i].frame_mc.transform.colorTransform = downColor; } else { this.thumb._y = -5 this.name_txt._y = 15              this.frame_mc._y = -6 } }

    • ベストアンサー
    • Flash
  • FlashでXMLを読み込んだ際の関数について

    XMLでデータを読み込んで表示させているボタンがあり、 そちらを制御するための関数を作りたいのですがうまくいきません。 btn0.onRelease = function() { _root.sound_mc.songStarter(songfile[0], songname[0]); }; btn1.onRelease = function() { _root.sound_mc.songStarter(songfile[1], songname[1]); }; btn2.onRelease = function() { _root.sound_mc.songStarter(songfile[2], songname[2]); }; とある中身を簡単に書きたくて、 for(var i=0; i<=2; i++) { var btn = this["btn" + i ]; btn.onRelease = function() { _root.sound_mc.songStarter(songfile[i], songname[i]); }; } と記述してみましたが、動きません。 正しい書き方をどなたかご教授ください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • for文を使ったボタン

    for文を使ったボタン ボタンが2つあり、そのボタンをロールオーバー、ロールアウトでそれぞれ違うmcを動かしたいのですが、うまくいきません。ボタンを「maru1、maru2」として動かしたいmcを「btn1、btn2」とインスタンス名をつけて以下のスクリプトを書きました。 maru1.addEventListener(MouseEvent.ROLL_OVER,onMouse1); maru1.addEventListener(MouseEvent.ROLL_OUT,outMouse1); maru1.buttonMode = true; maru2.addEventListener(MouseEvent.ROLL_OVER,onMouse2); maru2.addEventListener(MouseEvent.ROLL_OUT,outMouse2); maru2.buttonMode = true; function onMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse1(e:MouseEvent):void{ mc_tween = new Tween(btn1, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } function onMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 0.7, 1, 1, true); mc_tween.start(); } function outMouse2(e:MouseEvent):void{ mc_tween = new Tween(btn2, "scaleX", Elastic.easeOut, 1, 0.7, 1, true); mc_tween.start(); } これでも動くのですが、ボタンが沢山あった場合にfor文を使ってできないかと考え、ttp://www.oro.co.jp/web/creator/flash/actionscript/soft-button.htmlを参考に var mc_tween:Tween; //イベント登録 for(var i:int = 1; i < 3; i++){ this["maru"+i].addEventListener(MouseEvent.ROLL_OVER, rollOverEvent); this["maru"+i].addEventListener(MouseEvent.ROLL_OUT, rollOutEvent); this["maru"+i].buttonMode = true; } function rollOverEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1.5, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1.5, 1, true); addChildAt(btn, 5); } function rollOutEvent(event:Event):void{ var btn:MovieClip = event.target as MovieClip; mc_tween = new Tween(btn, "scaleX", Elastic.easeOut, btn.scaleX, 1, 1, true); mc_tween = new Tween(btn, "scaleY", Elastic.easeOut, btn.scaleY, 1, 1, true); } と書いたのですが、上手く行きません。<var btn:MovieClip = event.target as MovieClip;>の部分でどのように「btn1、btn2」を参照したらいいのでしょうか。 作業環境はmacOSX flashCS5 actionscript3です。よろしくお願い致します。

    • ベストアンサー
    • Flash
  • gotoAndPlayされないです

    はじめてFlashを作ります。 "ATTACK1"と"ATTACK2"のフレームを0.2秒の間隔で10回交互に表示したあと、 "ATTACK3"と"ATTACK4"のフレームをenterが押されるまで交互に表示する というプログラムを作りたいのですが、 "ATTACK1"と"ATTACK2"のフレームを交互にずっと表示されるだけで、 ATTACK3へ移動しません。 "ATTACK1"というラベルのフレームに以下のように書きました。 ActionScript2.0でやっています。 どこが悪いのか教えてください。お願いします。 ATTACK1フレームのActionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; if( count >= 10 ){ gotoAndPlay("ATTACK3"); count=0; delete this.onEnterFrame(); } gotoAndPlay("ATTACK2"); count=count+1; delete this.onEnterFrame(); } } }; ATTACK2フレームのAcctionscript var timeCount = true; var endTime = getTimer()+0.2*1000; stop(); onEnterFrame = function() { if( timeCount ){ time = Math.ceil((endTime-getTimer())/1000); if( time <= 0 ){ timeCount = false; gotoAndPlay("ATTACK1"); delete this.onEnterFrame(); } } };

    • ベストアンサー
    • Flash
  • コピペで持ってきたのにasが働かない?

    円グラフがあり、グラフが進んで表示されるていく順に説明の吹き出しが4つボヨンとでて最後に大きな吹き出しがボヨンとでるのがあり、吹き出しの内容を変え、無事動いたのですが、他のアニメの後にそれを入れようとしてコピベすると、4つの吹き出しがでないのです。ルートがおかしいかと思い、新規ファイル、シーンに丸ごと、「すべてのフレームを選択」でもってきても、4つの吹き出しがでなくなる。どうしてでしょう?(元もシーンにある)ASはそのまま、フレームラベルもそのままなのに。 シーンの円グラフMCに onClipEvent(load){ stoptime = getTimer(); waittime = 4500; } onClipEvent(enterFrame){ if (getTimer() >= stoptime + waittime) { for (i=1; i<=4; i++){ mc = "MC_fukidasi" + (i); _root[mc].targetScale = 0; } _root.gotoAndStop("scene2"); } } 円グラフMCの中、吹き出しのタイミングでMC1~4番号替え _root.MC_fukidasi1.flag = true; シーンの吹き出し1~4それぞれ onClipEvent(load){ targetscale = this._xscale; nowscale = 0; this._xscale = this._yscale = this._alpha = nowscale; decay = 0.6; speed = 0.3; flag = false; } onClipEvent(enterFrame){ if (flag == true){ nowscale = nowscale * decay + (targetScale - this._xscale) * speed; this._xscale = this._yscale = this._alpha += nowscale; } } 大きな吹き出しMCに、flagなしのボヨンとでるas 上のフレームラベル「scene2」 アニメの説明の為に、アニメの後ろこれを入れたいので、どうしたらいいのかわかりません。 スクリプトが判らないので何か方法はないでしょうか?

    • ベストアンサー
    • Flash

専門家に質問してみよう