aerofx
Messages postés11Date d'inscriptionlundi 19 juin 2006StatutMembreDernière intervention23 août 2009
-
15 avril 2009 à 18:15
aerofx
Messages postés11Date d'inscriptionlundi 19 juin 2006StatutMembreDernière intervention23 août 2009
-
16 avril 2009 à 14:05
Bonjour,
Tout nouveau avec AS3 je suis un peu perdu..
Voilà, j'essaie de faire une petite fonction toute bête (dessiner des carrés à la suite de toute les couleurs) mais qui me pose problème et je pense que cela pourra m'aider dans ma compréhension générale de l'AS3.
Mon problème est que j'ai un "conflit" avec le stageX placer dans la fonction enterframe. Comment résoudre ce problème?
Merci d'avance pour votre aide,
{
var sqrholder:Sprite=new Sprite();
var onoff:Number=1;
public function Gone(){
//mise en oeuvre du TUIO
TUIO.init( this, 'localhost', 3000, '', true );
// attach du conteneur à carrés
addChild(sqrholder);
//Ecouteur à clic pour placer les carrés:
stage.addEventListener(MouseEvent.MOUSE_DOWN, dessineCarre);
stage.addEventListener(MouseEvent.MOUSE_UP, dessineCarreOFF);
private function enterframe(e:Event){
//nouveau carre
var sqr:Sprite = new Sprite();
//def du carre
sqr.graphics.beginFill(0xFFFFFFFF*(Math.random()),1);
sqr.graphics.drawRoundRect(-25,-25,50,50,40,40);
sqr.x = e.stageX
sqr.y = e.stageY;
//attach du carre dans son conteneur:
sqrholder.addChild(sqr);
}
//Fonction de dessinage de carrés:
private function dessineCarre(pe:Event)
{
//trace("ON");
stage.addEventListener(Event.ENTER_FRAME,enterframe);
}
//Fonction d'arret de dessinage de carrés:
private function dessineCarreOFF(pe:Event)
{
//trace("OFFFFFFF");
stage.removeEventListener(Event.ENTER_FRAME,enterframe);
}
Improve
Messages postés176Date d'inscriptionmardi 27 novembre 2007StatutMembreDernière intervention28 novembre 2009 16 avril 2009 à 09:54
J'ai bien du mal à suivre ton script. Juste la méthode drawRoundRect(); demande 5 paramètres alors que tu en as 6. Celui-ci devrais levé une erreur à la compilation.
Tu utilise les ressources à un moment du script qui n'est pas essentielle. Voici un exemple »
dynamic public class Gone extends MovieClip
{
//.. Non initialisé. Non mémorisé.
var sqrholder:Sprite;
var onOff:Number;
//..
public function Gone()
{
//.. Initialisation de l'objet et
//.. mise en mémoire de l'objet.
sqrholder = new Sprite();
addChild(sqrholder);
//..
onOff = 1;
}
}
Cette façon de faire optimise ton programme et par le fait centralise ton code. C'est un peu plus propre. N'oubli pas que la mise en mémoire d'un objet se fait à partir du moment où une variable est initialisée. Il n'était pas nécessaire dans ton cas d'initialisée la variable sqrholder dans la zone des définitions des membres de classe.
Tu devrais aussi protéger tes variables
Voici un exemple »
private var sqrholder:Sprite;
private var onOff:Number;
Beaucoup d'autres choses pourront être dit à propos de ton écriture » Exemple.
import flash.display.*;
Tu importe toutes les classes du package flash.display alors que tu n'utilise que MovieClip et Sprite. Prends soin de celà car ainsi tu optimise ton programme. Il ne sert à rien d'importer des classes que tu n'utilise pas.
pegase31
Messages postés6138Date d'inscriptiondimanche 21 décembre 2003StatutModérateurDernière intervention 4 septembre 201312 15 avril 2009 à 19:05
Bonsoir,
Le problème est que "stageX" est une propriété de MouseEvent, et pas d'Event .. donc n'est pas applicable dans le cas présent.
Je me demande d'ailleurs ce que tu cherches à récupérer via cette méthode ...
aerofx
Messages postés11Date d'inscriptionlundi 19 juin 2006StatutMembreDernière intervention23 août 2009 16 avril 2009 à 14:05
Hello,
Merci pour vos réponse, j'ai finalement trouvé réponse à ma question (pour faire correspondre mes petits carrés aux curseurs TUIO, il fait recupérer leurs coordonnées via la méthode TUIOObject , il me semble).
Merci Improve, je vais suivre tes conseils pour l'optimisation du code et puis , conseiller le livre de Thibault Imbert est toujours une bonne chose!
Bonne journée,
FX