以前、http://oshiete1.goo.ne.jp/qa4121602.htmlで質問した者です
回答で教えて頂き、
ゲットした4つの玉(アイテム)を壁の穴に当てはめる
という動作が見事出来ました
同じ色の玉がいくつも表示されるエラーも無い状態です
しかし、『壁にはめた玉の順番が、正解なら脱出。。!』というアクションスプリクト
on(release){} もしくは,
○○.onRelease = function(){}; もしくは,
onClipEvent(mouseUp){} もしくは,
○○.onMouseUp = function() {}.
を使って、具体的にどのように書けばよいのか分かりません
何か、解釈を間違ったまま動作が出来ているような気もします
ややこしい質問ですいません。
分かる方いらっしゃいましたらお願いいたします(_)
現在、玉のMCを4つずつ(aka1~4、ao1~4、kiiro1~4、midori1~4)、壁の穴MCを4つ作り
「玉レイヤー」と「壁の穴レイヤー」を階層に分け、下記のアクションスプリクトを個々に入れています
・玉のムービークリップ
on (release) {
_root.aka1._visible=false;
_root.item1._alpha = 100;
_root.komento = "赤い玉をはずした";
itemNum = false;}
・壁の穴ムービークリップ
on (release) {
//変数itemで選択されているアイコンを判定
if (_root.item == "about1") {
//アイコンの選択枠をはずす
_root.item.gotoAndStop("nomal");
//アイコンにアルファをかけて使用済みに
_root.item1._alpha = 20;
//赤い玉1が表示されているとき、その他の赤玉は非表示にする
aka1._visible=true;
aka2._visible=false;
aka3._visible=false;
aka4._visible=false;
//コメントの表示
_root.komento = "赤い玉をはめた";
//アイテムの番号をクリア
_root.itemNum = false;}
else if (_root.item == "about2") {
//アイコンの選択枠をはずす
_root.item.gotoAndStop("nomal");
//アイコンにアルファをかけて使用済みに
_root.item2._alpha = 20;
//青い玉1が表示されているとき、その他の青玉は非表示にする
ao1._visible=true;
ao2._visible=false;
ao3._visible=false;
ao4._visible=false;
//コメントの表示
_root.komento = "青い玉をはめた";
//アイテムの番号をクリア
_root.itemNum = false;}
else if (_root.item == "about3") {
//アイコンの選択枠をはずす
_root.item.gotoAndStop("nomal");
//アイコンにアルファをかけて使用済みに
_root.item3._alpha = 20;
//黄色の玉1が表示されているとき、その他の黄色玉は非表示にする
kiiro1._visible=true;
kiiro2._visible=false;
kiiro3._visible=false;
kiiro4._visible=false;
//コメントの表示
_root.komento = "黄色の玉をはめた";
//アイテムの番号をクリア
_root.itemNum = false;}
else if (_root.item == "about4") {
//アイコンの選択枠をはずす
_root.item.gotoAndStop("nomal");
//アイコンにアルファをかけて使用済みに
_root.item4._alpha = 20;
//緑の玉1が表示されているとき、その他の緑玉は非表示にする
midori1._visible=true;
midori2._visible=false;
midori3._visible=false;
midori4._visible=false;
//コメントの表示
_root.komento = "緑の玉をはめた";
//アイテムの番号をクリア
_root.itemNum = false;}
else {_root.komento = "丸い穴があいている\nなにかはめるのかな?";}
}
No.1ベストアンサー
- 回答日時:
3時間くらい唸って考えましたし,
わかる範囲内で同様のようなものを作成したみましたが,
結局何を書かれていらっしゃるのかさっぱり理解できませんでした。
ムービーの構造どころかルールさえわかりません。
>ゲットした4つの玉(アイテム)を壁の穴に当てはめる
>という動作が見事出来ました
スクリプトを見る上では,「穴にあてはめる」=「その穴に順に置いた玉が順次移動する」という部分は全くみつかりません。移動はぜんぜんしていないように見えますよ。
--- --- --- --- --- ---
玉のムービークリップのスクリプトの最後の行,
> itemNum = false;}
これは
_root.itemNum = false;}
の間違いではないでしょうか?
また
書かれていらっしゃる玉のスクリプトはおそらく,
「aka1」に書かれたものだと思いますが,
1つしか例がないので,
「aka2」ではどこをどのように変えるのか,
また
「ao1」ではどこをどのように変えるのか,
という規則性がいまひとつわかりません。
一応 「aka2」 は次のようになるのではないかとは推測しました。
on (release) {
_root.aka2._visible = false;
_root.item2._alpha = 100;
_root.komento = "赤い玉をはずした";
_root.itemNum = false;
}
「ao1」 は次のようになるのではないかとは推測しました。
on (release) {
_root.ao1._visible = false;
_root.item1._alpha = 100;
_root.komento = "青い玉をはずした";
_root.itemNum = false;
}
一応推測はしましたが,
実際はどう変えるべきなのかわかりません。
--- --- --- --- --- ---
最難関が ,
if (_root.item == "about1")
など _root.item です。
_root.item にどこで about1 という値を代入しているのでしょうか?
わかりません。
また,アイコン(item?) などというものも突如出没していて,
玉 と 穴 と アイコン(item?) の関係がぜんぜんつかめません。
--- --- --- --- --- ---
根本的に,もっとわからないのは,
4個の穴に玉を当てはめるのに,なぜ玉が16個もあるかです。
16個あるにしても,
「赤」「青」「黄」「緑」「紫」「茶」「橙」…のように全く違う玉があるのなら理解ができます。
しかし4個で済むところを同じ色の玉を4つずつ用意している意味がわかりません。
たとえば
「赤」「青」「黄」「緑」 という順が正解であるとする場合,
「aka1」「ao4」「kiiro4」「midori3」 でも
「aka2」「ao1」「kiiro2」「midori2」 でも,
「aka4」「ao4」「kiiro1」「midori1」 でも,
… … 略 … …
これら全てが正解なのでしょうか?
もしそうだとするなら,
それらすべてが正解であるという判定をしなければなりませんよ。
だからそこを工夫する必要があると思います。
--- --- --- --- --- ---
あと気になった点を少し。
例えば 「ao1」「ao2」「ao3」「ao4」と連続でクリックした場合,
現状では「青」が全部消えてしまいますよ。
これでいいのでしょうか?
>「玉レイヤー」と「壁の穴レイヤー」を階層に分け
スクリプトを見る限り階層に分けているようには見えませんよ。
階層とはオブジェクトの階層構造のことを指します。
Flashの場合はムービークリップが1つの階層です。
ムービークリップの中にムービークリップを入れたりした場合に,
親階層とか子階層とか言います。
_root がそもそも1つの階層です。
「玉レイヤー」と「壁の穴レイヤー」の階層分けを本当にすると次のようにするということです(例)。
_root
├玉用ムービークリップ
│ ├aka1
│ ├aka2
│ ├aka3
│ …略…
│ └midori4
└穴用ムービークリップ
├穴1ムービークリップ
├穴2ムービークリップ
├穴3ムービークリップ
└穴4ムービークリップ
--- --- --- --- --- ---
★結局★
自分の中で日本語で明白にルールがあればそれをコーディングすれば良いだけです。
この日本語↑とは純粋日本語ではなくインスタンス名などの固有名称は含む意味での日本語です。
ご質問の文やスクリプトからは,
「何がどうなれば良いのか(何がどうなればゲームクリアなのか)」 がさっぱりわからないので,
こちらも根掘り葉掘りと細部を聞いているだけです。
補足してくださっても,
結局わからない可能性が多いので,その場合補足説明する労力は無駄になりますが,
それでもかまわない場合は,補足説明してください。
一番良いのは,
上で私が書いた様々な疑問に1つずつ答えてくださってもかまいませんが,
それより 「何がどうなったときゲームクリアなのか」 を補足説明していただく方が良いです。
「何がどうなったときゲームクリアなのか」 をご自分の中で明白にすると,
補足説明するまでもなく,ひょっとしたら自己解決するかもしれませんよ。
☆ちなみに☆
私が http://oshiete1.goo.ne.jp/qa4121602.html で書いたのは,
_root の上レイヤーに玉ムービークリップ「aka」「ao」「kiiro」「midori」 があったとして,
_root の下レイヤーに穴ムービークリップ「ana1」「ana2」「ana3」「ana4」があったとして,
「ana1 に aka が入る」
「ana2 に ao が入る」
「ana3 に kiiro が入る」
「ana4 に midori が入る」
これが正解の順序であるとした場合,
次のようにすればいいのではないかというような意味です。
------------------------------------
// このムービークリップ(またはボタン)を放したとき
on (release) {
// 赤が穴1と接触 なおかつ 青が穴2と接触 なおかつ
// 黄が穴3と接触 なおかつ 緑が穴4と接触 していたら
if (_root.aka.hitTest(_root.ana1)
&& _root.ao.hitTest(_root.ana2)
&& _root.kiiro.hitTest(_root.ana3)
&& _root.midori.hitTest(_root.ana4)) {
// 完了!を出力(実際は何か他の動作を書く)
trace("完了!");
}
}
------------------------------------
// このムービークリップ(またはボタン)を放したとき
の 「このムービークリップ」 とは,
「ana1」「ana2」「ana3」「ana4」でも良いですし,
「aka」「ao」「kiiro」「midori」 でも良いです。
何でも良いのです。
穴をクリックして玉を持ってくる形式でしたら,各穴に書くことになると思います。
各玉に
-------------------------
// このムービークリップを押したとき
on (press) {
// ドラッグ開始
this.startDrag();
}
// このムービークリップを放したとき
on (release, releaseOutside) {
// ドラッグ終了
this.stopDrag();
}
-------------------------
のように書いて,
穴に玉をドラック移動させる形式でしたら,
// ドラッグ終了
this.stopDrag();
のあとくらいに if文 を書くことになると思います。
また,穴でも玉でもない別の「判定!」ボタンなどを作成して,
そこに hitTest 判定文を書いても良いでしょう。
そういう単純な意味です。
この回答への補足
先ほど自己解決しました!!
else ifを使うのではなく、on(release)を新たに書いてHitTest文を追記することで、無事エンディング画面に飛びました
4つの玉をXYを使って移動させる動作も出来ています
丁寧に教えていただいたおかげです(・∀・)
ありがとうございました!
BlurFiltanさま
回答ありがとうございます
回答を頂いてからいじってみましたが、HitTestを入れてのスプリクトでも同じ玉が何個も表示されるエラーもなくなりました
(質問のアクションスプリクトはHitTestなしで作ったものです)
ゲームクリアは
たとえば左から順に赤・青・黄・緑と玉を入れると正解(正解の並び順番はひとつ)で
「エンディング画面へ飛ぶ」gotoAndPlay("ending")にしたいのですが、教えていただいた、
------------------------------------
// このムービークリップ(またはボタン)を放したとき
on (release) {
// 赤が穴1と接触 なおかつ 青が穴2と接触 なおかつ
// 黄が穴3と接触 なおかつ 緑が穴4と接触 していたら
if (_root.aka.hitTest(_root.ana1)
&& _root.ao.hitTest(_root.ana2)
&& _root.kiiro.hitTest(_root.ana3)
&& _root.midori.hitTest(_root.ana4)) {
// 完了!を出力(実際は何か他の動作を書く)
trace("完了!");
}
}
------------------------------------
を少し変更して、else ifとgotoAndPlay("ending")を使い、ana(1~4)に書き加えてみたのですが
エンディングに飛びませんでした。。
根本的に、玉が16個あるのもおかしいと思いつつ作っていましたが
玉のムービークリップを4つ複製すると、4つ同時に表示されたり、
ana1をクリック後ana2をクリックするとどちらにも表示されるなど、エラーになってしまいます
一つの玉ムービークリップを
↓
●○○○
↓
○●○○
このように移動させる簡単な方法があるのでしょうか?
X・Yを使うのはなんとなく分かるのですが、
どのように書けばよいでしょうか?
また、itemは画面右の小さいアイコンで
aboutは、itemの詳細画面のことです
お時間とらせてしまいすいません(;;)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
else if文の順序を変えることに...
-
python ボタンを押すと複数の関...
-
クリックされたインスタンス以...
-
tkinterからplt.plot()を呼びたい
-
photoshopで書いた四角の枠の中...
-
VBScriptでMsgBoxのYesNoボック...
-
テキストエリア内の文字列にリ...
-
変数に256文字以上のテキストを...
-
VBSでMid関数を使ったらエラー...
-
VB6.0で、フォームから、別のフ...
-
クラスのプロパティ一覧を列挙...
-
VBAからPDFのテキストフィールド
-
C# chart controlの透過について
-
XMLの読み込み
-
CreateDialogについて
-
ActionScript - 複数の空ムービ...
-
Flash8でサウンドが鳴りません
-
ボタンをクリックして画面遷移...
-
'2465'指定した式で参照してい...
-
setIntervalの解除方法について
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Pythonを使ってせん断応力図、...
-
python ボタンを押すと複数の関...
-
else if文の順序を変えることに...
-
SNMPの標準MIBについて
-
四乗根を英語で言うと・・・
-
ADに参加していないPCからADサ...
-
PythonでSetWindowPosを使うに...
-
pythonのグローバル変数
-
ゲージと連動したムービークリ...
-
レーダーチャートの描画
-
SharedObjectの動作がうまくい...
-
リンゲージの設定
-
loadMovie()を組み込んだswfフ...
-
100点でクリアする簡単なモグラ...
-
flashでURLからのデータ取得
-
StandardMLの二分木に関する問...
-
経過時間を計るには
-
グローバル変数の呼び出し
-
ムービークリップの拡大縮小
-
Excel VBAで読み込んだテキスト...
おすすめ情報