質問: "丸い穴があいている\nなにかはめるのかな?";} }
回答: 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 判定文を書いても良いでしょう。 そういう単純な意味です。