0

创建了一个按钮,现在尝试将其添加到屏幕上,我收到此错误。按钮的代码是 -

private function submitButton():void {
  submit_button=new SimpleButton();
  submit_button.x=200;
  submit_button.y=200;
  submit_button.upState=buttonShape();
  submit_button.overState=buttonShape();
  submit_button.downState=buttonShape();
}

private function buttonShape() {
  var rectangle:Shape = new Shape; // initializing the variable named rectangle
  rectangle.graphics.beginFill(0x8C2B44); // choosing the colour for the fill, here it is red
  rectangle.graphics.drawRect(200, 200, 300,20); // (x spacing, y spacing, width, height)
  rectangle.graphics.endFill();
}

我已将其声明为公共 var,并且正在使用addChild(submit_button);

  • 编辑 - 所有代码都在一个类文件中。我在开始时设置了提交按钮, - private var submit_button:SimpleButton; 我有一个函数私有函数 submitButton():void { submit_button=new SimpleButton(); 提交按钮.x=200;提交按钮.y=200;

        submit_button.upState=buttonShape();
        submit_button.overState=buttonShape();
        submit_button.downState=buttonShape();
    
    } and the drawing function seen above. and i add it to the stage in another function  - private function gameOver():void {
    
        addChild(submit_button);
        addChild(gameOver1);      basically this function is called on a hit test. and i have a text box that appears (this works) but when i add the button i get the error
    
4

1 回答 1

2

该函数buttonShape()没有返回任何内容。您的初始行var rectangle:Shape = new Shape;正在创建一个局部变量,该变量超出范围并在函数末尾不再存在。

由于buttonShape()不返回任何内容,它的实际函数签名是:

private function buttShape():void {}

with a return void; being implied at the end of the function.

This means that your code

submit_button.upState=buttonShape();

is essentially compiling to:

submit_button.upState=null;
于 2011-04-03T23:02:09.287 回答