プロが教えるわが家の防犯対策術!

ゲットした4つの色違いの玉を、壁の穴に当てはめて、
並び順が正解なら脱出。。!というシーンを作りたいのですが、
アクションスプリクトの本を探してもなかなか見つからず
試行錯誤を繰り返してはエラーになっています
どなたか教えてください(_)

onclip movie(EnterFlame)と
if、else if、elseを使って、なんとかできそうな気がしたんですが。。
其の場合、同じ色の玉がいくつも表示されたり、クリックしても反応しなくなりました

製作環境は、FLASH CS3のアクションスプリクト2.0です

A 回答 (1件)

構造物の作成を,


ココのようなテキストでしか回答できないところでは,
説明がほとんどできないので,
ちゃんと回答はできませんがアドバイス程度のものとして回答します。


> ゲットした4つの色違いの玉を、壁の穴に当てはめて、
> 並び順が正解なら脱出。。!

「玉を、壁の穴に当てはめる」という部分の意味がよくわかりません。
玉をドラッグして所定の位置にドロップ(つまりドラッグ&ドロップ)するということでしょうか?
壁の穴をクリックしたら,その穴に順に置いた玉が順次移動するということでしようか?
他にボタンがあって「赤1」ボタンをクリックすると赤玉が1の穴に移動するということでしょうか?
色々な意味にとれるのでよくわかりません。

しかし,
「並び順が正解なら脱出。。!」の判定をするタイミングは,
上の壁に当てはめる3つ場合のすべてが,
何かから「マウスアップしたとき」です。
つまり玉なり穴なり他のボタンを 「クリックしたとき」 ということになります。
したがって,判定をするタイミングは,
on(release){} もしくは,
○○.onRelease = function(){}; もしくは,
onClipEvent(mouseUp){} もしくは,
○○.onMouseUp = function() {}. のうちのどれかが
適当なイベントハンドラになると思います。

enterFrame系は,1フレーム進む時間ごとに毎回毎回実行されますから,
壁の穴に当てはまったかどうかを「ずっと随時監視し続ける」ということになり,
凄く無駄な処理を繰り返すことになります。
できなくは無いと思いますが,
こういう場合はできるだけ避けた方が良いです。
こういう無駄をしているとゲームがだんだん重くなってきます。


ちなみに,

> onclip movie(EnterFlame)と

そのようなスクリプトはありませんよ。
onClipEvent(enterFrame) もしくは
○○.onEnterFrame だと思います。



--------------------
1つの案ですが,
壁の穴の部分もムービークリップで作成して,
玉もムービークリップで作成して,
on(release){} もしくは,
○○.onRelease = function(){}; あたりで,
hitTest判定をするのが良いのではないかと思います。

Flashゲーム講座&ASサンプル集【当たり判定について】
http://hakuhin.hp.infoseek.co.jp/main/as/hittest …

↑サンプルでは,
説明のために随時当たり判定をとっていますが,
これは説明をわかりやすくするためです。
シューティングゲームなどで,
弾と敵機の当たり判定を取る場合,
随時当たり判定をしなければならない場合もありますが,
このご質問の場合は,おそらく随時当たり判定をする必要はなく,
「何かをクリックしたとき」のみに当たり判定すれば良いと思います。
    • good
    • 0
この回答へのお礼

説明やら何やら不十分だらけの中
丁寧にご回答頂き、ありがとうございます(_)

「玉を、壁の穴に当てはめる」は
ゲットしたアイテムを選択後、
壁の穴をクリックしたら,その穴に順に置いた玉が順次移動するの意味です

参考にしたGotMailさんのサイトで(http://www.gotmail.jp/doc/easygame.html
ゲットしたアイテムのアクションスプリクトが
onClipEvent (enterFrame) {}とon (release) {}を使い
アイテム選択時、枠の表示・非表示の切り替えをしてしていたので
なんとか改造して四つの玉に応用できないかと考えていましたが
enterFrame系はやはり重くなるんですね。。

当たり判定も、シューティングゲームの項目だと思っていたので、目から鱗です
勉強しつつチャレンジしてみます(・∀・)

ありがとうございました!

お礼日時:2008/06/23 22:00

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