我有一个名为“ 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");
}
}
}
我希望在运行.swf时运行Character.as文件中的构造函数代码。但是我只收到1136错误:参数数量不正确。预期为1。
我不知所措,花了两天的时间来解决这个问题。我对此很陌生,可能只是犯了一些愚蠢的错误,但我无法弄清楚。任何帮助将不胜感激。
答案 0 :(得分: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
类时,您会自动运行该特定类的构造函数。
要运行该其他类中的任何其他函数,只需使用类似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