1136: неверное количество аргументов. Ожидаемый 0 - PullRequest
0 голосов
/ 19 января 2010

Я задаю этот вопрос снова и снова, и у меня нет ответа.Это сводит меня с ума всегда, я получаю это.Иногда это работает, а иногда нет.Когда я передаю объект через конструктор, он выдает мне сообщение об ошибке.Поэтому мне всегда приходилось делать второй метод, чтобы заставить его работать.Вот мой код, если кто-нибудь может помочь мне

var ds = new desertStorm(ship);

Над объектом, который я вызываю, и ниже класс.

package com.objects{

    import flash.display.MovieClip

    public class desertStorm extends Stinger {

        private var turret1:Torret;
        private var swap:Boolean = false;
        private var target:Avatar;
        public function desertStorm(target:Object):void
        {
            this.target = target;
            health = 2;
            turret1 = new Torret();
            eApi.addGameChild(turret1);
        }

        override public function updateObject():void
        {
            if(!swap)
            {
                eApi.swapGameChildren(this, turret1);
                swap = true;
            }
            y += cspeed;
            turret1.x = x;
            turret1.y = (y + 40);
        }
    }
}

, если кто-то может мне помочь, это было бы здорово

Ответы [ 7 ]

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

Я столкнулся с той же ошибкой.В моем сценарии у меня был класс в подпапке с именем кнопки.Я соответствующим образом изменил оператор пакета (чтобы включить путь к папке) и правильно использовал оператор импорта в классе, который создавал класс в папке кнопок.Класс, который был в папке кнопок, был прикреплен к мувиклипу в библиотеке fla.

Это была моя проблема.Для мувиклипа в библиотеке (из fla) мне пришлось изменить поле Свойства символа> Имя класса, чтобы включить путь к папке.

Мой класс называется MakeButton.as и находится в папке с именем кнопки.Следовательно, я изменил символ в библиотеке следующим образом: buttons.MakeButton, где button - это подпапка, в которой находится MakeButton.as. FL, класс документа и другие классы находятся в папке над папкой кнопок.

0 голосов
/ 07 июля 2011

Вот простая версия некоторых из существующих ответов:

Убедитесь, что имя связи / Путь к классу в Свойствах символа содержит полный путь к пакету вашего класса.

Например, если ваш пакет com.company.project, а ваш класс - MyClass, строка в поле «Класс» в свойствах символа должна выглядеть следующим образом:

com.company.project.MyClass

Если в этом поле только MyClassFlash создает для вас определение класса, а не то, которое вы кодировали, поэтому не имеет параметров конструктора и выдает ошибку «Ожидаемый 0».

0 голосов
/ 02 апреля 2010

Я обнаружил, что если вы случайно поместите файл класса и fla-файл в разные папки, появится сообщение об ошибке 1136. Убедитесь, что файл класса найден в fla-файле.

0 голосов
/ 01 февраля 2010

Оказывается, проблема в пользовательских классах, которые прикреплены к мувиклипам в библиотеке. По какой-то причине вы не можете передать аргументы классам, к которым прикреплены мувиклипы из библиотеки. Не веришь мне? попробуй !!!

И ммм, для тех, кто дал мне негатив, попробуйте это

package {

    import flash.display.MovieClip;

    public class Main extends MovieClip
    {
        public function Main():void
        {
            var test:Block = new Block("test");
        }
    }
}

добавить следующее

package com {

    import flash.display.MovieClip;

    public class Block extends MovieClip
    {
        public function Block(test:String):void
        {
            trace(test);
        }
    }
}

Затем создайте видеоклип блока и прикрепите его к блоку. убедитесь, что поместили блок в папку com При этом вы получите следующее

1136: Incorrect number of arguments.  Expected 0.

Если вы поместите Block в корневую папку с файлом fla, он должен работать нормально.

0 голосов
/ 19 января 2010

Обновленный ответ: #

Этот список ошибок компилятора говорит:

Вы должны явно вызывать конструктор базового класса с помощью оператора super (), если он имеет 1 или более обязательных аргументов.

Учитывая вашу ошибку (1203: No default constructor found in base class com.objects:desertStorm.), похоже, что вы расширяете desertStorm где-то и вам нужно вызвать функцию super() с соответствующим параметром.

Этот простой пример, приведенный ниже, потерпит неудачу с этой ошибкой компилятора: 1203: No default constructor found in base class Class1.

Указывает, что проблема в классе, который распространяется Class1.

Итак, найдите, куда бы вы ни расширяли desertStorm, и вызовите правильный супер-конструктор.

Пример: * * тысяча двадцать-пять package { import flash.display.MovieClip; public class Class1 extends MovieClip { public function Class1(property:String) { super(); } } } package { import flash.display.MovieClip; public class Class2 extends Class1 { public function Class2() { // You need to call the super constructor here. // super("Work!"); } } } Оригинальный ответ: Если я удаляю ship из параметра и сохраняю публичную функцию desertStorm (цель: Object): недействительная. это ошибка, которую я получаю ....
'1203: не найден конструктор по умолчанию в базовом классе com.objects: desertStorm.'
Я не уверен, что это значит, но, похоже, у меня нет конструктора, когда я делаю Пока у вас есть конструктор, у вас нет конструктора по умолчанию . Если вы создали какие-либо экземпляры desertStorm путем перетаскивания их из библиотеки на сцену, тогда вы должны определить конструктор по умолчанию, например: public function desertStorm():void { super(); // Do simple initialisation behaviour here. } Это потому, что Flash не знает, как создать экземпляр вашего класса, если у него есть собственный конструктор - как он может это сделать? Вместо этого переместите другое поведение в функцию инициализации, которая знает все о вашем target объекте: public function init(target:Object) { this.target = target; health = 2; turret1 = new Torret(); eApi.addGameChild(turret1); } Тогда вы можете просто создать его экземпляр так: var ds = new desertStorm(); ds.init(ship); // Do whatever else you need to do with your desertStorm object, e.g.: addChild(ds);

0 голосов
/ 19 января 2010

Попробуйте добавить следующую строку в ваш конструктор:

super();

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

Это всего лишь догадка; Я не могу вспомнить правила для конструкторов в ActionScript 3.

РЕДАКТИРОВАТЬ: Кажется, Габриэль Макадамс придумал это до меня, но я не видел его комментарий вовремя.

0 голосов
/ 19 января 2010

Ошибка, которую вы видите в этой строке:

eApi.addGameChild(turret1);

Я бы посмотрел на объект eApi и выяснил, принимает ли addGameChild какие-либо параметры.

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