Как запустить код конструктора другого файла .as из файла класса main.as, прикрепленного к файлу .fla? - PullRequest
0 голосов
/ 04 сентября 2018

У меня есть файл основного класса с именем 'Main', который связан с основным файлом .fla. Вот код в настоящее время в этом файле:

package  {

import flash.display.MovieClip;
import CharacterPkg.Character;

public class Main extends MovieClip {

    public function Main() {

        var newCharacter:Character = new Character;
        Character();
    }
  }
}

Затем у меня есть файл, который я хочу использовать для создания персонажа на главной сцене в файле .fla. Вот код для этого файла:

package  CharacterPkg{

import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;

public class Character extends MovieClip {

    public function Character() {

        trace("This is running");
    }
  }
}

Я хочу, чтобы код конструктора из файла Character.as запускался при запуске .swf. Но я просто получаю 1136 Ошибка: неверное количество аргументов Ожидаемый 1.

Я в тупике и провел два дня, пытаясь понять это. Я довольно новичок в этом и, возможно, просто делаю какую-то глупую ошибку, но я не могу понять это. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 04 сентября 2018

Попробуйте как:

package  
{
    import flash.display.MovieClip;
    import CharacterPkg.Character;

    public class Main extends MovieClip 
    {

        public function Main() 
        {
            //Character(); //is not needed (won't work).

            var newCharacter :Character = new Character();
            addChild( newCharacter ); //this way auto-runs the constructor function code.
            //newCharacter.someFunction(); //example to run any other functions within newCharacter class.
        }

    }
}

Когда вы addChild класс, вы автоматически запускаете функцию конструктора этого конкретного класса.

Чтобы запустить любые другие функции в этом другом классе, просто используйте путь, например instanceName.xxx();, где ваше instanceName равно newCharacter, а xxx представляет имя функции, закройте его с помощью ();

Редактировать

Чтобы решить второй вопрос, убедитесь, что:

1) Вы правильно связали Main.as с FLA.

  • отмените выбор любого элемента (ов), щелкнув по пустой части рабочей области, затем нажмите ctrl + F3

  • Указан ли Main.as как Класс (на вкладке " Опубликовать ")?

2) Код для Main.as:

package  
{
    import flash.display.MovieClip;
    import CharacterPkg.Character;

    public class Main extends MovieClip 
    {
        public var newCharacter :Character;

        public function Main() 
        {
            newCharacter = new Character();
            addChild( newCharacter ); //this way auto-runs the constructor function...
            newCharacter.secondFunction(); //example to run any other functions in newCharacter class..
            newCharacter.thirdFunction(); //another test
        }

    }
}

3) Код для Character.as (внутри папки с именем CharacterPkg ):

package  CharacterPkg
{

import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;

public class Character extends MovieClip 
{

    public function Character() //constructor function 
    {
        trace("This is running");
    }

    public function secondFunction() :void
    {
        trace("This is second Function");
    }

    public function thirdFunction() :void
    {
        trace("This is third Function");
    }

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