12

我有一个基于 Cocos2D XNA 和 MonoGame 的游戏项目。我想在 CCSprite 类中添加一点自定义逻辑,所以我创建了一个继承自 CCSprite 的类。我添加了一个虚拟的自动属性并尝试使用这个类,但由于某种原因,作为我的自定义精灵类的实例创建的精灵没有显示在图层上,而作为 CCSprite 类的实例的精灵 - 完全没问题。

代码如下所示:

public class Sprite: CCSprite {
  public string SomeProp {get; set;}
}
...
line1: var mySprite1 = new Sprite("texture.png");
line2: var mySprite1 = new CCSprite("texture.png");
AddChild(mySprite1);

如果我使用 line1 并注释掉第 2 行,则 mySprite 1 不会显示。否则 - 如果 mySprite 是 CCSprite 的一个实例 - 它运行良好。

这个问题的根源可能是什么?

4

1 回答 1

4

您没有使用自己的 Sprite 类调用 CCsprite 的构造函数。

Sprite:CCSprite{ 
   public Sprite():base()
   {
    //blabla
   }
}

base() 正在调用 CCSprite 的构造函数,如果你想传递参数,你要继承的类,然后执行以下操作:

Sprite:CCSprite{ 
       public Sprite(string imgpath):base(imgpath)
       {
        //blabla
       }
    }

现在我已经通过构造函数传递了一个字符串。

于 2015-04-27T19:34:04.363 回答