0

由于某种原因,以下代码没有将 lv1 添加到舞台,这是舞台类并附加到舞台,两个类都是正确的(三重检查......)并且没有生成错误......

package  
{
    import flash.events.*;
    import flash.display.*;

    public class TankDrive extends MovieClip
    {
        public var lev1:lv1;

        public function TankDrive() 
        {
            lev1 = new lv1();
            lev1.x = 0;
            lev1.y = 0;
            addChild(lev1);
        }
    }

}

此外,我检查了其他有效的代码,发现除了我四重检查的特定变量名称之外没有任何差异......

4

2 回答 2

0

在您的导入中尝试添加 lv1.as 文件,看看它是否有助于消除该空错误。

import flash.events.*;
import flash.display.*;
import lv1; //imports the lv1.as file

public class TankDrive extends MovieClip
    {
        public var lev1:lv1;

        public function TankDrive() 
        {
            lev1 = new lv1();
            lev1.x = 0;
            lev1.y = 0;
            addChild(lev1);
        }
    }

编辑两个------------重新阅读评论后------------

其他类中的空行是 stage.addEventListener(KeyboardEvent.KEY_DOWN, keypush);... 我确实有 public function keypush(event:KeyboardEvent):void { } 在里面...

摆脱stage.并且只拥有TankDrive 中addEventListener(KeyboardEvent.KEY_DOWN, keypush); 的行addChild(lev1);已经为 lv1 的内容提供了一些访问阶段的权限,因此在 lv1 中只需编写 addChild 就足够了。

注意:对于大多数事件监听器(鼠标/计时器等)和显示对象都是如此。当您需要显式访问舞台时(尤其是对于舞台+键盘侦听器),您必须像这样设置您的 lv1.as:

  1. 添加一个侦听器以检查该阶段何时可用于 lv1 内容。
  2. 如果可用,则让整个舞台聆听键盘控制。

    public function lv1() {
    addEventListener(Event.ADDED_TO_STAGE, stageAvailable);
    //Your other code here...
    }
    
    private function stageAvailable(e:Event):void {
    trace("(LV1.AS): ADDED_TO_STAGE was successful");
    removeEventListener(Event.ADDED_TO_STAGE, stageAvailable);
    stage.addEventListener(KeyboardEvent.KEY_DOWN, keypush);
    //Your other keyboard listeners code...
    }
    
于 2013-04-11T12:59:16.150 回答
0

您必须从 DisplayObject 继承 lev1 类或从 DisplayObject 继承的任何类(例如 Sprite、MovieClip 等)。addChild 方法只接受 DisplayObject 实例。

于 2013-04-11T13:16:43.317 回答