从sprite继承的AS3类不会绘制

时间:2014-01-07 10:28:33

标签: actionscript-3

我刚刚创建了一个类:ClassA extends Sprite 然后我创建了另一个类:ClassB extends ClassA

据我所知,ClassB也是Sprite

但是当我尝试在ClassB中添加可显示对象(如位图)作为孩子时,它不会绘制任何内容。

但如果我直接从ClassB扩展Sprite(如ClassB extends Sprite),则会绘制对象。

所以我的问题是为什么对象不是在2级继承中绘制的?我该如何解决问题或者有什么遗漏?

非常感谢。

2 个答案:

答案 0 :(得分:0)

您的代码可能有问题。否则原则上是的,你是对的,ClassB实际上是Sprite。我测试了这个并且它相应地工作。

      package
     {
        import flash.display.Sprite;

         public class ClassA extends Sprite
         {
             public function ClassA()
             {
                 super();
             }
          }
      }


       public classB extends ClassA
       {
           [Embed(source="image.png")]
           private var Image:Class;
           public classB()
           {
               addChild(new Image);
           }
       }


        // Add ClassB to display List

        public class Main extends Sprite
        {
           public  function Main()
           {
              super(); addChild(new ClassB);
           }
        }

看看你是否可以查看代码。我确定存在逻辑错误。如果要加载映像,请通过注册侦听器来查看是否存在IO /安全错误。可能是因为没有加载图像。谢谢

答案 1 :(得分:0)

你的假设是正确的,应该有效。你必须有一些语义错误。也许你没有在每个类的构造函数中调用super,而是在显示链上添加了ClassB的实例。

例如:

---------------classA--------------------

public class ClassA extends Sprite{
    function ClassA(){
        super();
    }
}

---------------classB--------------------

public class ClassB extends ClassA{
    function ClassB(){
        super();
    }
}

-----------------usage------------------

var foo:ClassB = new ClassB();    //new instance
addChild(foo);  //add to display hierarchy
foo.addChild( yourBitmap );    //add your bitmap to the new instance, can be done

-----------------------------------