Actionscript 3 Actionscript 3-类引用错误
我在一个文档类Main和一个连接到symbol主菜单的类中发现了一个错误,我不知道该如何解决。。我得到这个错误: 1136:参数数量不正确。预期1Actionscript 3 Actionscript 3-类引用错误,actionscript-3,class,Actionscript 3,Class,我在一个文档类Main和一个连接到symbol主菜单的类中发现了一个错误,我不知道该如何解决。。我得到这个错误: 1136:参数数量不正确。预期1 正在参照公共变量主菜单=新建主菜单;在我的文档课上 不管怎样,我的课程如下: 主文档类: package { import flash.display.MovieClip; import flash.events.Event; import flash.display.Stage; public class Main extends MovieC
正在参照公共变量主菜单=新建主菜单;在我的文档课上 不管怎样,我的课程如下: 主文档类:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.display.Stage;
public class Main extends MovieClip {
public var mainMenu = new MainMenu();
public function Main() {
// constructor code
startGame();
}
public function startGame(){
addChild(mainMenu);
}
public function initGame(event){
//Adding player and such..
}
}
}
主菜单:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class MainMenu extends MovieClip {
private var logo = new Logo();
public function MainMenu(main:Main) {
// constructor code
mainMenu = new MainMenu(this);
logo.addEventListener(MouseEvent.CLICK, main.initGame);
placeButtons(event);
}
public function placeButtons(event:Event){
logo.addEventListener(MouseEvent.CLICK, initGame);
logo.x = - logo.width/2;
logo.y = 50;
addChild(logo);
trace ("MainMenu added");
}
}
}
谢谢几点建议
注意你的压痕。
数据类型变量、参数和函数返回。
您的MainMenu类正在自我实例化,这是一个无限循环
如果您真的需要直接访问另一个类函数,请考虑让子类扩展父类。或者,您可以将特定函数设置为静态函数,并在不传递变量引用的情况下直接从类中调用该函数。例如:Main.initGame
这是你的课程,有一个潜在的解决方案
主要内容:
主菜单:
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class MainMenu extends MovieClip {
private var logo = new Logo();
public function MainMenu(main:Main) {
// constructor code
mainMenu = new MainMenu(this);
logo.addEventListener(MouseEvent.CLICK, main.initGame);
placeButtons(event);
}
public function placeButtons(event:Event){
logo.addEventListener(MouseEvent.CLICK, initGame);
logo.x = - logo.width/2;
logo.y = 50;
addChild(logo);
trace ("MainMenu added");
}
}
我已经让结构尽可能与您的原始意图相似,但是上面的函数引用的形式很差。一般来说,孩子们不应该和他们的父母有联系,因为这是一个潜在的内存泄漏。您可以从主类添加事件侦听器。public var mainMenu=new MainMenuthis;只是因为他在创建主实例之前创建了该实例,所以这将不涉及任何内容;从主菜单。不正确,谢谢!但是当我改变它时,我得到了这个错误:1136:参数的数目不正确。预期1。它指向mainMenu=new mainMenu;。在上面的实现中,MainMenu不接受任何参数。确保您已保存了一份已更新的Main和MainMenuThey副本,并且它们都已更新。我甚至试着复制你的两个脚本并使用它们,仍然是相同的错误消息..我正要为你上传一个运行了上述程序的项目,但我很高兴你成功了
package {
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
public class MainMenu extends MovieClip {
private var logo:Logo;
public function MainMenu() {
// Wait for it to be added to the parent.
logo = new Logo();
addChild(logo);
addEventListener(Event.ADDED_TO_STAGE, placeButton);
}
private function placeButton(e:Event):void {
// We only need this to happen once, so remove the listener
removeEventListener(Event.ADDED_TO_STAGE, placeButton);
// Now that we've formed the connection, we can reference the function dynamically
logo.addEventListener(MouseEvent.CLICK, this["parent"].initGame);
logo.x = - logo.width/2;
logo.y = 50;
}
}
}