addChild(object)不起作用,变量正确,x / y设置

时间:2013-04-11 03:26:07

标签: actionscript-3 flash

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

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);
        }
    }

}

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

2 个答案:

答案 0 :(得分: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 {} in it ...

摆脱stage.,只有addEventListener(KeyboardEvent.KEY_DOWN, keypush); TankDrive中的行addChild(lev1);已经为lv1提供了一些访问阶段的内容,所以在lv1中只需编写addChild即可。

注意:对于大多数eventListeners(鼠标/定时器等)以及显示对象都是如此。 当您需要显式访问舞台(特别是舞台+键盘监听器)时,您必须像这样设置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...
    }
    

答案 1 :(得分:0)

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