• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:ムービークリップ再生終了後に時間を測定)

ムービークリップ再生終了後に時間を測定

このQ&Aのポイント
  • ムービークリップ再生終了後に時間を測定する方法を教えてください
  • 開始ボタンを押すとランダムに文字列が生成され、一定時間後に消える機能を作成しました。しかし、文字列が消えた後に時間を計測する方法が分かりません。また、停止ボタンを押した後に一定時間後に開始ボタンを押せるようにする処理もわかりません。どのように処理をすれば実現できるでしょうか?
  • 環境はWindows XPとFlash 8を使用しています。詳しい方がいらっしゃれば、教えていただきたいです。

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

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

#1です。 結局, 「開始ボタン」と「停止ボタン」は _root に置くのか,ムービークリップ内の置くのか, まて別の場所に置くのかわかりませんが, 「開始ボタン」と「停止ボタン」が同じ階層にある場合だと, どこに置いても使えるようには考えてみました。 スクリプトを書かれたムービークリップにインスタンス名を付けてください。 この説明では「outputMC」というインスタンス名にしておきます。 「開始ボタン」のスクリプト -------------------------------------------- on (release) { // outputMC 内の 関数 randomchoise_A_1() を実行 _root.outputMC.randomchoise_A_1(); // 変数 mytime1 に現在の時間(ミリ秒)を代入 var mytime1 = getTimer(); // // myID1 という setInterval を定義 myID1 = setInterval(function () { // outputMC の 変数 output 消す _root.outputMC.output = ""; // このsetIntervalをクリア clearInterval(myID1); // 2000ミリ秒後(2秒後)に実行 }, 2000); // // 開始ボタンを無効にする start_btn.enabled = false; } -------------------------------------------- 「停止ボタン」のスクリプト -------------------------------------------- on (release) { // 変数 mytime2 に現在の時間(ミリ秒)を代入 var mytime2 = getTimer(); // 変数 outputに mytime2 と mytime1 の差分を代入(秒) _root.outputMC.output = (mytime2-mytime1)/1000; // // myID2 という setInterval を定義 myID2 = setInterval(function () { // 開始ボタンを有効にする start_btn.enabled = true; // 有効になったことを output に代入 _root.outputMC.output = "開始ボタン有効"; // このsetIntervalをクリア clearInterval(myID2); // 2000ミリ秒後(2秒後)に実行 }, 2000); } ------------------------------------------- しかし,なんでそういう奇妙な場所にスクリプトを書かれているのでしょうか? 何か特殊な意味があるのでしょうか。 そうでなければ, そういうたぐいのスクリプトはフレームに書いた方が良いです。 また, 「output」はテキストフィールドの変数名ですよね。 Flash MX 以降は, テキストフィールドに変数名は付けない方が良いです。 妙な思わないトラブルが発生する可能性があります。 今回の回答は,「output」は変数名であるということで, 上のスクリプトは書いていますが, #1で書きましたように, なるべくテキストフィールドにはインスタンス名を付けて,  インスタンス名.text でアクセスするようにしてください。 何かどこかしら変です。 今の人は普通考えない, Flash 5 時代の名残が感じられるスクリプトだと思います。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (1)

noname#35109
noname#35109
回答No.1

わからない部分は, getTimer() と setInterval と enabled の3つですね。 メインムービー(_root)のステージ上に, 「mytxt」 というインスタンス名(変数名ではありません)のダイナミックテキストフィールドと, 「start_btn」 というインスタンス名の 開始ボタン と, 特にインスタンス名は不要の 停止ボタン , この3つのオブジェクトがあったとします。 開始ボタン(start_btn) には次のように書き, ---------------------------------- on (release) { // テキストフィールド mytxt に文字列の表示 _root.mytxt.text = "あいうえお"; // 変数 mytime1 に現在の時間(ミリ秒)を代入 var mytime1 = getTimer(); // // myID1 という setInterval を定義 myID1 = setInterval(function () { // テキストフィールド mytxt の表示を消す _root.mytxt.text = ""; // このsetIntervalをクリア clearInterval(myID1); // 2000ミリ秒後(2秒後)に実行 }, 2000); // // 開始ボタンを無効にする _root.start_btn.enabled = false; } ---------------------------------- そして, 停止ボタン には次のように書くと, ご質問で書かれているようなことができます。 ---------------------------------- on (release) { // 変数 mytime2 に現在の時間(ミリ秒)を代入 var mytime2 = getTimer(); // mytxt に mytime2 と mytime1 の差分を表示(秒) _root.mytxt.text = (mytime2-mytime1)/1000; // // myID2 という setInterval を定義 myID2 = setInterval(function () { // 開始ボタンを有効にする _root.start_btn.enabled = true; // 有効になったことを mytxt に表示 _root.mytxt.text = "開始ボタン有効"; // このsetIntervalをクリア clearInterval(myID2); // 2000ミリ秒後(2秒後)に実行 }, 2000); } ---------------------------------- ランダムに文字列を生成する部分は省略して, 文字列「あいうえお」で代用させていただいています。 また, 計測した時間を表示させる場所と, 開始ボタンが有効になったというサインを出す場所が見つからなかったので, 動作確認をし易くするために, 本来ランダムな文字列が入るべき「mytxt」に, 秒数や有効サインを表示させるようにしました。 (trace() よりわかり易いかと思いまして...。) 「外部SWFムービー内のfunctionをロード直後に呼出す」 http://www.fumiononaka.com/TechNotes/Flash/FN0304001.html  →このページの真ん中辺り   「3. setIntervalアクションを使う」 を参考 「Flashゲーム講座&ASサンプル集【時間について】」 の 『Flashを開いてから経過時間を表示したい』 http://hakuhin.hp.infoseek.co.jp/main/as/time.html#TIME_00

rootmind
質問者

補足

丁寧な解説ありがとうございます。当方の説明が下手だったため正しく 伝わっていない部分がありました補足させてください。 アドバイスいただいたことを基に、ランダムテキストが配列されている textcilpというムービークリップインスタンスから取り出し、開始ボタ ンで文字列を取り出すようにしていました。その結果、ランダムで文字 列は取り出せるものの、計測を終了したあと、開始ボタンを押しても次 の文字列を生成することが出来ませんでした。 使用しているムービークリップのソースは以下の通りです。 --------------------------------------------------------------- onClipEvent (load) { randomtext_A_1 = new Array("Q", "W", "E", "R", "T", "Y", "U", "I", "O", "P", "A", "S", "D" , "F", "G", "H", "J", "K", "L", "Z", "X", "C", "V", "B", "N", "M"); function randomchoise_A_1() { randomchi_A_1 = Math.floor(Math.random()*26); outputtext_A_1 = randomtext_A_1[randomchi_A_1]; this.output = outputtext_A_1; } randomchoise_A_1(); } ---------------------------------------------------------------- 何度も修正しましたが解決には行き着きませんでした。 お手数をかけて申し訳ありません。出来れば、このムービークリップを 使ってうまく動作させるようにしたいのですが...。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • 処理時間の計測中に、任意の時間が経過してしまったら、警告表示を行いたいですが、方法が分からないでいます

    C++で、 ある処理の実行に要する時間の計測を行う ソースを書いていたのですが、 時間の計測を開始してから、 3秒以上が経過してしまった場合にのみ、 処理の進行状況に関わらず、 「3秒経過済み」と表示してあげたいと思っていましたが、 時間の計測を、 「difftime」などで表示する方法は分かったものの、 処理の実行中に、3秒以上経過したら、 取り合えず、「3秒経過済み」と表示させる方法が 分からないでいます。 何かアドバイスいただけるとありがたいです。 宜しくお願い致します。 ====================== time_t start, end; time( &start ); //計測開始 //処理が実行される //処理時間の計測中に「最初の3秒が経過してしまった場合」にのみ「3秒経過済み」と表示してあげたい time( &end );//計測終了 ======================

  • 時間の測り方とその表示方法について

    C++,Win32APIでプログラムしています。 ウィンドウ上にランダムに点を生成し、矩形をランダムに生成し矩形内の点をすべて返す時間を計測したいのですが、時間の計測の仕方とその時間の表示方法がわかりません。 よろしくお願いします。

  • CGIの表示時間、測定

    Perlを使っています。 CGIの表示時間の測定で、 ********************** $start = (times)[0]; 処理内容 HTML等 $end = (times)[0]; $speed = $end-$start; printf("消費時間: %.5f CPU秒",$speed); ******************* 大体かと思いますが、処理時間の目安としていました。 でも、最近新しいCPUが高いPCを買って、表示速度 が"0.01600 CPU秒" か、"0.00000 CPU秒"にしか、 なりません。 もっと細かく分かる方法はありませんでしょうか?

    • ベストアンサー
    • CGI
  • CPU時間の測定

    任意のJavaアプリケーション内の特定の処理での実行時に消費したCPU時間を,そのJavaアプリケーション内部で測定するにはどのようにしたらよいのでしょうか(開始時と終了時の currentTimeMillis() の差分は実時間なので該当せず.アプリケーション起動時にシェルでtimeコマンドを呼ぶのも,外部からの測定であり,また,アプリケーション全体の測定になるので該当せず).C/C++ では clock() の差分で測定していたのですが Javaでの方法がわかりません.OSはLinuxです.

    • ベストアンサー
    • Java
  • 時間計算について

    いつもお世話になっております。 今回の内容は私にとってとても厄介で是非皆様のお力を お借りしたいと思っているのですが。 さて内容です。 項目 「設定時間」・・・「秒」単位:3桁 「処理数」・・・・処理する数:6桁 「設定時間」×「処理数」で、総時間(秒)を割り出し ます。 「開始時間(時:0~23)」・・・Comboboxで手入力。 「開始時間(分:00~30)」・・・Comboboxで手入力。 (どちらもランダムで設定可能。) 「終了時間(時)」 「終了時間(分)」 この2項目に開始時間に上記の計算で割り出した総時間を加算した結果を表示させたいのですが。。。 力量不足でどうにも思いつきません。 よろしくお願いします!

  • 時間(ミリ秒を含む)の引き算

    現在、VB6でAPI関数timeGetTimeを使って処理時間を測定する プログラムを作成しています。 ミリ秒まで取得・表示しているのですが、ミリ秒を含む時間の引き算方法がわかりません。 以下のような引き算を行い、処理開始・終了時間と経過時間を表示させたいです。 例) 15:13:59.054(終了時間)-15:12:57.112(開始時間) =99:99:99.999(経過時間) どなたか教えて頂けないでしょうか。 宜しくお願い致します。

  • ファイルの作成日で動作するバッチ

    下記のような動作をするバッチを作成したいのですが どのように作ればよいのかわかりません。 ぜひ知見のある方にご教示いただければと思います。 環境はWindows Server 2008 R2です。 とあるフォルダ「A」があります。 「A」の下には「work」というフォルダと、ランダムな文字列のフォルダが生成されます。 ランダムな文字列のフォルダの下には「xxx.pdf」「xxx.csv」が生成されます。 (xxxにもランダムな文字列が入ります。フォルダとファイルの文字列は別です) 毎日1回バッチファイルを動作させ「A」の配下にあるランダムなフォルダの中にある「xxx.pdf」「xxx.csv」を 別のフォルダ「B」に移動させたいと思っています。 この際にランダムな文字列のフォルダは削除し、ファイルだけを移動させたいです。 また、移動させるファイルの条件として「xxx.pdf」「xxx.csv」のファイル生成日が 24時間以内であることとしたいです。 つまりファイル生成されてから24時間以上経過した「xxx.pdf」「xxx.csv」は処理の対象外になります。(「xxx.pdf」「xxx.csv」を格納しているフォルダもそのまま) また「work」フォルダおよび「work」フォルダ配下のファイルも処理の対象外としたいです。 知見のある方、ぜひご教示をお願いいたします。

  • ACCESSで入力時間を計る

    よろしくお願い致します。 ACCESS2000で入力フォームを作っています。いくつかのテキストボックスがあり、テーブルには全てVBAで登録をするので、ボタンをクリックすると登録できるように作りました。 そこで、一番最初に入力するテキストボックスに文字が入力されてから、ボタンをクリックするまでの時間を計測したいのですが、上手くいきません。 何か良い方法はありますでしょうか? よろしく、お願いいたします。

  • 測定ソフトの記録ファイルを変換してエクセルに出力

    1.大量の測定ソフト(物理系の機械の測定ソフト)のファイルをテキストファイルに変換する。(拡張子だけ.txtに変換して開いても文字化けして結果がわかりません。) 2.テキストファイルに変換したファイルをエクセルに読み込む。 以上のことは一個づつやればできるのですがファイルが多く時間がかかります、短時間でできる方法はありませんか? 一個づつの処理する時は測定ソフトで測定ファイルを開き、保存するときにテキストで保存するとテキストで保存されます。それをエクセルで読み込んでました。

  • 登録した文字列をランダムに表示する。

    とても初歩的な質問だとは思いますが宜しくお願いします。 ただいまある実験用のプログラミングをBCB6で行っているのですが、 完全に行き詰ってしまいました。 作るものの概要としては 『ボタンを押す間隔を測り、測定した時間に応じて、 2つのカテゴリーからそれぞれ登録された文字列を表示させる。』 といったものです。 文字列を100個×2カテゴリー=合計200個登録する方法、 それをランダムで表示させる方法(1度使った文字列は使わない) をご教授いただきたいのです。 宜しくお願いします。