如何从附加到 .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();
这样的路径,其中您的 instanceName 是 newCharacter
和 xxx
代表函数名,用 ();
结束
编辑:
要解决第二个问题,请确保:
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
我有一个名为 '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();
这样的路径,其中您的 instanceName 是 newCharacter
和 xxx
代表函数名,用 ();
编辑:
要解决第二个问题,请确保:
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