Pour commencer, laissez-moi vous dire que je suis très novice dans le script d'action et que je n'utilise pas adobe creative suite, j'utilise le bloc-notes avec flex comme compilateur. J'ai deux classes, une classe principale et une classe appelée OBJECT_square.Comment mettre à jour des enfants dans ActionScript?
Voici la classe principale:
package
{
import flash.display.*; import mx.core.*;
import flash.events.*; import mx.collections.*;
import flash.geom.*; import mx.controls.*;
import flash.text.*; import mx.events.*;
import mx.styles.*;
import mx.containers.*;
public class MAIN extends Sprite
{
public var APPLICATION:Application = Application(Application.application);
public var keyDownText:TextField = new TextField();
public function MAIN()
{
stage.addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
addEventListener(Event.ENTER_FRAME,STEP);
this.addChild(new OBJECT_square().CREATE(10,100,1));
this.addChild(new OBJECT_square().CREATE(10,200,1));
}
public function STEP():void {}
public function DRAW():void {}
public function KEY_DOWN(event:KeyboardEvent):void
{
keyDownText.text = "Key code: " + event.keyCode;
this.addChild(keyDownText);
}
}
}
Voici la classe OBJECT_square:
package
{
import flash.display.*;
import flash.events.*;
public class OBJECT_square extends Sprite
{
public var X:int = 0;
public var Y:int = 0;
public var DEPTH:int = 0;
public var SPRITE:Sprite = new Sprite();
public function CREATE(X:int,Y:int,DEPTH:int):Sprite
{
addEventListener(KeyboardEvent.KEY_DOWN,KEY_DOWN);
this.DEPTH = DEPTH;
this.X = X;
this.Y = Y;
DRAW();
return SPRITE;
}
public function KEY_DOWN(event:KeyboardEvent):void
{
if (event.keyCode == 39) {X += 1; DRAW();}
}
public function DRAW():void
{
SPRITE.graphics.beginFill(0xFF0000,1);
SPRITE.graphics.drawRect(X - 10,Y - 10,20,20);
SPRITE.graphics.endFill();
}
}
}
Maintenant, mon problème est le suivant. Tout simplement je voudrais que le carré que OBJECT_square dessine se déplace vers la droite quand j'appuie sur la touche fléchée droite. À l'heure actuelle, je ne peux l'obtenir qu'une seule fois (bien que je crée deux carrés séparés dans deux endroits différents). Maintenant, la chose que je dois savoir est si j'ai utilisé correctement l'événement de clavier dans OBJECT_square. J'ai également utilisé l'événement clavier dans la classe principale pour afficher la dernière touche que j'ai pressée mais je ne suis pas sûr de savoir comment l'utiliser dans une classe autre que la principale. Aussi je ne suis pas sûr de savoir comment 'mettre à jour' le carré afin qu'il soit redessiné quand il bouge, c'est-à-dire retirer son ancien moi de la liste d'affichage et réinsérer son nouveau moi. Le tout pointe un peu sur le code: le carré doit être «autosuffisant», c'est-à-dire contenir tout le code nécessaire pour le dessiner et le déplacer plutôt que de dépendre d'une autre classe. Je le veux fondamentalement pour qu'une fois qu'une autre classe ait fait un carré, la place est capable de tout faire par elle-même.