Forums Développement Multimédia

Aller au contenu

Copier un texte lors d'un clic sur bouton(ActionScript)

Tableau ActionScript addEventListener

60 réponses à ce sujet

#1 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 16:10 PM

Bonjour.
J'ai des tableaux et un textfield


var caractPropose:Array<String>  = ["A", "V", "I", "S"];
var okCombinaison:Array<String>  = ["V", "I", "S", "A"];
var brouillage:Array<String>   = ["Z", "P", "E", "T"];
var concatenation:Array<String>  = [];
var spCombinaison:Array<Sprite>  = [];
var spConcatenation:Array<Sprite> = [];
var texte:TextField;
 


J'ai également 3 boucles:
La première permet de remplir le tableau spCombinaison de sprites. Affiche ces carrés sur l'écran



for (var i:Uint = 0; i<=okCombinaison.length; i++)
  {
   var sprite:Sprite = new Sprite();
   sprite.graphics.beginFill(0xD5D5D6, .5);
   sprite.graphics.drawRect(0, 0, 30, 30);
   sprite.graphics.endFill();
   sprite.x = i * 40;
   spCombinaison.push(sprite);
   addChild(sprite);
  }
 


La seconde permet remplir le tableau spConcatenation de sprites et les affiche sur l'écran


for (var k:Uint = 0; k<=concatenation.length; k++)
  {
   var sprite2:Sprite = new Sprite();
   sprite2.graphics.beginFill(0xFEC3AC, .5);
   sprite2.graphics.drawRect(0, 0, 30, 30);
   sprite2.graphics.endFill();
   sprite2.y = 50;
   sprite2.x = k * 40;
   spConcatenation.push(sprite2);
   addChild(sprite2);
  }
 


C'est au niveau du 3e et dernier boucle que j'ai des problèmes:
Je voudrai, lors du clic sur un sprite contenant un texte, que ce texte se remplisse dans les sprites qui n'ont pas de texte et ce de gauche à droite. Quand la combinaison concorde avec les lettres contenues dans le tableau okCombinaison un message "Reussite" s'affiche.



for (var j:Uint = 0; j<=concatenation.length; j++)
  {
   for (var l:Uint = 0; l<=spConcatenation.length; l++)
   {
    texte  = new TextField();
    texte.selectable = false;
    texte.text = concatenation[j];
   }
   spConcatenation[j].addChild(texte);
   spConcatenation[j].addEventListener(MouseEvent.CLICK, function (e)
   {
    trace("Clic");
   });
  }
 


Merci pour votre aide

#2 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 17:14 PM

bonjour
j'ai pris ton code copier coller et j’obtiens après quelque modif du style Uint en uint

une ligne avec 5 sprite ( 5 carré) issue de la boucle 1
var okCombinaison:Array<String> = ["V", "I", "S", "A"]; /// length == 4
for (var i:Uint = 0; i<=okCombinaison.length; i++) // === 5 carré sans texte

en dessous de la ligne des 5 sprite j'ai un autre sprite de couleur differente et une erreur dans la console cra tu met
texte.text = concatenation[j]; et que var concatenation:Array<String> = []; donc texte.text ==rien et ça bugg

donc pour plus avoir de messaage d'erreur j'ai mis
texte.text = ""+ concatenation[j]; // j'ai undefined en texte dans le carré.
la quand je clic sur le careeé avec le undefined en texte j'ai le trace ("clic") qui fonctionne

et tu demande

Je voudrai, lors du clic sur un sprite contenant un texte,
Quel texte moi j'en ai pas de texte a part le undefined et un seul carré prévu pour avoir du texte

que ce texte se remplisse dans les sprites qui n'ont pas de texte et ce de gauche à droite. Quand la combinaison concorde avec les lettres contenues dans le tableau okCombinaison un message "Reussite" s'affiche.

pour résumer j'ai pas compris ce que tu veux faire a la première lecture donc j'ai mis en place ton code et j' y comprend encore rien

c'est peut être que je suis a coté ou qui faut éclaircir tes explications.

@+gustave02

Fichier(s) joint(s)



#3 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 17:28 PM

Effectivement, il y a une ligne de code que j'ai oublié:

concatenation = caractPropose.concat(brouillage);
 
Normalement, en dessous des carrés sans texte, il devrait y avoir 8 carrés avec des textes dedans. Des textes qui sont dans le tableau concatenation

#4 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 17:39 PM

ok j'essais.

Fichier(s) joint(s)



#5 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 17:43 PM

En principe ça devrait donner un truc comme ça.

Fichier(s) joint(s)



#6 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 17:46 PM

Je ne sais pas pourquoi il y a ce truc de undefined... mais au fait, comme je l'ai dit, ce qui me complique c'est comment faire pour que quand il y a clic sur un sprite contenant une lettre, ladite lettre est remplie dans les carrés qui n'ont pas de lettre et ce de gauche à droite.

#7 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 17:46 PM

est ce qu'il faut déja 4 ou 5 sprite dans la première ligne?

#8 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 17:48 PM

4 dans la première ligne et 8 dans la deuxième.

#9 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 17:48 PM

je viens de voir ton exemple .

#10 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 17:52 PM

4 carrés dans la première ligne et 8 dans la seconde. la première ligne dépend du tableau okCombinaison qui a comme taille 4 et la seconde ligne dépend du tableau concatenation qui a la taille 4 + 4 = 8.

#11 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 18:10 PM

tu as besoin de tes
var spCombinaison:Array<Sprite> = [];
var spConcatenation:Array<Sprite> = [];
?

je cherche une solution simple.
le but et juste de proposée 8 lettres et de vérifier que le choix de quatre lettres correspond a la réponse attendu?
@+ gustave02

#12 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 18:52 PM

voila une solution voir swf

dis moi si c'est ca que tu veut?
@+gustave02

Fichier(s) joint(s)



#13 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 20:06 PM

Je n'en ai pas NÉCESSAIREMENT besoin.
Je voudrai au fait reproduire le scenario qui est dans le jeux https://drive.google...iew?usp=sharing

#14 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 20:09 PM

tu as vu ma propo de solution. swf

Fichier(s) joint(s)



#15 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 20:10 PM

Oui c'est bien ça que je voudrai :smile: :smile: :smile: mais après une combinaison, on compare le résultat avec le contenu dans okCombinaison. Cad si la combinaison est VISA alors Reussite. Sinon Echec de combinaison

#16 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 20:24 PM

ben oui.
voir solution swf

Fichier(s) joint(s)



#17 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 20:37 PM

je ne peut voir app.apk ton fichier.

bon je te donne le code de ma solution.

import flash.text.TextField;
import flash.events.MouseEvent;

var caractPropose:Array  = ["A", "V", "I", "S"];
var brouillage:Array   = ["Z", "P", "E", "T"];
var concatenation:Array  = caractPropose.concat(brouillage);
// on peut imaginer de faire un mélange des lettres
var phase:uint = 0;// pour voir dans quel etape on se trouve.

var okCombinaison:String = "VISA"; // c'est la solution a trouver surement que ça sera couplet avec un envois formulaire php

for (var i:uint = 0; i< 4; i++){
var sprite:Sprite = new Sprite(); // les carrés
sprite.graphics.beginFill(0xD5D5D6, .5);
sprite.graphics.drawRect(0, 0, 30, 30);
sprite.graphics.endFill();
sprite.x = i * 40;
addChild(sprite);
// on peut creer c'est texte de façon classique  avant la boucle exemple var t1:textField = new textfield(); ect
this["t"+i] = new TextField(); // tu pourras créer un format pour centrer le texte et aussi déterminer ça hauteur
this["t"+i].selectable = false;
this["t"+i].width = 30;
this["t"+i].text = "";
this["t"+i].name = "t"+i;
this["t"+i].x = i * 40;
addChild(this["t"+i]);
}

for (i = 0; i < concatenation.length; i++){
        var sprite2:Sprite = new Sprite();
   sprite2.graphics.beginFill(0xFEC3AC, .5);
        sprite2.graphics.drawRect(0, 0, 30, 30);
        sprite2.graphics.endFill();
        sprite2.y = 50;
        sprite2.x = i * 40;
        sprite2.name = "s"+i;
        var texte:TextField  = new TextField();
        texte.selectable = false;
texte.width = 30;
        texte.text = ""+ concatenation[i];
sprite2.addChild(texte);
        addChild(sprite2);
sprite2.addEventListener(MouseEvent.CLICK, reponse);// quand on choisi une lettre on fait la fonction
}
function reponse(event:MouseEvent):void{
var nom:String = event.target.parent.name.substr(1,1);// on sait sur quel bouton avec le numero du nom
if(phase < 3){
  this["t"+phase].text = concatenation[nom];// le numéro du nom donne la position dans le tableau qui est mis dans le texte par rapport a la //phase
  phase++;
} else { // si toutes les cases remplis
  this["t"+phase].text = concatenation[nom];
  phase++;
  if (this["t0"].text + this["t1"].text + this["t2"].text + this["t3"].text == okCombinaison){ // on compare si oui cool
  trace("ok");
   var texte:TextField = new TextField();
   texte.text = "Cool";
   texte.y = 150;
   addChild(texte);
  } else { si non on recommence
   this["t0"].text = "";
   this["t1"].text = "";
   this["t2"].text = "";
   this["t3"].text = "";
   phase = 0;
  }
}
}
 

j'espere que ca va te servir. tu dois bien sur apporter des améliorations. "centrer les textes etc".
si c'est pour donner des droits d'entrer il faut coupler avec un envois sur un fichier php qui vérifie la solution et renvois ok ou pas

@+ gustave02

#18 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 20:37 PM

Oui c'est bien ça.
Comment tu as fait?

#19 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 08 May 2015 - 20:38 PM

Ok. Je vais essayer de comprendre le code. Je te dis quoi tout de suite

#20 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 08 May 2015 - 21:34 PM

ok
bonne nuit.

@+gustave02

#21 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 09 May 2015 - 21:19 PM

Franchement, je ne comprend pas ce que signifie ce this["t"+i]
A vrai dire, je me sers de ActionScript pour coder avec Haxe et là je ne comprend pas ce que signifie ce this.

#22 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 09:16 AM

la même chose en déclarant les champs de texte classiquement et non dynamiquement.

import flash.text.TextField;
import flash.events.MouseEvent;
var caractPropose:Array  = ["A", "V", "I", "S"];
var brouillage:Array   = ["Z", "P", "E", "T"];
var concatenation:Array  = caractPropose.concat(brouillage);
var phase:uint = 0;
var okCombinaison:String = "VISA";
var t0:TextField = new TextField();//champs de texte qui va  se trouver sur le premier sprite
var t1:TextField = new TextField();//champs de texte va  se trouver sur le deuxieme sprite
var t2:TextField = new TextField();// champs de texte va  se trouver sur le troisieme sprite
var t3:TextField = new TextField();// champs de texte va  se trouver sur le quatrieme sprite

for (var i:uint = 0; i< 4; i++){
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xD5D5D6, .5);
sprite.graphics.drawRect(0, 0, 30, 30);
sprite.graphics.endFill();
sprite.x = i * 40;
addChild(sprite);
this["t"+i].selectable = false;//== si i=o  donne t0.selectable = false /// si i=1 donne t1.selectable = false etc
this["t"+i].width = 30;//== si i=o  donne t0.width = 30;  /// si i=1 donne t1.width = 30; etc
this["t"+i].text = "";
this["t"+i].x = i * 40;
addChild(this["t"+i]);
}

for (i = 0; i < concatenation.length; i++){
        var sprite2:Sprite = new Sprite();
   sprite2.graphics.beginFill(0xFEC3AC, .5);
        sprite2.graphics.drawRect(0, 0, 30, 30);
        sprite2.graphics.endFill();
        sprite2.y = 50;
        sprite2.x = i * 40;
        sprite2.name = "s"+i;
        var texte:TextField  = new TextField();
        texte.selectable = false;
texte.width = 30;
        texte.text = ""+ concatenation[i];
sprite2.addChild(texte);
        addChild(sprite2);
sprite2.addEventListener(MouseEvent.CLICK, reponse);
}
function reponse(event:MouseEvent):void{ // au premier choix
var nom:String = event.target.parent.name.substr(1,1);// si tu clic sur le s nom == 3
if(phase < 3){
  this["t"+phase].text = concatenation[nom];/// premier choix phase == 0 donne t0.text = concatenation[3];
  phase++;
} else {
  this["t"+phase].text = concatenation[nom];
  phase++;
  if (t0.text + t1.text + t2.text + t3.text == okCombinaison){ trace("ok");//
   var texte:TextField = new TextField();
   texte.text = "Cool";
   texte.y = 150;
   addChild(texte);
  } else {
   t0.text = "";
   t1.text = "";
   t2.text = "";
   t3.text = "";
   phase = 0;
  }
}
}
 

ok?
@+gustave02

#23 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 09:29 AM

re version sans this et surement sans plaisir.

import flash.text.TextField;
import flash.events.MouseEvent;
var caractPropose:Array  = ["A", "V", "I", "S"];
var brouillage:Array   = ["Z", "P", "E", "T"];
var concatenation:Array  = caractPropose.concat(brouillage);
var phase:uint = 0;
var okCombinaison:String = "VISA";
for (var i:uint = 0; i< 4; i++){
var sprite:Sprite = new Sprite();
sprite.graphics.beginFill(0xD5D5D6, .5);
sprite.graphics.drawRect(0, 0, 30, 30);
sprite.graphics.endFill();
sprite.x = i * 40;
addChild(sprite);
}
var t0:TextField = new TextField();
t0.selectable = false;
t0.width = 30;
t0.text = "";
t0.x =  0;
addChild(t0);
var t1:TextField = new TextField();
t1.selectable = false;
t1.width = 30;
t1.text = "";
t1.x =  40;
addChild(t1);
var t2:TextField = new TextField();
t2.selectable = false;
t2.width = 30;
t2.text = "";
t2.x =  80;
addChild(t2);
var t3:TextField = new TextField();
t3.selectable = false;
t3.width = 30;
t3.text = "";
t3.x =  120;
addChild(t3);
 
for (i = 0; i < concatenation.length; i++){
    var sprite2:Sprite = new Sprite();
   sprite2.graphics.beginFill(0xFEC3AC, .5);
    sprite2.graphics.drawRect(0, 0, 30, 30);
    sprite2.graphics.endFill();
    sprite2.y = 50;
    sprite2.x = i * 40;
    sprite2.name = "s"+i;
    var texte:TextField  = new TextField();
    texte.selectable = false;
texte.width = 30;
    texte.text = ""+ concatenation[i];
sprite2.addChild(texte);
    addChild(sprite2);
sprite2.addEventListener(MouseEvent.CLICK, reponse);
}
function reponse(event:MouseEvent):void{
var nom:String = event.target.parent.name.substr(1,1);
if(phase == 0){
  t0.text = concatenation[nom];
  phase++;
} else if(phase == 1){
  t1.text = concatenation[nom];
  phase++;
}else if(phase == 2){
  t2.text = concatenation[nom];
  phase++;
} else {
  t3.text = concatenation[nom];
  if (t0.text + t1.text + t2.text + t3.text == okCombinaison){ trace("ok");
   var texte:TextField = new TextField();
   texte.text = "Cool";
   texte.y = 150;
   addChild(texte);
  } else {
   t0.text = "";
   t1.text = "";
   t2.text = "";
   t3.text = "";
   phase = 0;
  }
}
}
 

@+gustave02

#24 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 17:43 PM

Salut @Gustave.
J'ai implémente le tout dernier code. Mais je rencontre des problèmes avec
var nom:String = event.target.parent.name.substr(1,1);
Quand je compile, j'ai une erreur (voir la photo en pièce jointe).

Miniature(s) jointe(s)

  • Image attachée: Capture.JPG


#25 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 18:05 PM

oui avec flash ca marche.
mais dans mon code c'est pas juste de dire

var nom:String = event.target.parent.name.substr(1,1); et t0.text = concatenation[nom]; car nom devrait etre un int ou uint et la j'ai déclaré une string
je repete dans flash ca marche.

solution simple
var nom:int = int(event.target.parent.name.substr(1,1));

@+gustave02

#26 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 18:09 PM

OK. J'essaye un peu.

#27 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 18:40 PM

moi, j'ai chargé haxe j'ai installé sur ordi et quand je clic haxe.exe rien

je ne sais pas comment marche haxe?
@+gustave02

#28 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 18:50 PM

Tu peux suivre ce tutoriel pour installer

http://www.openfl.or...talling-openfl/

Ou encore celui ci http://www.openfl.or.../setup-windows/

Tu auras aussi besoin de configurer un éditeur. Le plus populaire pour Haxe est ici : http://www.flashdeve...f9d7b2624ead2de


#29 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 19:16 PM

En tout cas, j'ai essayé et ça ne marche pas. (En Haxe).

#30 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 19:43 PM

N'aurais-tu pas une solution qui contournerait le problème que je rencontre?

#31 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 20:17 PM

avec flash developpe

package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.text.TextField;
import flash.events.MouseEvent;

public class Main extends Sprite {
  private var phase:uint = 0;
  private var concatenation:Array;
  private var t0:TextField;
  private var t1:TextField;
  private var t2:TextField;
  private var t3:TextField;
  private var okCombinaison:String = "VISA";

  public function Main():void {
   if (stage) init();
   else addEventListener(Event.ADDED_TO_STAGE, init);
  }

  private function init(e:Event = null):void {
   removeEventListener(Event.ADDED_TO_STAGE, init);
   var caractPropose:Array  = ["A", "V", "I", "S"];
   var brouillage:Array   = ["Z", "P", "E", "T"];
   concatenation  = caractPropose.concat(brouillage);
 
 
 
   for (var i:uint = 0; i< 4; i++){
        var sprite:Sprite = new Sprite();
        sprite.graphics.beginFill(0xD5D5D6, .5);
        sprite.graphics.drawRect(0, 0, 30, 30);
        sprite.graphics.endFill();
        sprite.x = i * 40;
        addChild(sprite);
   }
 
   t0 = new TextField();
   t0.selectable = false;
   t0.width = 30;
   t0.text = "";
   t0.x =  0;
   addChild(t0);
 
   t1 = new TextField();
   t1.selectable = false;
   t1.width = 30;
   t1.text = "";
   t1.x =  40;
   addChild(t1);
 
   t2 = new TextField();
   t2.selectable = false;
   t2.width = 30;
   t2.text = "";
   t2.x =  80;
   addChild(t2);
 
   t3 = new TextField();
   t3.selectable = false;
   t3.width = 30;
   t3.text = "";
   t3.x =  120;
   addChild(t3);

   for (i = 0; i < concatenation.length; i++){
        var sprite2:Sprite = new Sprite();
        sprite2.graphics.beginFill(0xFEC3AC, .5);
        sprite2.graphics.drawRect(0, 0, 30, 30);
        sprite2.graphics.endFill();
        sprite2.y = 50;
        sprite2.x = i * 40;
        sprite2.name = "s" + i;
 
        var texte:TextField  = new TextField();
        texte.selectable = false;
        texte.width = 30;
        texte.text = ""+ concatenation[i];
        sprite2.addChild(texte);
        addChild(sprite2);
        sprite2.addEventListener(MouseEvent.CLICK, reponse);
   }
  }
 
  private function reponse(event:MouseEvent):void{
   var nom:uint = uint( event.target.parent.name.substr(1,1));
   if(phase == 0){
        t0.text = concatenation[nom];
        phase++;
   } else if(phase == 1){
        t1.text = concatenation[nom];
        phase++;
   }else if(phase == 2){
        t2.text = concatenation[nom];
        phase++;
   } else {
        t3.text = concatenation[nom];
        if (t0.text + t1.text + t2.text + t3.text == okCombinaison){ trace("ok");
         var texte:TextField = new TextField();
         texte.text = "Cool";
         texte.y = 150;
         addChild(texte);
        } else {
         t0.text = "";
         t1.text = "";
         t2.text = "";
         t3.text = "";
         phase = 0;
        }
   }
  }

}

}
 


#32 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 20:39 PM

En Haxe, la ligne de code var nom:uint = uint(event.target.parent.name.substr(1,1));
Est rejetée parce que la fonction substr renvoie un string et quand on fait concaténation[nom], nom étant un string et concatenation étant un tableau de string, renvoie une erreur(demande à ce que nom soit un entier).

#33 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 20:51 PM

Ça marche.

#34 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 20:53 PM

J'ai remplacé

var nom:uint = uint( event.target.parent.name.substr(1,1));
 
par

var nom:Int = Std.parseInt(event.target.parent.name.substr(1,1) );
 
. En Haxe cela convertit le string

event.target.parent.name.substr(1,1)
 
en un Integer et le stocke dans la variable nom de type integer.

#35 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 21:59 PM

moi aussi j'ai appris
le fichier avec haxe que je connaissais pas

package ;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.display.Sprite;
import flash.text.TextField;
import flash.events.MouseEvent;
import flash.Lib;
class Main {
  static var phase:Int = 0;
  static var t0:TextField;
  static var t1:TextField;
  static var t2:TextField;
  static var t3:TextField;
  static var concatenation:Array<String> ;
  static var stage = Lib.current.stage;

  static function main() {
   stage.scaleMode = StageScaleMode.NO_SCALE;
   stage.align = StageAlign.TOP_LEFT;
 
 
   var caractPropose:Array<String>  = ["A", "V", "I", "S"];
   var okCombinaison:Array<String>  = ["V", "I", "S", "A"];
   var brouillage:Array<String>   = ["Z", "P", "E", "T"];
   concatenation  = caractPropose.concat(brouillage);
 
   for( i in 0...okCombinaison.length ) {
    var sprite:Sprite = new Sprite();
    sprite.graphics.beginFill(0xD5D5D6, .5);
    sprite.graphics.drawRect(0, 0, 30, 30);
    sprite.graphics.endFill();
    sprite.x = i *40;
    stage.addChild(sprite);
   }
 
   t0 = new TextField();
   t0.selectable = false;
   t0.width = 30;
   t0.text = "";
   t0.x =  0;
   stage.addChild(t0);
 
   t1 = new TextField();
   t1.selectable = false;
   t1.width = 30;
   t1.text = "";
   t1.x =  40;
   stage.addChild(t1);
 
   t2 = new TextField();
   t2.selectable = false;
   t2.width = 30;
   t2.text = "";
   t2.x =  80;
   stage.addChild(t2);
 
   t3 = new TextField();
   t3.selectable = false;
   t3.width = 30;
   t3.text = "";
   t3.x =  120;
   stage.addChild(t3);
 
   for( i in 0...concatenation.length){
    var sprite2:Sprite = new Sprite();
    sprite2.graphics.beginFill(0xFEC3AC, .5);
    sprite2.graphics.drawRect(0, 0, 30, 30);
    sprite2.graphics.endFill();
    sprite2.y = 50;
    sprite2.x = i * 40;
    sprite2.name = "s" + i;
 
    var texte:TextField  = new TextField();
    texte.selectable = false;
    texte.width = 30;
    texte.text = ""+ concatenation[i];
    sprite2.addChild(texte);
   
    sprite2.addEventListener(MouseEvent.CLICK, reponse);
    stage.addChild(sprite2);
   }
 
  }
 
  static function reponse(event:MouseEvent):Void{
   var nom:Int =  event.target.parent.name.substr(1, 1);
   if(phase == 0){
    t0.text = concatenation[nom];
    phase++;
   } else if(phase == 1){
    t1.text = concatenation[nom];
    phase++;
   }else if(phase == 2){
    t2.text = concatenation[nom];
    phase++;
   } else {
    t3.text = concatenation[nom];
    if (t0.text + t1.text + t2.text + t3.text == "VISA"){ trace("ok");
         var texte:TextField = new TextField();
         texte.text = "Cool";
         texte.y = 150;
         stage.addChild(texte);
    } else {
         t0.text = "";
         t1.text = "";
         t2.text = "";
         t3.text = "";
         phase = 0;
    }
   }
  }
}
 

pourquoi haxe?

@+ gustave02

#36 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 22:00 PM

moi avec var nom:Int = event.target.parent.name.substr(1, 1); ca marche.

#37 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 22:06 PM

Ca marche avec Haxe? Tu compiles en Flash ou en Neko? Parce qu'en Flash ca marche mais pas en Neko

#38 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 22:08 PM

flash et toi tu veux neko?

#39 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 22:16 PM

Oui parce qu'avec Haxe, tant que Neko ne répond pas, Android, iOS,... ne répondront pas.
Il parait qu'il faut faire le casting sur le event.target.
Je lis ce tuto http://www.openfl.or...ipt-developers/ mais je ne vois pas comment intégrer le fameux casting

#40 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 22:16 PM

envois ton code avec neko.

#41 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 22:18 PM

Mon code au complet en Haxe est là

package;
import openfl.display.Sprite;
import openfl.events.*;
import openfl.Lib;
import openfl.text.TextField;
import openfl.Assets;
/**
* ...
* @author ILAMBO
*/

class Main extends Sprite
{
var caractPropose:Array<String>  = ["A", "V", "I", "S"];
var okCombinaison:String = "VISA";
var brouillage:Array<String>   = ["Z", "P", "E", "T"];
var concatenation:Array<String>  = [];

var spCombinaison:Array<Sprite>  = [];
var spConcatenation:Array<Sprite> = [];
var texte:TextField;

var phase:Int = 0;

var t0:TextField = new TextField();
var t1:TextField = new TextField();
var t2:TextField = new TextField();
var t3:TextField = new TextField();

var sprite2:Sprite;
public function new()
{
  super();
 
  //var t0:TextField = new TextField();
  t0.selectable = false;
  t0.width = 30;
  t0.text = "";
  t0.x =  0;
  addChild(t0);
  //var t1:TextField = new TextField();
  t1.selectable = false;
  t1.width = 30;
  t1.text = "";
  t1.x =  40;
  addChild(t1);
  //var t2:TextField = new TextField();
  t2.selectable = false;
  t2.width = 30;
  t2.text = "";
  t2.x =  80;
  addChild(t2);
  //var t3:TextField = new TextField();
  t3.selectable = false;
  t3.width = 30;
  t3.text = "";
  t3.x =  120;
  addChild(t3);
 
  concatenation = caractPropose.concat(brouillage);  //La concatenation comme prevue
 
  //Remplir le tableau spCombinaison de sprites vides. On se souviendra qu'il a la taille de okCombinaison.length
  for (i in 0...caractPropose.length)
  {
   var sprite:Sprite = new Sprite();
   sprite.graphics.beginFill(0xD5D5D6, .5);
   sprite.graphics.drawRect(0, 0, 30, 30);
   sprite.graphics.endFill();
   sprite.x = i * 40;
   //spCombinaison.push(sprite);
   addChild(sprite);
  }
 
  //Remplir le tablleau spConcatenation de sprites vides. ce tableau a comme taille concatenation.length
  for (k in 0...concatenation.length)
  {
   sprite2 = new Sprite();
   var texte:TextField = new TextField();
   texte.selectable = false;
   texte.width = 30;
   sprite2.graphics.beginFill(0xFEC3AC, .5);
   sprite2.graphics.drawRect(0, 0, 30, 30);
   sprite2.graphics.endFill();
   sprite2.y = 50;
   sprite2.x = k * 40;
   sprite2.name = "s" + k;
   texte.text = "" + concatenation[k];
   sprite2.addChild(texte);
   addChild(sprite2);
   sprite2.addEventListener(MouseEvent.CLICK, reponse);
  }
}


  function reponse(event:MouseEvent):Void
  {
   var nom:Int = Std.parseInt(event.target.parent.name.substr(1, 1) );
   if (phase == 0)
   {
    t0.text = concatenation[nom];
    phase++;
   }
   else if (phase == 1)
   {
    t1.text = concatenation[nom];
    phase++;
   }
   else if (phase == 2)
   {
    t2.text = concatenation[nom];
    phase ++;
   }
   else
   {
    t3.text = concatenation[nom];
    if (t0.text + t1.text + t2.text + t3.text == okCombinaison)
    {
         trace("OK");
         var texte:TextField = new TextField();
         texte.text = "Cool";
         texte.y = 150;
         addChild(texte);
    }
    else
    {
         t0.text = "";
         t1.text = "";
         t2.text = "";
         t3.text = "";
         phase = 0;
    }
   }
  }
}
 


#42 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 22:20 PM

1. Ne fais pas attention aux commentaires
2. Le document http://www.openfl.or...ipt-developers/ va t'aider à comprendre les différences entre ActionScript et Haxe(Openfl).

#43 gustave02

    Ceinture Marron

  • Members
  • PipPipPipPipPipPip
  • 166 messages

Posté 10 May 2015 - 22:27 PM

trop tard pour moi.
bonne nuit

@+gustave02

#44 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 10 May 2015 - 23:27 PM

Ok. Merci. A demain.

#45 alpha_job

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 54 messages

Posté 11 May 2015 - 11:19 AM

Dans un autre forum, on m'a envoyé ce code:

package;
import openfl.display.Sprite;
import openfl.events.MouseEvent;
import openfl.events.TextEvent;
import openfl.Lib;
import openfl.text.*;
/**
* ...
* @author ILAMBO
*/

class Jeu extends Sprite
{
var _espaceMenu:Sprite    = new Sprite();
var _espaceJeu:Sprite    = new Sprite();
var _espaceCombinaison:Sprite  = new Sprite();
var _espaceLettres:Sprite  = new Sprite();

//Tableau du texte de depart (Affiche sur l'ecran)
//Un tableau temporaire qui va garder les lettres une a une du mot proposé
var tabTxtPropose:Array<String>  = ["AVIS"];
var _tabTxtPropose:Array<String>    = [];

//Tableau contenant l'anagramme du mot proposé
//Tableau temporaire qui contiendra les lettres du mot propose prises unes a unes
var tabAnagramme:Array<String>   = ["VISA"];
var _tabAnagramme:Array<String>  = [];

//Les lettres qui seront utilisees pour brouiller les pistes
var tabFaux:Array<String>   = ["Z", "P", "E", "T"];

//Les lettres qui seront proposees a l'utilisateur
//Elles sont une concatenation des lettres du mot propose et des fausses lettres
var tabConcat:Array<String>   = [];

//Tableau qui contiendra les combinaisons de l'utilisateur
static var tabCombinaisonUser:Array<String> = [];
static var _tabCombinaisonUser:Array<Sprite> = [];

var tabBtnAvecCaracteres:Array<Sprite> = new Array<Sprite>();

var sp:Sprite ;
var txt:TextField;
var sp1:Sprite ;
var txt1:TextField;
var spip:Sprite;


public function new()
{
  super();
  //dessiner();
 
  //cette boucle permet d'eclater le mot proposé afin de garder chaque caractere dans un tableau
  //On sait bien afficher chaque caractere dans un petit sprite lorsqu'on a a faire qu'a un seul caractere
  for (l in 0...tabTxtPropose.length)
  {  
   for (k in 0...tabTxtPropose[l].length)
   {
    _tabTxtPropose.push(tabTxtPropose[l].charAt(k));
   
   }
  }
 
  //Le tabConcat est un tableau cree par la concatenation du tableau contenant les caracteres du mot proposé et tu tableau contenant les mots
  //qui nous permettront de brouiller les pistes
  tabConcat = _tabTxtPropose.concat(tabFaux);
 
  //Creation des sprites vides qui sont senses accueillir les combinaisons de l'user
  //On stocke ces sprites dans un tableau de sprites _tabCombinaisonUser
  for (m in 0..._tabTxtPropose.length)
  {
   spip = new Sprite();
   spip.graphics.beginFill (0x000000, 0.5);
   spip.graphics.drawRect (0, 0, 20, 20);
   spip.x = m * 20 + 165 + m * 2;
   spip.y = Main.maxHeight - 135;
   _tabCombinaisonUser[m] = spip;
   addChild(spip);
  }
 
  //Apres concatenation, nous utilisons le nouveau tableau pour creer des boutons qu'on stocke dans un array de boutons
  for (i in 0...tabConcat.length)
  {
   var sp:Sprite = new Sprite();
   txt1 = new TextField();
   txt = new TextField();
 
   sp.graphics.beginFill (0xD006ff, 0.5);
   sp.graphics.drawRect (0, 0, 30, 30);
   sp.x = i * 30 + 120 + i * 2;
   sp.y = Main.maxHeight - 75;
 
   txt1.visible = true;
   txt1.selectable = false;
   txt1.width  = 30;
   txt1.height = 30;
   txt1.autoSize = TextFieldAutoSize.CENTER;
   txt1.textColor = 0xfcc0fc;
   txt1.text = tabConcat[i];
   sp.addChild (txt1);
   addChild(sp);
 
   sp.addEventListener(MouseEvent.CLICK, function (e)
   {
    sp.visible  = false;
    var txt = new TextField();
    txt.text  = tabConcat[i];
    //trace(txt);
    tabCombinaisonUser.push(txt.text);
    var len:Int = _tabCombinaisonUser.length;
   
    trace(_tabCombinaisonUser[0].numChildren);
    trace(_tabCombinaisonUser[1].numChildren);
    trace(_tabCombinaisonUser[2].numChildren);
    trace(_tabCombinaisonUser[3].numChildren);
   
    for (j in 0...len)
    {
         var index:Int = len - 1 - j;
         if (_tabCombinaisonUser[index].numChildren > 0)
         {
          if (index < len - 1)
          {
           _tabCombinaisonUser[index + 1].addChild(_tabCombinaisonUser[index].getChildAt(0));
          }
          else
          {
           _tabCombinaisonUser[index].removeChild(_tabCombinaisonUser[index].getChildAt(0));
          }
         }
    }
    _tabCombinaisonUser[0].addChild(txt);
   });
  }
}

 
Mais ça donne ce résultat (voir fichier joint)

Fichier(s) joint(s)





1 utilisateur(s) li(sen)t ce sujet

0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)