2017-04-13 3 views
0

donc j'utilise flash punk pour travailler sur un jeu et j'ai créé une classe de base qui contient les stats des personnages en fonction du type de personnage que le joueur choisit. c'est à quoi ressemble cette classe jusqu'à présent.Comment attribuer des valeurs à une classe en utilisant ses paramètres? - Basic

public class Stats extends Entity 
{ 
     public var ATK:Number; 
     public var ARM:Number; 
     public var SPD:Number; 
     public var WIS:Number; 
     public var CRG:Number; 
     public var STM:Number; 

    public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0) 
    { 

    } 
    override public function update():void 
    { 
     super.update(); 

    } 
} 

et dans une autre classe quand clique sur un bouton je voudrais pour faire une nouvelle classe de statistiques avec les paramètres (2, 6, 2, 2, 4, 4) donc je ne

public var SkelStats:Stats = new Stats(2, 6, 2, 2, 4, 4); 

puis d'affecter cet objet (SkelStats) au type de joueur boss varriable. Je le fais

public static var BossType:Stats; 

puis dans la classe de bouton sous la fonction de clic ajouter

Player.BossType = SkelStats; trace(Player.BossType.ATK) 

et la trace met toujours à 0 à moins que je change la varriable (ATK) dans la classe de statistiques lui-même. Pourquoi cela ne change-t-il pas quand je le mets dans les paramètres de l'instance de la classe? (SkelStats)

Désolé, si cela est trop déroutant, je peux répondre à vos questions sur mon code si quelque chose n'est pas clair. Je ne suis pas sûr de ce que je fais mal ici.

Répondre

1

Je l'ai eu! Tout ce que j'avais à faire était de stocker les variables du constructeur avec dans la classe aussi. Les variables définies par le constructeur sont temporaires. Alors j'ai changé

public var ATK:Number; 
    public var ARM:Number; 
    public var SPD:Number; 
    public var WIS:Number; 
    public var CRG:Number; 
    public var STM:Number; 

à cette

public var attack:Number; 
    public var armour:Number; 
    public var speed:Number; 
    public var wisdom:Number; 
    public var courage:Number; 
    public var stamina:Number; 

et ajoutez cette

attack = ATK; 
    armour = ARM; 
    speed = SPD; 
    wisdom = WIS; 
    stamina = STM; 
    courage = CRG; 

à cette

public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0) 
{ 

} 

La classe final ressemble à ceci et fonctionne exactement comment je voulais à:

public class Stats extends Entity 
{ 
     public var attack:Number; 
     public var armour:Number; 
     public var speed:Number; 
     public var wisdom:Number; 
     public var courage:Number; 
     public var stamina:Number; 

    public function Stats(ATK:Number=0, ARM:Number=0, SPD:Number=0, WIS:Number=0, CRG:Number=0, STM:Number=0) 
    { 
     attack = ATK; 
     armour = ARM; 
     speed = SPD; 
     wisdom = WIS; 
     stamina = STM; 

    } 
} 

trouvé toutes ces réponses ici: AS3 passing constructor parameters as variables in class