我是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 $不能 创建
我做错了什么?
答案 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();
}
}
}