人気雑誌が読み放題♪

Flashでクイズ形式のゲームをつくろうとしています。
二者択一形式で出題されるクイズの正解数だけをカウントし、その値を最終ページで表示するアニメーションに反映させたいのですが、スコアを集計・表示させるには何をどうすればよいのでしょうか?

補足しますと、動作環境はローカルのみを想定しています。
(ネットに繋がらないPCにこども向けのゲームを常設したいと考えてます)
最終ページに予定しているアニメーションとは、10キーにみたてた数字の並びの中で、正解数に相当する数字のみが点灯する(色が変わって表示される)というものです。

過去ログをみてもリンク切れだったりして、方法を探ることができませんでした。
ちなみに私はアクションスクリプト、CGIともに未経験で、これから勉強していきたいと考えているまったくの初心者です。方法をご存じの方、どうぞご教授願います。

このQ&Aに関連する最新のQ&A

A 回答 (1件)

Macromedia の Flash をお持ちでしょうか?


つまり,Flash 5, Flash MX, Flash MX 2004, Flash 8 というようなソフトですが。
他のソフトであれば方法が全く変わってきます。
勝手に Mcromedia の Flash 5 以上をお持ちと言うことで,説明します。


CGIやPHPなどは全く必要ありません。
今回のような場合,
それらサーバーサイドの言語は,Flashで採点した結果を,学年やクラスで集計するときに使う物です。

Flashのスクリプト的には,
正解ボタンクリックの度に,変数を加算すれば良いだけです。
点滅などは適当にさせてください。


例として,11フレームのムービーを作ります。
とりあえずタイムラインで 11フレーム 作ってください。

そして,ボタンシンボルを2つ作ってください。

フレーム1 のスクリプトに

----------------
stop();
tensuu = 0;
----------------

と書きます。
stop(); は タイムラインをストップさせるスクリプトです。
tensuu = 0; は,変数 tensuu に 0 を代入すると言うことです。
Flash では 変数の宣言をしなくてかまいません。
Flash MX 2004 以降をお持ちでしたら,
tensuu = 0; と言う具合に,変数の初期値が必要なだけです。
Flash MX ,Flash 5 では,初期値さえ必要ないので(あっても当然良いです),
stop(); だけでもかまいません。

2つ作ったボタンのうち1つに,

------------------------
on (release) {
tensuu +=1;
nextFrame();
}
------------------------

と書いてください。
クリックすると, 変数 tensuu が 1 ずつ加算され,
nextFrame(); で「次のフレームに行く」というものです。

もう1つのボタンには,

------------------------
on (release) {
nextFrame();
}
------------------------

と書いてください。
単に,「次のフレームに行く」というものです。

おわかりでしょうか。
最初のボタンが正解ボタンです。
2つめが不正解ボタンです。

フレーム11 をキーフレームにしてください。
そしてそこに,ダイナミックテキストを用意してください。
(文字の色は背景色以外にしてください。)
ダイナミックテキストの「変数名」を ten とします。

その変数名 ten のダイナミックテキストを選択して,
それを右クリック→シンボルに変換 でムービークリップシンボルにします。
ムービークリップシンボルとなった,ダイナミックテキストを選択し,
プロパティパネルより,インスタンス名を tokuten としてください。

そして,フレーム11 のスクリプトに,以下のように書きます。

--------------------------
_root.tokuten.ten = tensuu;
--------------------------

最初の _root はあってもなくても良いです。
とにかく,これで, 変数 tensuu が tokuten ムービークリップの, 変数 ten にセットされます。

あとは,tokuten ムービークリップの中で 変数 ten のダイナミックテキストが点滅するようなアニメーションを作れば良いだけです。

※変数名やインスタンス名は,今勝手に決めた物で,
 半角英数から始まっていればたいてい何でもかまいません。


することや,スクリプトは極めて簡単です。
簡単なことですが,こういうことは文字だけでは理解するのが難しいと思います。

最初は本を買って本の通りに色々やってみてください,
その本から応用を考えるようにしたほうが簡単だと思います。
なるべく絵の描き方などから説明されている基本的な本がいいと思います。

ご質問されている感じのことは,
本で基本を身につけて,自分で考える方が,文字だけの説明を見て実行するより簡単だと思います。

私が回答している物ですが,
ひょっとしたら参考になるかもしれません。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1873818
 ↑教えて!goo ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=1873818
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q問題がランダムに出るクイズ

制作環境:FlashMX2004
用意する質問は15問程度用意し、実際に回答する問題数は8問程度で、アクセスのたびに15問の中から8問の問題がランダムに出るというクイズをつくりたいと思っています。
クイズの問題を外部swfファイルにするか、1つのswfファイル内で完結するほうが良いのかは、作り易い方で制作したいと考えております。
特にわからないところは15問の問題からランダムに8つの問題を抽出して取り扱う方法です。
ご存知の方がおられましたら、お教えください。

Aベストアンサー

どこまで考えて,どこで行き詰まったのでしょうか?
そこが大切なポイントです。

書かれていることは,複数の要素を組み合わせて実現していくことです。
1つ1つの要素を作っていって,詰まった部分を明白にしないと,自力では先に進めません。
また,質問としても少し要素が多いです一応1つの例を挙げるという形のものでしたら回答可能ですが,
回答できるギリギリの範囲です。

説明の都合上,最後から説明します。

ほとんど明白にわかるところは,
普通に考えると,

>> クイズの問題を外部swfファイルにするか、
 → Movieclip.loadMovie("ランダム.swf");

>> 1つのswfファイル内で完結する
 → Movieclip.gotoAndStop(ランダムフレーム数);

のどちらかだろうということです。
だから,もし,外部swfファイルにするのでしたら,
もしランダムな数が 4 と出たら,
「4.swf」とか「question4.swf」とか「q4.swf」などを読み込めば良いことになりますから,
「qMC」というインスタンス名のムービークリップを _root. に用意した場合
例えばボタンのスクリプトだと,

on (release) {
_root.qMC.loadMovie("q4.swf");
}

となります。
あとは 4 なら 4 をランダムに出せばいいのです。
ランダム動作は ActionScript に限らずどの言語でも同じです。
結局ランダムな数を出してその数から何かをするだけです。

ここまではよろしいのでしょうか?
あと,いちいち2つの場合を書けませんから,
以下も loadMovie の方で説明を書きます。
スクリプトは全てコピペで使用可能だと思います。


====================================

とりあえず,
外部に 「q0.swf」~「q14.swf」 という問題ムービー(15ファイル)を用意してください。
(試しですから,それぞれ 0 ~ 14 の数字が書いてあるだけのSWFファイルでもかまいません。)

そして,それをロードする親ムービーの方ですが,
「q0.swf」~「q14.swf」 と同じフォルダに用意するものとします。
まず,
それらの問題をロードするムービークリップを _root(メインムービーのステージ上)に用意してください。
用意のしかたですが,
白い一辺 5mm くらいの塗りを描いて,それをムービークリップに変換して,
ステージの左上の角くらいに配置します。
その場所が 「q0.swf」~「q14.swf」 の左上のコーナーが来る位置になります。
そしてそのムービークリップに 「qMC」 というインスタンス名を付けてください。

そして,同じく _root に問題を次々に読み込ませるボタン(ボタンシンボル)を作成してください。
ここまでできたら やっと,ActionScript がやっと書ける状態です。


以下スクリプト例ですが,
説明の為にも,スクリプトは徐々に進化させます。
実際にプログラミングするにはこのような手順を踏むという説明にもなると思います。



◎ 読み込み実験

上の状況がちゃんとできているかどうか,とりあえず動作検証をします。

ボタンに次のようなスクリプトを書きます。

---_root に置いたボタンのスクリプト--------------
on (release) {
// 「qMC」 に 「q0.swf」 をロード
_root.qMC.loadMovie("q0.swf");
}
-----------------------------------------


ステージ上に,「q0.swf」が無事表示されたら成功です。
読み込まれなければ,「インスタンス名」や「ファイル名」や「パス」を点検します。
一応読み込まれる問題の 「q0.swf」~「q14.swf」 の方が,
親ムービーよりも小さいという想定をしています。
問題によってボタンが隠れたりするようでしたら,
「qMC」 の位置や大きさを調節してください。

次にランダム関数です。



◎ ランダムに問題を表示させる

---_root に置いたボタンのスクリプト--------------
on (release) {
// 変数qNum に0~14(15個)のうちいずれかの数を代入
qNum = Math.floor(Math.random()*15);
// 「qMC」 に 「q?.swf」 をロード
_root.qMC.loadMovie("q"+qNum+".swf");
}
------------------------------------------

詳細はこのあたりを参考にしてください↓。
---Flash TechNote---
「Math.random() でランダムな整数を取得する方法」
http://www.adobe.com/jp/support/flash/ts/documents/fl0173.html

実際にやってみるとわかりますが,
上のスクリプトだとボタンをクリックする度に永遠に問題が表示されます。
>> 8つの問題を抽出して取り扱う
ができていません。
つぎに8問に制限をします。



◎ ランダムに8つの問題を表示させる

---フレーム1のスクリプト------------------------
// 変数k の初期値を設定
k = 1;
------------------------------------------

---_root に置いたボタンのスクリプト--------------
on (release) {
// もし k が 8 以下であれば
if (k<=8) {
// 変数qNum に0~14(15個)のうちいずれかの数を代入
qNum = Math.floor(Math.random()*15);
// 「qMC」 に 「q?.swf」 をロード
_root.qMC.loadMovie("q"+qNum+".swf");
// k に 1 を加算する
k++;
} else {
// ←問題終了時の動作を書く
}
}
------------------------------------------

フレームに 変数 k というもの(カウンター的役割)を用意して,
ボタンがクリックさせる度にその k の値を +1 するようにしています。
k が 8 になるまで,ランダムな問題を出題します。
「// ←問題終了時の動作を書く」
の部分は,こちらではどうするのかわかりませんから考えてください。

だいたい,普通の方ならここぐらいまではできるのではないかと思います。
最初に,

 どこまで考えて,どこで行き詰まったのでしょうか?
 そこが大切なポイントです。

と書いたのは,
ここら辺まではうまくできたのだけど,
この先で詰まったのかなと思ったのが,書いた理由の1つです。

上のスクリプトには大きな欠陥があります。
単に 15問 なら 15問 の中からランダムに問題を抽出しているので,
「q1.swf」→「q8.swf」→「q1.swf」→「q1.swf」→「q13.swf」…
とロードされる可能性もあります。
つまり何度でも同じ問題が出題される可能性があります。
単語カードのようなものでしたら,むしろこのままの方が良いような気もします。
しかし,ちゃんとした問題だとこれではまずいと思うので,
何度でも同じ問題が出題されない方法を考えねばなりません。

数学に強い人なら,
この点はすぐにクリアされるのでしょうけど,私はすぐにはクリアできませんでした。
数年前にここで詰まって,趣味で作っていたものですが,それを一度あきらめたことがあります。
でも,その1ヶ月後くらいに,
思わぬところで思わぬもの(Excelファイル)に出会えたので,
スルッとクリアすることができました。
詳細はこちらに書いています↓。

「質問:長方形がランダムに消えるやつ」
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2070264
  ↑教えて!goo  ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=2070264

上のURLには,
以下のようなスクリプトが書いてあります(インデントを付けました)。

 //---重複を許さない順列の作成---//
 // randArrという配列を作成
 randArr = new Array();
 // randArrの1~nの要素(エレメント)に乱数を取得
 for (i=0; i<n; i++) {
   randArr[i] = Math.random();
 }
 // permArrという配列を作成
 permArr = new Array();
 // permArrの要素を初期化
 for (i=0; i<n; i++) {
  permArr[i] = 0;
 }
 // randArr の各要素に入った数の
 // 大きさの順を permArr の要素に並べる
 for (j=0; j<n; j++) {
   for (i=0; i<n; i++) {
     if (randArr[j]>=randArr[i]) {
      permArr[j] += 1;
     }
   }
 }

これを使います。



◎ ランダムに8つの問題を重複せずに表示させる

---フレーム1のスクリプト------------------------
// 全問題数を設定(可変)
n = 15;
// 抽出問題数の設定(可変)
kMax = 8;
// k の初期値を設定
k = 1;
//---重複を許さない順列の作成---//
// randArrという配列を作成
randArr = new Array();
// randArrの1~nの要素(エレメント)に乱数を取得
for (i=0; i<n; i++) {
randArr[i] = Math.random();
}
// permArrという配列を作成
permArr = new Array();
// permArrの要素を初期化
for (i=0; i<n; i++) {
permArr[i] = 0;
}
// randArr の各要素に入った数の
// 大きさの順を permArr の要素に並べる
for (j=0; j<n; j++) {
for (i=0; i<n; i++) {
if (randArr[j]>=randArr[i]) {
permArr[j] += 1;
}
}
}
-----------------------------------------

---_root に置いたボタンのスクリプト--------------
on (release) {
// もし k1 が kMax 以下であれば
if (k<=kMax) {
// 「qMC」 に 「q?.swf」 をロード
_root.qMC.loadMovie("q"+(permArr[k]-1)+".swf");
// k に 1 を加算する
k++;
} else {
// ←問題終了時の動作を書く
}
}
-----------------------------------------

最初にこのスクリプトを出しても,
全然意味がわからないと思うので,
順を追ってスクリプトを進化させる説明方法を取りました。
最後に出しても意味がわからないかもしれませんが,
なぜこんなに複雑なスクリプトになるのかという理由と,
開発手順は理解しやすいと思います。
重複を許さない順列の作成 方法はまだ他にもあります。
もっと質の良い重複しない順列を,もっと簡素なコードにする方法を考えてみるのも面白いと思います。



以上のような具合に,
1要素1要素,確実に片付けて行ってください。
そして,どの要素がわからないのかを自分で突き止めてください。
そうでないと,書かれているような問題出題マシーンはできません。

それと,
loadMovie の方を選んだのは,gotoAndStop よりお薦めだからです。
問題が増えた場合,もしくは問題を入れ替えたい場合に,
loadMovie の方がメンテナンスがしやすいです。
上に書いた,変える部分(変わる可能性がある部分)

 ---フレーム1のスクリプト---------------------
 // 全問題数を設定(可変)
 n = 15;
 // 抽出問題数の設定(可変)
 kMax = 8;

は,一応ここに固めていますが,
フレームに問題数設定を用意しておくのではなく,
外部テキストファイルに用意しておいて,それを親ムービーから読み込む形にすれば,
親ムービーを触ることなく,問題追加や問題数変更ができます。
簡単に言うと「出題システム」と「問題データ」と「システム管理データ」とを分ける形です。
そういう形をとると,
国語問題,理科問題,算数問題など色々な問題に対して
システムを変えることなく,ひたすら問題データファイルを作成し続けられます。
効率的です。

問題出題システムというのは,少し大きなものであれば,
Flash に限らずたいていそういう形でできています。
またそうしておくと,
データ作成屋さん(クイズの専門家)とシステム開発屋さん(プログラミングの専門家)に分業することもできます。
(実は私の本職は Flash とは少ししか関係がない,問題データ作成屋さんだったりします。)

どこまで考えて,どこで行き詰まったのでしょうか?
そこが大切なポイントです。

書かれていることは,複数の要素を組み合わせて実現していくことです。
1つ1つの要素を作っていって,詰まった部分を明白にしないと,自力では先に進めません。
また,質問としても少し要素が多いです一応1つの例を挙げるという形のものでしたら回答可能ですが,
回答できるギリギリの範囲です。

説明の都合上,最後から説明します。

ほとんど明白にわかるところは,
普通に考えると,

>> クイズの問題を外部sw...続きを読む

QFLASH等を使ってホームページをかっこよくインパクトあるものにしたいです

パソコンにあまり詳しくないのですが、フラッシュを使ってかっこよくしたいです。初心者でもわかりそうなオススメのサイトや参考書があれば教えてください。よろしくお願いします。

Aベストアンサー

とりあえず,サイトや書籍の前に,Flash作成ソフトが必要です。
そのソフトによって参考書籍やサイトも変わります。

当たり前と言えば当たり前の定番ソフトですが,
macromedia の Flash Basic 8 か
http://www.macromedia.com/jp/software/flash/basic/
Flash Professional 8 をお薦めします。
http://www.macromedia.com/jp/software/flash/flashpro/

その macromedia の Flash を使われる前提であるとすると,
http://www.macromedia.com/jp/support/books/#03
で紹介されている書籍はどれも参考になるとは思いますが,中でも

まつむらまきお・たなかまり 著 / 毎日コミュニケーションズ
おしえて!!Flash シリーズ
http://www.makion.net/

が最初は最適だと思います。
しかし,最新バージョン,Flash 8 用はまだ出ていないようなので,
出るまでしばらく待つ方が良いかもしれません。
他の書籍もまだ Flash 8 に関しては出そろっていない状態です。

サイトでは最近,
「FLASHの枝」
http://www.1art.jp/
がなかなか良いとは思います。

しかし,絶対に最初はサイトではなく書籍が良いです。
macromedia の Flash に関しては同様のご質問が多いので,
ここにまとめてみました↓。
よろしければ参考にしてみてください。
http://oshiete1.goo.ne.jp/kotaeru.php3?q=1852809
 ↑教えて!goo  ↓OKWave (同じです)
http://okwave.jp/kotaeru.php3?q=1852809

とりあえず,サイトや書籍の前に,Flash作成ソフトが必要です。
そのソフトによって参考書籍やサイトも変わります。

当たり前と言えば当たり前の定番ソフトですが,
macromedia の Flash Basic 8 か
http://www.macromedia.com/jp/software/flash/basic/
Flash Professional 8 をお薦めします。
http://www.macromedia.com/jp/software/flash/flashpro/

その macromedia の Flash を使われる前提であるとすると,
http://www.macromedia.com/jp/support/books/#03
で紹介されている書籍はどれも参考...続きを読む

QFLASHで、スクリプトによるシーンの切り替え

基本で申し訳ないです。
シーン1からシーン2に移り変わるようにするには
どういう指定をしたら良かったのか・・・
すみません、初歩的なんですけど、教えてください。
上手くいかなくて困っています。

Aベストアンサー

その「シーン 1」とか「シーン 2」とか言う物が,
勝手に定義したシーンではなく,
「挿入」→「シーン」から作ったちゃんとしたシーンであれば,

gotoAndPlay("シーン 2", 1);

で「シーン 2」 に行きます。
構文は,
gotoAndPlay("シーン名", フレーム数);
です。

ボタンに書くスクリプトでしたら,

on (release) {
gotoAndPlay("シーン 2", 1);
}

となります。
この「挿入」→「シーン」から作ったシーンですが,
シーンは全角カタカナ
そのあとに半角スペースが入って
半角の2になります。
ややこしければ上のをコピーしてください。

その他色々参考URL↓。
「シーン利用時の注意点」
http://homepage3.nifty.com/ginga-b/MX/scene.html
「ボタンを使ったコンテンツメニューを作る」
http://www.archi.ta.chiba-u.jp/content/campus/cad/flash/man/07_menu04.html

その「シーン 1」とか「シーン 2」とか言う物が,
勝手に定義したシーンではなく,
「挿入」→「シーン」から作ったちゃんとしたシーンであれば,

gotoAndPlay("シーン 2", 1);

で「シーン 2」 に行きます。
構文は,
gotoAndPlay("シーン名", フレーム数);
です。

ボタンに書くスクリプトでしたら,

on (release) {
gotoAndPlay("シーン 2", 1);
}

となります。
この「挿入」→「シーン」から作ったシーンですが,
シーンは全角カタカナ
そのあとに半角スペースが入って
半角の2にな...続きを読む

Q拡張子「swf」の再生方法について

○○○.swfというファイルをもらったのですが、再生できません。

ネットで調べてみると、Adobe Flash Playerで再生できるとあったので、インストールしてみたのですが、パソコン内にAdobe Flash Playerが見つかりません。(インストール完了の表示は出ました。)

パソコンで再生できなかったので、スマホでSWFプレーヤーをインストールしてみたのですが、再生できませんでした。

パソコン・スマホどちらでもいいのでswfファイルを再生できる方法を教えてください。

Aベストアンサー

Adobe Flash Playerは極端に言うと「再生するための設定」なので、インストールしたからと言ってそこらにあるFLVやSWFは再生はできないのです。
SWF対応のソフトでは、簡単で確実そうなのはGOM PLAYERだと思います。
http://www.gomplayer.jp/


人気Q&Aランキング