2012-12-26 1 views
0

Je me mouille les pieds avec AS3, Flixel et les systèmes composants/entités (oui, tous en même temps), et mes entités (quelle sous-classe FlxSprite) ne sont pas ajoutées correctement (c'est-à-dire pas du tout). Je viens de passer deux bonnes heures à clouer la ligne incriminée. Si je l'enlève, le reste du jeu se déroule avec bonheur.AS3 Indexation d'objets provoquant un mauvais comportement de Flixel - quel est le problème avec ce code?

Quel est le problème avec ce code?

public function addComponent(c:Component):void          
{                      
    var type:String = Object(c).constructor.toString();         
    FlxG.log("type=" + type);               
    this._components[type] = c; // The evil line          
    FlxG.log("now type=" + _components[type]);           
    c.setData(this);                 
}                      

components est un champ objet utilisé comme une carte/dictionnaire. type est défini sur [class PlayerComponent]. Basé sur googling, ceci est valide et devrait fonctionner comme prévu.

Basé sur la sortie de la console, il est simplement après cette ligne - ne plante pas complètement. Que se passe-t-il? Plus de détails volontiers offerts sur demande.

+1

Assurez-vous que vous utilisez le lecteur Flash de débogage. Sans cela, les exceptions (accidents) se produisent en silence. –

+0

c'est la 1ère fois que je vois ce chemin pour obtenir le nom de classe de l'objet (je veux dire la méthode constructor.toString()). J'ai préféré utiliser Class (getDefinitionByName (getQualifiedClassName (obj))); – yannicuLar

Répondre

0

Je ne suis pas certain de Component - pas mon fort - mais je sais que FlxGroup et ses enfants (qui comprennent FlxState) ont une méthode appelée add() qui ajoute les enfants à leur disposition.

Donc, si vous avez un FlxSprite, la manière correcte (en flixel) de l'ajouter à la chaîne de choses à mettre à jour/dessiner est de l'utiliser; vous pouvez l'ajouter directement à votre état ou à un groupe qui est un enfant de l'état.

Fonction docs: http://flixel.org/docs/org/flixel/FlxGroup.html#add()

+0

Je dois préciser que cette information est utile, mais peut ne pas être utile à ce que vous vivez, un effet secondaire de ne pas saisir fortement Component. –