1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109
|
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.events.KeyboardEvent;
// taille du fichier Flash pour le compilateur FLEX 2
[SWF(frameRate='30',width='320',height='240',backgroundColor='0×869CA7')]
public class DessinSprite extends Sprite
{
// la variable qui contient le descriptif du sprite
private var _sprite:Sprite;
// on définit le décalage du sprite en X et Y
// quand on le déplace au clavier
private var xDecal:Number = 0;
private var yDecal:Number = 0;
public function DessinSprite()
{
// on fait la création d'un sprite d'affichage
_sprite = new Sprite();
// on définit le cercle du sprite
// sa couleur de remplissage
_sprite.graphics.beginFill(0xff00ff);
// création d'un simple cercle, centre 160,120 et rayon 100
var xpos:Number = 160;
var ypos:Number = 120;
var radius:Number = 100;
_sprite.graphics.drawCircle(xpos, ypos, radius);
// la fin du remplissage
_sprite.graphics.endFill();
// on l'ajoute à la liste d'affichage
addChild(_sprite);
// on ajoute 2 évènements sur le sprite
// le nom de la ss/routine onMouseDown n'est pas imposé
// mais c'est plus pratique pour s'y retrouver
_sprite.addEventListener(MouseEvent.MOUSE_DOWN,onMouseDown);
_sprite.addEventListener(MouseEvent.MOUSE_UP,onMouseUp);
// on gère maintenant le clavier
// la scène doit pouvoir recevoir les évènements clavier
stage.focus = this;
// on ajoute un évènement de type clavier sur la scène
stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDown);
}
// les s/sroutines
private function onMouseDown(event:MouseEvent):void
{
// on clique sur le rond, on dessine le 1er point du de la ligne
_sprite.graphics.lineStyle(1, 0, 1);
_sprite.graphics.moveTo(mouseX - xDecal, mouseY - yDecal);
// on ajoute la s/s routine qui sera activé lorsque je bouge la souris
_sprite.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function onMouseMove(event:MouseEvent):void
{
// je trace la suite de points de ma ligne
_sprite.graphics.lineTo(mouseX - xDecal, mouseY - yDecal);
}
private function onMouseUp(event:MouseEvent):void
{
// quand on relève le bouton de la sourie, on enlève le script onMouseMove
_sprite.removeEventListener(MouseEvent.MOUSE_MOVE, onMouseMove);
}
private function onKeyDown(event:KeyboardEvent):void
{
// lorsque j'appuye sur les touches flêchées, je déplace mon cercle
trace("keyCode : " + event.keyCode);
trace("charCode : " + event.charCode + "n");
// la valeur absolue du décalage
var decal:Number = 5;
// je récupère ma touche flèche
switch(event.keyCode) {
case(37) : // touche gauche
xDecal -= decal;
_sprite.x -= decal;
break;
case(38) : // touche haut
yDecal -= decal;
_sprite.y -= decal;
break;
case(39) : // touche droite
xDecal += decal;
_sprite.x += decal;
break;
case(40) : // touche bas
yDecal += decal;
_sprite.y += decal;
break;
}
}
} |
Partager