【问题标题】:1136: Incorrect number of arguments. Expected 11136:参数数量不正确。预计 1
【发布时间】:2011-04-01 10:59:21
【问题描述】:

我有一个函数可以将项目添加到网格的随机位置(这是在计时器事件中完成的),在这个函数中我有一个检查项目是否击中玩家。如果确实如此,它会调用该函数。但是,当我再次调用该函数时,它给了我错误。可能是因为函数是(event: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();
            }
        } 
        }

【问题讨论】:

  • 改变 placeFood();放置食物(事件);

标签: flash actionscript-3 timer


【解决方案1】:

如果您在没有函数期望的 TimerEvent 的情况下手动调用函数,您将收到错误。所以需要定义param的默认值为null:

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都存在则说明蛇头的位置是空的。

【讨论】:

  • 完美。干杯,你不知道我怎么编码,所以当物体(蛇撞到食物)时它会追踪一些东西?
  • @DIM3NSION,您需要知道如何追踪某物或如何为蛇撞到食物时的事件设置监听器?如果您需要跟踪某些内容,请使用trace("Tracing something..");。附:选择答案。 (:
  • 我将如何对监听器进行编码?当蛇撞到食物时?谢谢理查兹
  • @DIM3NSION,你有蛇撞击食物的代码吗?
  • 我有 - if (Math.floor(s.x) == Math.floor(food.x) && Math.floor(s.y) == Math.floor(food.y) ){ trace( "命中") } else if((tmr.currentCount % 3) > 0) { removeChild(snake[0]);蛇.shift(); } }。但这只是检查刚刚添加到舞台的食物对象而不是其他食物对象
【解决方案2】:

如果您向事件侦听器提供函数,则定义需要与侦听器的期望相匹配。

这个:

private function placeFood(event:TimerEvent):void{

将匹配 TIMER_EVENT,但不匹配其他事件。

如果您希望其他事件调用此侦听器,请将其更改为:

private function placeFood(event:Event):void{   

【讨论】:

    【解决方案3】:

    使用 placeFood(Event);那是大写的E。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 2018-02-20
      • 2016-04-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多