1
  • 我有一个构造函数
  • 我在那里写了 button.X=20 等属性,它们可以工作
  • 但是我在同一个类中创建了另一个函数,其中我使用了 button.X=PosX 等属性,但它们不起作用

错误是:

1120: Access of undefined property button.var posX:Number = (stage.stageWidth / 2) - (button.width / 2);
1120: Access of undefined property button.posY:Number = (stage.stageHeight / 2) - (button.height / 2);
1120: Access of undefined property button.button.x = posX;
1120: Access of undefined property button.button.y = posY;

这个文档类的代码是:

package
{
   import flash.text.TextField;
   import flash.display.Sprite;
   import flash.display.BitmapData;
   import flash.display.Bitmap;
   import flash.display.SimpleButton;
   import flash.display.MovieClip;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.display.DisplayObject;
   import flash.events.Event;
   import flash.display.StageScaleMode;
   import flash.display.StageAlign;

   public class main extends MovieClip
    {
function main()
{
    stage.addEventListener(Event.RESIZE, resizeHandler);
    stage.dispatchEvent(new Event(Event.RESIZE));
    stage.scaleMode = StageScaleMode.NO_SCALE;
    stage.align = StageAlign.TOP_LEFT;

    var button:graphic = new graphic();
    addChild(button);
    var field:type = new type();
    addChild(field);
}
function resizeHandler(event:Event):void
{
    var posX:Number = (stage.stageWidth / 2) - (button.width / 2);
    var posY:Number = (stage.stageHeight / 2) - (button.height / 2);

    button.x = posX;
    button.y = posY;
}
    }
}

我是编程新手,所以请多解释一下错误是什么,解决方案是什么,拥有许多这样的功能是否正确?

4

2 回答 2

0

问题是button内部的局部变量main,不适用于resize. 您要么必须将按钮更改为类字段,要么更改resize为关闭按钮。

要使用类字段(首选):

public class main extends MovieClip
{
    private var _button:Graphic;

    function main()
    {
        stage.addEventListener(Event.RESIZE, resizeHandler);
        stage.dispatchEvent(new Event(Event.RESIZE));
        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;

        _button= new graphic();
        addChild(_button);
        var field:type = new type();
        addChild(field);
    }
    function resizeHandler(event:Event):void
    {
        var posX:Number = (stage.stageWidth / 2) - (_button.width / 2);
        var posY:Number = (stage.stageHeight / 2) - (_button.height / 2);

        _button.x = posX;
        _button.y = posY;
    }
}

要关闭按钮:

public class main extends MovieClip
{

    function main()
    {
        stage.addEventListener(Event.RESIZE, resizeHandler);
        stage.dispatchEvent(new Event(Event.RESIZE));
        stage.scaleMode = StageScaleMode.NO_SCALE;
        stage.align = StageAlign.TOP_LEFT;

        var button:graphic = new graphic();
        addChild(button);
        var field:type = new type();
        addChild(field);

        function resizeHandler(event:Event):void
        {
            var posX:Number = (stage.stageWidth / 2) - (button.width / 2);
            var posY:Number = (stage.stageHeight / 2) - (button.height / 2);

            button.x = posX;
            button.y = posY;
        }

    }

}    
于 2013-09-21T20:07:48.570 回答
0

问题是变量的范围。button

由于您在函数中声明了变量main,因此只能在该函数的范围内识别它。该resizeHandler函数对名为“button”的变量一无所知。

要使变量对两个函数都可用,您可以更改其范围以在整个main类中被识别。只需将变量声明移到main函数之外(但仍包含在类中)。

于 2013-09-21T20:10:55.147 回答