неверный счетчик аргументов в ActionScript - PullRequest
0 голосов
/ 14 января 2020

Я получаю эту ArgumentError: Ошибка # 1063: Несоответствие числа аргументов в Car (). Ожидаемый 1, получил 0. Я запутался, потому что я передаю staggerPosition в Car (). но он все еще говорит, что ожидает 1 аргумент. Если это не то, что означает ошибка, как я могу это исправить? Я дважды проверил все мои соединения.

...

package {
    import flash.display.*;
    import flash.events.*;

    public class cityAPP2 extends MovieClip {
        private var carList: Array;
        private var nCars: int = 16;

        public function cityApp2() {
            //TASK 1: ADD 16 CARS
            carList = new Array();
            var staggerPosition: int = 15;
            for (var i: int = 0; i < nCars; i++) {
                var car: Car = new Car(staggerPosition);
                staggerPosition += 20;
                car.x = car.mX;
                car.y = car.mY;
                addChild(car);
                carList.push(car);
            }

            //TASK 2: REGISTER A LISTENER EVENT
            addEventListener(Event.ENTER_FRAME, update);

        }
        public function update(event: Event) {
            for (var i: int = 0; i < nCars; i++) {
                carList[i].moveIt();
                carList[i].x = carList.mx;
            }
        }

    }

}

package {
    import flash.display.*;
    import flash.events.*;

    public class Car extends MovieClip {
        //DATA MEMBERS
        public var mX: int;
        public var mY: int;
        public var directionFactor: int;
        public var velocity: Number;
        public var endZone: int;

        public function Car(yPosition:int) {
            this.mY = yPosition;

            //TASK 1: COMPUTE THE DIRECTION
            this.directionFactor = (Math.floor(Math.random() * 2) == 0) ? -1 : 1;

            //TASK 2: SET THE SCALE, mX, mY, AND ENDZONE
            this.scaleX = this.directionFactor;
            if (this.directionFactor == -1) {
                this.endZone = 800;
            } else {
                this.endZone = -100;
            }
            this.mX = endZone;

            //TASK 3: SET THE VELOCITY TO RUN A RANDOM VALUE
            this.velocity = Math.floor(Math.random() * 15 + 2) * this.directionFactor;

        }

        public function moveIt(): void {
            //TASK 1: UPDATE THE X LOCATION OF THE CAR
            this.mX += this.velocity;
            trace(this.mX);

            // TASK 2: ROTATE THE WHEELS OF THE CAR


            //TASK 3: CHECK IF THE CAR HAS MOVED OFF THE SCREEN
            if (this.directionFactor == -1 && this.mX < -200 || this.directionFactor == 1 && this.mX > 850) {
                this.mX = endZone;
            }
        }
    }

}

...

1 Ответ

1 голос
/ 15 января 2020

Скорее всего, где-то на сцене есть экземпляр Car (не созданный в коде). Когда вы сделаете это, конструктор будет вызван без аргументов.

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

public function Car(yPosition:int = 0) { 
   ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...