如何从附加到 .fla 文件的 main.as class 文件中 运行 另一个 .as 文件的构造函数代码?

How do I run the constructor code of another .as file from the main.as class file attached to the .fla file?

我有一个名为 'Main' 的主 class 文件,它链接到主 .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");
    }
  }
}

当我 运行 .swf 时,我希望 Character.as 文件中的构造函数代码变为 运行。但我只收到 1136 错误:参数数量不正确。预计 1.

我无计可施,花了两天时间想弄明白。我对此很陌生,可能只是犯了一些愚蠢的错误,但我无法弄清楚。任何帮助将不胜感激。

试试看:

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 一个 class 时,您会自动 运行 该特定 class 的构造函数。

到 运行 其他 class 中的任何其他功能,只需使用像 instanceName.xxx(); 这样的路径,其中您的 instanceNamenewCharacterxxx 代表函数名,用 ();

结束

编辑:

要解决第二个问题,请确保:

1) 您已将 Main.as 正确链接到 FLA。

  • 通过单击舞台的空白部分取消选择任何项目,然后按 ctrl+F3

  • 是否将 Main.as 列为 Class(在“发布”选项卡下)?

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