Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 Actionscript 3-类引用错误_Actionscript 3_Class - Fatal编程技术网

Actionscript 3 Actionscript 3-类引用错误

Actionscript 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

我在一个文档类Main和一个连接到symbol主菜单的类中发现了一个错误,我不知道该如何解决。。我得到这个错误:

1136:参数数量不正确。预期1


正在参照公共变量主菜单=新建主菜单;在我的文档课上

不管怎样,我的课程如下:

主文档类:

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;
        }
    }
}