0

hitBoxes配列内の 1 つのオブジェクトが配列内の 1 つのオブジェクトに一致するマッチング ゲームを作成しようとしていますhitBoxes2。インスタンス名を文字列に変換しようとしましたが、部分文字列メソッドを使用してインスタンス名の LAST 番号を一致させました。一致した場合は一致します。現在、エラーが発生しています

TypeError: エラー #1009: null オブジェクト参照のプロパティまたはメソッドにアクセスできません。MethodInfo-499() で

誰かが私を助けることができるかどうか疑問に思っています。ありがとう!

            var left:String;
            var correct:MovieClip = new Correct;
            var isClicked:Boolean = false;
            var leftClicked:int = 0;

            p3.nextPage.buttonMode = true;
            p3.nextPage.addEventListener(MouseEvent.CLICK, nextPage);

            function nextPage(MouseEvent):void{
                removeChild(p3);
            }

            var hitBoxes:Array = [p3.a1, p3.a2, p3.a3, p3.a4, p3.a5, p3.a6, p3.a7, p3.a8];
            var hitBoxes2:Array = [p3.b1, p3.b2, p3.b3, p3.b4, p3.b5, p3.b6, p3.b7, p3.b8];


            for (var h:int = 0; h < hitBoxes.length; h++){
                hitBoxes[h].buttonMode = true;
                hitBoxes[h].addEventListener(MouseEvent.CLICK, matchingLeft);
            }

            for (var h2:int = 0; h2 < hitBoxes2.length; h2++){
                hitBoxes2[h2].buttonMode = true;
                hitBoxes2[h2].addEventListener(MouseEvent.CLICK, matchingRight);
            }

            function matchingLeft(e:MouseEvent):void{
                var left = String(e.currentTarget.name);
                isClicked = true;
                trace(left);
            }

            function matchingRight(e:MouseEvent):void{
                var right:String = String(e.currentTarget.name);
                trace(right);
                if(isClicked == true && left.substring(3,3) == right.substring(3,3)){
                    trace("matched");
                }

            }
4

1 に答える 1

2

コードによると、matchingRightメソッドでは変数「left」はnullです。これは、matchingLeftが「left」という名前のローカル変数を使用し、最上位の「left」がデフォルト値のままであるためです。

また、String.substringメソッドが正しく使用されていません。

var name:String="p3.a1";
trace(name.substring(3, 3)); // this will always output empty string ""
trace(name.substring(4, 5)); // this will output "1" string

結論として、「一致した」条件を計算するときは、文字列の代わりに配列インデックス(整数)を使用することをお勧めします。サブ文字列操作と文字列比較はCPUに負荷がかかります。

于 2012-12-05T19:48:56.010 に答える