IM Vous avez 2 boutons, 1 utilise la classe Constructor pour Round1rock, tandis que l'autre 1 essaie d'accéder à ces paramètres. Ce qui ne va pas avec mon code?
Classe de constructeur p>
private void continueRound1 (ActionEvent event){ ROCK round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic"); } private void Attack (ActionEvent event){ round1Rock.hp = 12; }
4 Réponses :
Lorsque vous définissez
ROCK round1Rock = null; private void continueRound1 (ActionEvent event){ round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic"); } private void Attack (ActionEvent event){ round1Rock.hp = 12; }
Définir Round1rock sur niveau de classe,
class someclass { private ROCK round1Rock; ----- private void continueRound1 (ActionEvent event){ round1Rock= new ROCK( 500, 100, 100, 100, "Metamorphic"); } private void Attack (ActionEvent event){ round1Rock.hp = 12; } ------ }
Tout d'abord déclarer une instance de rock comme global comme celle-ci La deuxième chose à l'intérieur de votre attaque d'acte d'écoute, vous ne pouvez pas accéder à la variable HP car il est peut-être privé, il est peut-être préférable de créer un setter et Méthodes getter pour votre classe de rock, utilisez-le ensuite. P> Classe de rock: P> private void Attack (ActionEvent event){
round1Rock.setHP(12); //this will update the value
}
au lieu de créer un nouvel objet Rock dans la méthode Continueround1. Vous pouvez créer le nouvel objet Rock dans une portée de classe et définir l'accès privé. Cela résout votre question.
Conseil supplémentaire: strong> Vous créez un nouvel objet sur chaque bouton clique sur chaque bouton. Cela provoquera Voici mes idées pour éviter ce problème: P> Voici mon code de code: p> dans votre classe de rock, vous pouvez donner vos valeurs par défaut décidées par votre type de roche. p> Rock de classe: P>
public Rock getDefaultRockForType(String type){
if(type.equals("Metamorphic")){
this.hp=500;
this.stamina= 100;
this.attack= 100;
this.speed = 100;
this.type = type;
}
}
Définir
rock rond1rock code> au niveau de la classe