ポンクソフト

イライラ棒もどき - Flash(ActionScript)で様々なゲームを作ろう

前ページ Flash(ActionScript)で様々なゲームを作ろう TOP 次ページ

目次

  1. Flash(ActionScript)で様々なゲームを作ろう
  2. イライラ棒もどき
  3. 忍者アクション
  4. ブロック崩し
  5. リアルタイム・オセロ
  6. パットゴルフ

実行画面

「START」をクリックするとゲームが始まります。マウスで自キャラクタを動かしてコースから外れないように「GOAL」に辿り着くまでの時間を競います。ちなみに私の最高記録は「1.26sec」です。

.fla ファイルダウンロード

今回のポイント

画面作成

まずステージ・ステージに乗せるシンボルなどを作って行きます。

ステージのプロパティ

最初にステージのプロパティを適当に設定します。この解説で使っているムービーでは、サイズを「320×240」、背景色を「#FFDFBB」、フレームレートを「30fps」としています。

コースの作成

次にコースを作成します。スタートとゴールが分かるように画面一杯に描いてください。コースの内部は背景色が見えるように作成してください(つまり、何も塗らない)。
iraira_maze.gif
完成したらシンボルに変換して適当な名前でムービークリップにし、ステージ上のインスタンスに「maze_mc」と名前を付けます。

「START」「GOAL」の作成

次に「START」「GOAL」の画像をコースのスタートとゴール地点にぴったり被せるように作成してください。Flash のグリッド機能などを使うと便利です。
iraira_sandg.gif
完成したら両方ともシンボルに変換して適当な名前でムービークリップにし、ステージ上の「GOAL」インスタンスに「goal_mc」と名前を付けます。「START」のインスタンスは名前を付けなくても構いません。

自キャラクタの作成

次に自キャラクタを描いて、「START」インスタンスの中央に乗せます。
iraira_jiki.gif
シンボルに変換して適当な名前でムービークリップにし、ステージ上のインスタンスに「jiki_mc」と名前を付けます。

2フレーム目作成

次に2フレーム目にゲームオーバー画面を描きます。2フレーム目にキーフレームを挿入し、画面一杯を覆い尽くす以下のようなボタンを作成します(シンボルに変換から、ボタンを選ぶ)。
iraira_crash.gif

3フレーム目作成

次に3フレーム目にクリア画面を描きます。3フレーム目にキーフレームを挿入し、画面一杯を覆い尽くすボタンを作成します(シンボルに変換から、ボタンを選ぶ)。その後、テキストツールで適当に枠を作り、プロパティで「ダイナミックテキスト」に変えて、「選択可能」のチェックを外し、「変数」の項目に「time」と書きます。選択可能にしておくと、テキストが選択できるようになって、その部分だけボタンとして機能しなくなってしまいます。
iraira_clear.gif

ActionScript の記述

フレームやムービークリップに ActionScript を記述して行きます。

1フレーム目のアクション

1フレーム目をクリックして、以下のアクションを記述します。
var timer;
stop();
timerはスタートしてからの開始時間がミリ秒で入る変数です。
stopメソッドによってゲームオーバー・ゲームクリア画面に移行しないようにします。

「START」インスタンスのアクション

「START」インスタンスをクリックして以下のアクションを記述します。
on (release) {
  _visible = false;
  _root.jiki_mc._visible = true;
  Mouse.hide();
  _root.timer = getTimer();
}
「START」をクリックしたときにゲームを開始します。まず「START」を見えなくし、自機を見えるようにして、マウスカーソルを消します。その後、変数timerにゲーム開始時間を代入しています。getTimerはムービーの再生が開始してから経過した時間をミリ秒で返す関数です。

自キャラクタのアクション

自キャラクタをクリックして以下のアクションを記述します。
onClipEvent (load) {
  _visible = false;
}
onClipEvent (enterFrame) {
  if (!_visible) return;
  _x = _root._xmouse;
  _y = _root._ymouse;
  if (_root.maze_mc.hitTest(_x, _y, true)) {
    Mouse.show();
    _root.gotoAndStop(2);
  }
  if (_root.goal_mc.hitTest(_x, _y, true)) {
    Mouse.show();
    _root.gotoAndStop(3);
  }
}
まずゲーム開始時には自キャラクタを消しておきます。「START」インスタンスをクリックすると自キャラクタが見えるようになります。

enterFrame イベントでは、まず自キャラクタが表示されていなければゲームが始まっていないので何もせずに戻ります。表示されていれば、自キャラクタの座標をマウスの座標と等しくしています。

その後、コースとの当たり判定を行っています。hitTest 関数には2通りの書き方があります。
mc1.hitTest(mc2);
この書き方はムービークリップ mc1 と mc2 の当たり判定を行います。ムービークリップを囲う矩形によって当たり判定を行うので、以下のような状態では実際に当たっていなくても true を返します。
iraira_hit1.gif
mc.hitTest(x, y, shapeFlag);
こちらの書き方で shapeFlag に true を設定すると、座標 (x, y) の点がムービークリップ mc に当たっていれば true を返します。色が塗られていない点では false を返します。今回はこちらの方法を使っています。

hitTest 関数によりコースの壁にぶつかっていたら、マウスを表示しゲームオーバー画面である2フレーム目にジャンプします。

次に、hitTest 関数により「GOAL」インスタンスに当たったら、マウスを表示しクリア画面である3フレーム目にジャンプします。

ゲームオーバーボタンのアクション

2フレーム目のボタンをクリックして以下のアクションを記述します。
on(release) {
  gotoAndPlay(1);
}
クリックされたらゲーム画面に戻ります。

3フレーム目のアクション

3フレーム目をクリックして、以下のアクションを記述します。
time = "Time: " + ((getTimer() - timer) / 1000) + "sec";
現在時刻からゲーム開始時刻を引き、1000で割ることによって、ゲーム開始からの経過時間を秒数で出し、画面上のダイナミックテキストに設定された変数timeに設定しています。

ゲームクリアボタンのアクション

3フレーム目のボタンをクリックして以下のアクションを記述します。
on(release) {
  gotoAndPlay(1);
}
クリックされたらゲーム画面に戻ります。

実行

以上が完成したら保存してゲームを実行してみてください。
前ページ Flash(ActionScript)で様々なゲームを作ろう TOP 次ページ
このエントリーをはてなブックマークに追加 そっか0

このページに関するコメントをどうぞ

お名前:


ポンポン
いままで、書いたのは、忍者。flaについてです。
解決しました。結局のところ、私のソフトは、挿入から新規シンボルを作る、シンボルに変換があるが、シンボルの変換のほうが効果ありでした。これで、スムーズのライブラリに入りました。(これがうまくいかなかった)ここから、リンケージを押して、解説のようになります。
今のとき、インスタンスを消します。ライブラリを広げると、書き出しTamaとかかれています。はじめて、なんとなく理解できました。ほかのゲームんもチャレンジしますね。仮想メモリは何のことだったのか?
2017/08/11 16:20

ポンポン
ライブリをあたると、Tamaのシンボルの図がないなぜ?インスタンスがドラグできない。疑問です。よろしく。
2017/08/10 20:17

ポンポン
目次を見ると、次の章にゲーム5個の作り方があった。downloadしたが、イライラ、gplfが形式があいません。なぜ?
ニンジヤ.flaに取り組んだ。問題が発生。手裏剣がとばない。そこで、メモリが不足したいる。flashの仮想メモリを増やしなさい?
c:、d:、をあけたが、だめ。仮想メモリを増やすのはどうするの。
手裏剣=temi_mcのようにインスタンス名をつけないの?
押してください。難しいね。
2017/08/10 18:13

ポンポン
このページの記事でゲームができた。
僕のflashmxは[flashムービのアイデア箱」の付録に30日限定のものでいした。ところで、7で動かしたいねですが、インストはするのでが、画面にアイコンまできます。しかし、これこれからはダメ。なんとかできないでしようか。いまうごいているのは、昔のwin-meなんです。Xpだったら動く?と思います。(先日、こわれた)
何で7は動かない?
質問でした。
2017/08/09 16:08

古羽嘉禎
ActionScript3.0出来ないな…
2016/12/05 17:33

naga3
お使いのFlashのバージョンと、
OSを教えてもらえませんか?
2013/05/25 08:50

dhipo2
度々すみません・・・
このページとは、
ゴルフゲームのページの一番上の事です。
よろしくお願いします。
2013/05/19 10:39

chipo2
このページの一番上の方の”実行画面”が、動かないのですが・・・
正確に言うと、矢印は動くのですが、
クリックしても、ボールが飛ばないのです・・・。
(ボールが飛んだような絵が一瞬出て、戻ってしまいます)
私のPCのフラッシュのバージョンが古いとかいった理由でしょうか・・・;;
すみませんが、教えてください。
2013/05/19 10:37

naga3
はいFlashないと出来ないです。
2013/04/24 08:08


何を当たり前のこと言ってるんですか?
2013/03/19 15:51

残りを読む »