hitTestObject (AS3) Ошибка: доступ к неопределенному свойству - PullRequest
1 голос
/ 23 сентября 2010

В функции hitWall hitTestObject работает, когда игрок ударяет о стену.У меня есть стены на сцене вспышки, названная стена, wall2, wall3, wall4.Используя ту же концепцию, я разместил другие мувиклипы (деревья) и назвал их: tree1, tree2 и т. Д .... и т. Д.

wall.addEventListener(Event.ENTER_FRAME, hitWall);
tree.addEventListener(Event.ENTER_FRAME, hitTree);

// function hitWall --------------------------------------------------------------
    function hitWall(event:Event):void {
        if (player_ary[me].hitTestObject(wall)) {
                player_ary[me].y+=6;
            } else if (player_ary[me].hitTestObject(wall2)) {
                player_ary[me].y-=6;

            } else if (player_ary[me].hitTestObject(wall3)) { 
                player_ary[me].x+=6;

            } else if (player_ary[me].hitTestObject(wall4)) {
                player_ary[me].x-=6;
            }

    }

    // function hitWall --------------------------------------------------------------
    function hitTree(event:Event):void {
        if (player_ary[me].hitTestObject(tree)) {
                player_ary[me].y+=6;
            } else if (player_ary[me].hitTestObject(tree2)) {
                player_ary[me].y-=6;
            } else if (player_ary[me].hitTestObject(tree3)) { 
                player_ary[me].x+=6;
                    }
     }

Ответы [ 2 ]

1 голос
/ 23 сентября 2010

Ошибка указывает, что дерево MovieClip является нулевым, поэтому проблема не в этой части вашего кода.

Если дерево MovieClip предназначено для того, чтобы быть экземпляром дерева, добавленного на сцену, убедитесь, что экземпляр существует, прежде чем вызывать для него метод.

0 голосов
/ 23 сентября 2010

если проблема в том, что я думаю ...

проблема в том, что когда у вас есть класс или функция, определенная следующим образом ...

{
   var wall:Object = {name:"dodo"};
   wall.addEventListener(Event.ENTER_FRAME,doThis)
   function doThis(event:Event):void{
      trace (wall.name);
   }
}

стена фактически нулевая. вся функция вызывается вне контекста функции, в которой вы ее определяете.

вам нужно будет либо протестировать e.target (который будет возвращать объект стены, потому что там вы добавили прослушиватель событий), либо добавить еще один прослушиватель событий и использовать переменную класса (т.е. : целое)

это распространенная проблема, когда люди переходят с as2 на as3

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...