1136: неверное количество аргументов. Ожидаемый 1 - PullRequest
1 голос
/ 01 апреля 2011

У меня есть функция, которая добавляет элемент в случайное место в сетке (это делается при событии таймера), и в этой функции у меня есть проверка, которая проверяет, попал ли предмет в игрока. и если он это делает, то вызывает функцию. однако, это вызывает ошибку при повторном вызове этой функции. это может быть потому, что функция (событие: TimerEvent)?

ниже находится функция

 private function placeFood(event:TimerEvent = null):void{   
        var rndI:uint = Math.floor(Math.random() * DIM);  //sets a random integer based on the the floor
        var rndJ:uint = Math.floor(Math.random() * DIM);

        var rndX:Number = grid[rndI][rndJ].x; // sets a grid position for the food item to go
        var rndY:Number = grid[rndI][rndJ].y;

        if(_foodMap[int(rndX)] == null){
         _foodMap[rndX] = [];
        }

        if(_foodMap[int(rndX)][int(rndY)] == null){
         _foodMap[rndX][rndY] = food;
        }




        food = makeItem(Math.random() * 0xFFFFFF);// random color
        food.x = rndX;
        food.y = rndY;


        addChild(food); //adds the food to the board


        for (var i:uint = 0; i < snake.length; i++){
            if (rndY == snake[i].y && rndX == snake[i].x){ 
                placeFood();
            }
        } 
        }

Ответы [ 3 ]

2 голосов
/ 01 апреля 2011

Если вы вызываете функцию вручную без TimerEvent, которого ожидает функция, вы получите ошибку. Таким образом, вы должны определить, что значение параметра по умолчанию равно нулю:

private function placeFood(event:TimerEvent = null):void {
    //code
}

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

private var _foodMap:Array = [];

Затем в том месте, где вы добавляете еду, добавьте ее на карту еды, как я сделал ниже, чтобы вы могли проверить, пусто ли место, где находится голова змеи.

if(_foodMap[int(rndX)] == null){
    _foodMap[rndX] = [];
}

if(_foodMap[int(rndX)][int(rndY)] == null){
    _foodMap[rndX][rndY] = food;
}

Тогда, если оба _foodMap[int(snakesHeadX)] == null и _foodMap[int(snakesHeadX)][int(snakesHeadY)] == null, это означает, что местоположение головы змеи пусто.

1 голос
/ 01 апреля 2011

Если вы предоставляете функцию слушателю события, тогда определение должно соответствовать ожидаемому слушателю.

Это:

private function placeFood(event:TimerEvent):void{

Будет соответствовать TIMER_EVENT, но нет других событий.

Если вы хотите, чтобы другие события вызывали этот прослушиватель, измените его на:

private function placeFood(event:Event):void{   
0 голосов
/ 11 мая 2013

Использовать placeFood (Event); это с большой буквы E.

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