Haxe - 代码拒绝工作

RCI*_*CIX 0 flash haxe

我有以下代码:

package ;

import flash.display.DisplayObject;
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.display.Shape;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Rectangle;
import flash.Lib;
import flash.utils.Timer;

/**
 * ...
 * @author RCIX
 */

class Main 
{
 static function main()
 {
  trace("game started");
  var game : Game = new Game();
  game.Run();
  trace("game finished");
 }
}
class Game extends DisplayObject
{
 var rectX : Int;
 var rectY : Int;
 var velocityX : Int;
 var velocityY : Int;

 var screenBounds : Rectangle;
 var graphics : Graphics;

 public function new()
 {
  super();
  screenBounds = Lib.current.getBounds(new DisplayObject());
  graphics = Lib.current.graphics;
  Lib.current.addChild(this);
  trace("Game constructor");
 }

 public function Run()
 {
  trace("Run");
  Lib.current.addEventListener(Event.ENTER_FRAME, OnFrameEnter);
  velocityX = 1;
  velocityY = 1;
 }
 function OnFrameEnter(event : Event)
 {
  trace("OnFrameEnter");
  graphics.beginFill(0xFFFFFF, 0xFFFFFF);
  graphics.drawRect(0, 0, screenBounds.width, screenBounds.height);
  graphics.endFill();
  Update();
 }
 function Update()
 {
  trace("Updating");
  if (rectX + 50 > screenBounds.width || 
      rectX < 0)
  {
   velocityX *= -1;
  }
  if (rectY + 50 > screenBounds.height || 
      rectY < 0)
  {
   velocityY *= -1;
  }
  rectX += 1;
  rectY += 1;
  graphics.beginFill(0xFF0000);
  graphics.drawRect(rectX, rectY, 50, 50);
  graphics.endFill();
 }
}
Run Code Online (Sandbox Code Playgroud)

但我得到的唯一痕迹输出是"游戏开始"; 没有其他任何东西可以追踪或工作.为什么?

更新:修复screenBounds问题后,仍然存在以下问题:

  • 我的OnFrameEnter或Update调用都没有跟踪; 为什么?
  • 从DisplayObject扩展我的Game类会使事情陷入停顿,并且永远不会到达我的任何其他代码,无论我是否super();在构造函数中调用.

更新:由于第一个问题是一个单独的问题,我将其分解为另一个问题.

And*_* Li 6

从AS3语言参考:

DisplayObject是一个抽象基类; 因此,您无法直接调用DisplayObject.调用新的DisplayObject()会抛出ArgumentError异常.

所以基本上你应该扩展ShapeSprite代替DisplayObject.