2014-03-31 4 views
12

Ich habe ein Spielprojekt, das auf Cocos2D XNA und MonoGame basiert. Ich wollte der CCSprite-Klasse ein wenig benutzerdefinierte Logik hinzufügen, also habe ich eine Klasse erstellt, die von CCSprite erbt. Ich habe eine Dummy-Auto-Eigenschaft hinzugefügt und versucht, diese Klasse zu verwenden, aber aus irgendeinem Grund werden Sprites, die als Instanzen meiner benutzerdefinierten Sprite-Klasse erstellt werden, nicht auf der Ebene angezeigt, während Sprites, die Instanzen der CCSprite-Klasse sind, vollständig OK sind.cocos2d-xna: sprite wird nicht gezeichnet, wenn die Instanz einer Klasse verwendet wird, die von Sprite geerbt wurde

-Code sieht wie folgt aus:

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

Wenn ich line1 verwenden und kommentieren Sie Zeile 2, dann mySprite 1 nicht dargestellt ist. Ansonsten - wenn mySprite eine Instanz von CCSprite ist - funktioniert es gut.

Was könnte die Ursache für dieses Problem sein?

+0

Bitte veröffentlichen Sie Ihre Sprite-Klassenimplementierungsdatei. – SaffronState

+0

Dank Ihres Kommentars habe ich herausgefunden, dass die AnchorPoint-Eigenschaft außer Kraft gesetzt wird, wodurch ein Sprite-Rendering außerhalb des Bildschirms erfolgt. =) – DarkDeny

Antwort

4

Sie rufen den Konstruktor des CCsprite nicht mit Ihrer eigenen Sprite-Klasse auf.

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

die Basis() wird der Konstruktor von CCSprite ruft die Klasse, die Sie , wenn Sie so etwas tun, dann über die Parameter übergeben wollen erben:

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

Jetzt habe ich einen String übergeben durch die Konstruktoren.

Verwandte Themen