Actionscript 3 - 类引用错误

时间:2014-12-22 10:34:38

标签: actionscript-3 class

我是一个文档类(Main)和一个连接到符号(MainMenu)的类,我得到一个错误,我无法想象如何解决..我收到此错误:

  

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

它在我的文档类中提到了“public var mainMenu = new MainMenu();”。

无论如何,这是我的课程:

Main(文档类):

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..

        }

}

}

的MainMenu:

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

}

}

由于

1 个答案:

答案 0 :(得分:0)

一些指示......

  • 留意你的缩进。
  • 对变量,参数和函数返回进行数据类型化。
  • 您的MainMenu类自我实例化(这是一个无限循环)
  • 如果您确实需要直接访问另一个类函数,请考虑使子类扩展父类。或者,您可以使特定函数成为静态函数,并直接在类之外调用函数,而不传递变量引用。例如:Main.initGame()

以下是您的课程,并提供了潜在的解决方案......


主要

package  {
    import flash.display.MovieClip;
    import flash.events.Event;
    import flash.display.Stage;

    public class Main extends MovieClip {
        public var mainMenu:MainMenu;

        public function Main() {
            mainMenu = new MainMenu();
            addChild(mainMenu);
        }

        public function initGame(e:Event):void {
            //Adding player and such..
        }
    }
}

<强>的MainMenu:

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

我将结构尽可能地与原始意图相似,但上述功能参考形式不佳。作为一般规则,儿童不应该与父母有联系,因为它可能会造成记忆泄漏。您可以改为从Main类添加事件侦听器。