无法创建类

时间:2012-12-17 06:06:18

标签: actionscript-3

我是ActionScript的新手,我正在尝试制作我的第一个应用程序。我有一个主类 - Sprite的子类。还有另外一个类,它应该管理一些evnts,比如键盘按键。这是初始化:

private var controller:GameObjectController;
...
controller = new GameObjectController(this);

以下是controller:GameObjectController本身:

public class GameObjectController extends InteractiveObject
{
    var textField:TextField;

    public function GameObjectController(mainSprite: Sprite)
    {
    addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

    textField = new TextField();
    textField.text = "Hello, World";
    mainSprite.addChild(textField);
    }

    private function onKeyDown(event: KeyboardEvent):void
    {
    textField.text = event.keyCode.toString();
    }

}

但是当我试图运行它时,我有一个错误:

  

ArgumentError:错误#2012:类GameObjectController $不能   创建

我做错了什么?

3 个答案:

答案 0 :(得分:3)

来自文档:InteractiveObject

  

InteractiveObject类本身不包含任何API   在屏幕上呈现内容。要创建自定义子类   InteractiveObject类,扩展其中一个子类   用于在屏幕上呈现内容的API,例如Sprite,SimpleButton,   TextField或MovieClip类。

所以我建议尝试子类化Sprite,看看是否能解决你的问题。

答案 1 :(得分:1)

首先,不要扩展InteractiveObject。正如API所说:

  

InteractiveObject类本身不包含用于在屏幕上呈现内容的任何API。要创建InteractiveObject类的自定义子类,请扩展其中一个具有用于在屏幕上呈现内容的API的子类,例如Sprite,SimpleButton,TextField或MovieClip类。

所以改为使用(例如):

public class GameObjectController extends Sprite
{
    ....
}

其次,构造函数的参数需要与扩展类相同 - 对于显示类,这意味着零参数。

答案 2 :(得分:1)

flash.display.InteractiveObject是一个不能被子类化的抽象类。相反,从flash.display.Sprite延伸。

不要忘记导入Sprite并将代码放在包中:

package
{
    import flash.display.Sprite;

    public class GameObjectController extends Sprite
    {
        var textField:TextField;

        public function GameObjectController(mainSprite: Sprite)
        {
            addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);

            textField = new TextField();
            textField.text = "Hello, World";
            mainSprite.addChild(textField);
        }

        private function onKeyDown(event: KeyboardEvent):void
        {
            textField.text = event.keyCode.toString();
        }
    }
}