Search code examples
actionscript-3

why am I getting 1136: Incorrect number of arguments. Expected 0


Beginning issue: I am continuously getting an error 1136 at var timer:Timer=new Timer(10000,1);. I am not sure if its a computer error or what. I know you put (delay, and then time interval) for Timer, but it still gives me the error message.

update: I uploaded the whole code from the original post to see if anyone could find any errors. My Timers should be correct but I am still getting the error 1136 on my program and it won't even run. When I do take out the timers, the code works perfectly fine. Is there any other way to. implement a timer to make the game stop and say game over?

package  {

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.events.TimerEvent;
import flash.utils.Timer;
import flash.text.*; 

public class Duckhunt extends MovieClip 
{
    private var player1:Player;
    private var counter:Number;
    private var points:Number;
    private var cursor:Cursor;
    private var duckArmy:Vector.<Duck1>;
    private var duckArmy2:Vector.<Duck2>;
    private var duckCounter:Number;
    private var duckCounter2:Number;
    private var count:Number=10;
    private var timer:Timer;
    //var countDownDec:Number=1;
    //private var myTimer:Timer=new Timer(0,count);


    public function Duckhunt() 
    {
        //# constructor code

        // creates a new five-second Timer 
        var timer:Timer=new Timer(10000,1);

        //add event listner to timer
        timer.start();

        //starts the timer
        //myTimer.start();

        player1=new Player();
        player1.x = 375; player1.y = 400; addChild(player1);

        //cursor crosshair
        cursor= new Cursor();
        cursor.x = 400; cursor.y = 200; addChild(cursor);

        //add enemy
        duckArmy=new Vector.<Duck1>();

        for(var i:Number = 0; i < 30; i++)  
        {
            var duck:Duck1 = new Duck1(400,0);
            duckArmy.push(duck);
            duck.y = 450;
            stage.addChild(duck);
            duck.gotoAndPlay("fly");
            duck.addEventListener(MouseEvent.CLICK, hitEnemy);

        }//end duck1 army

        //add second second enemy
        duckArmy2=new Vector.<Duck2>();

        for(var j:Number=0;j<30;j++)
        {
            var duck2:Duck2 = new Duck2(0,400);
            duckArmy2.push(duck2);
            duck2.x = -900;
            stage.addChild(duck2);
            duck2.gotoAndPlay("fly");
            duck2.addEventListener(MouseEvent.CLICK, hitEnemy);
        }//end duck2 army

        duckCounter = duckCounter2 =counter = points = 0;
        addEventListener(Event.ENTER_FRAME, frameMovement);

    }//end constructor


}//end class


}//end package

Solution

  • If you've declared your :Timer object as a public or private variable:

    private var timer:Timer;
    

    There's no need for declaring yet another new variable (with same name) in later functions;

    var timer:Timer=new Timer(10000,1); //creates a new 2nd var.. causes error..
    timer.start();
    

    Shoud be:

    timer = new Timer (10000,1); //uses existing private var
    timer.start();
    

    Also note:

    That timer variable name is too similar to the Timer datatype name, consider changing the name's spelling to avoid "clashing" with built-in system names. Never do var int :int = 0;.

    Try naming as _timer :Timer; or even myTimer :Timer;