Forums Développement Multimédia

Aller au contenu

Variable echange entre deux Objets

CODE

30 réponses à ce sujet

#1 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 20 April 2018 - 15:37 PM

Bonjour,

Je développe une petite application qui va me permettre d'ouvrir des Symboles et les placer sur la scène (objet contenu dans la bibliothèque), en fonction de la valeur contenu dans une texteBox j'aimerai highlighter un objet contenu dans symbole.

J'ai pensé faire une boucle Switch - case qui viendrai vérifier la valeur contenu dans un INTEGER et en fonction de cette valeur je peux highlighter tel ou tel objet, c'est une solution plutôt simple mais je ne vois pas comment dans le code principal qui appel le symbole écrire cet INTEGER qui ce trouve a l'interieur de l'objet .

Vous avez une idée ?

#2 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 20 April 2018 - 17:39 PM

Bonjour,

Quel langage, AS ou JS ?
Tu as un bout de code, pour voir comment tu as commencé ?

#3 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 20 April 2018 - 17:57 PM

Bonjour Monsieur SPI,

tout en AS3, je vais faire les export pour que tu puisses mieux comprendre merci

#4 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 03:37 AM

VOici un bout de code

<p>
</p>
<p> </p>
<div>var 008-LCU-001:Bitmap = new Clip (new 008-LCU-001());</div>
<div>008-LCU-001.width = 1920;</div>
<div>008-LCU-001.y = -100;</div>
<div> </div>
<div>
<div>var 008-LCU-002:Bitmap = new Clip (new 008-LCU-002());</div>
<div>008-LCU-002.width = 1920;</div>
<div>008-LCU-002.y = -100;</div>
</div>
<div> </div>
<div>
<div>var 008-LCU-003:Bitmap = new Clip (new 008-LCU-003());</div>
<div>008-LCU-003.width = 1920;</div>
<div>008-LCU-003.y = -100;</div>
<div> </div>
</div>
<div><br>
<div><span>switch(InputVar.text)</span></div>
<div><span>{<span style="white-space:pre"> </span></span></div>
<div> </div>
<div><span>//------------------------------------------------------------------------------------------------------//</span></div>
<div><span>//1ere Partie---//-----------RECHERCHE SUR LES ELEMENT----------------------- //</span></div>
<div><span>//------------------------------------------------------------------------------------------------------//<span style="white-space:pre"> </span></span></div>
<div> </div>
<div><span>// Capteur 1 Search//</span></div>
<div> </div>
<div><span>case &quot;TIT-100&quot;:</span></div>
<div> </div>
<div><span>Masque.visible=true;</span></div>
<div><span>addChild(008-LCU-001);</span></div>
<div><span>// Ecriture d&#39;une variable (un INTEGER) a l&#39;interieur du symbole 008-LCU-001 pour mettre en surbrillance TIT-100</span></div>
<div><span>removeChild(008-LCU-002);</span></div>
<div><span>removeChild(008-LCU-003);</span></div>
<div><span>break;</span></div>
<div> </div>
<div>
<div><span>case &quot;TIT-101&quot;:</span></div>
<div> </div>
<div><span>Masque.visible=true;</span></div>
<div><span>addChild(008-LCU-001);</span></div>
<div><span>// Ecriture d&#39;une variable (un INTEGER) a l&#39;interieur du symbole 008-LCU-001 pour mettre en surbrillance TIT-101</span></div>
<div><span>removeChild(008-LCU-002);</span></div>
<div><span>removeChild(008-LCU-003);</span></div>
<div><span>break;</span></div>
<div> </div>
</div>
<div>
<div><span>case &quot;TIT-103&quot;:</span></div>
<div> </div>
<div><span>Masque.visible=true;</span></div>
<div><span>addChild(008-LCU-001);</span></div>
<div><span>// Ecriture d&#39;une variable (un INTEGER) a l&#39;interieur du symbole 008-LCU-001 pour mettre en surbrillance TIT-103</span></div>
<div><span>removeChild(008-LCU-002);</span></div>
<div><span>removeChild(008-LCU-003);</span></div>
<div><span>break;</span></div>
</div>
<div> </div>
<div>
<div><span>case &quot;TIT-200&quot;:</span></div>
<div> </div>
<div><span>Masque.visible=true;</span></div>
<div><span>// Ecriture d&#39;une variable (un INTEGER) a l&#39;interieur du symbole 008-LCU-001 pour mettre en surbrillance TIT-200</span></div>
<div><span>addChild(008-LCU-002);</span></div>
<div><span>removeChild(008-LCU-001);</span></div>
<div><span>removeChild(008-LCU-003);</span></div>
<div><span>break;</span></div>
<div> </div>
</div>
<div> </div>
<span>
</span></div>
<div> </div>


j'ai une 100ene de cases , avec pour chaque conditions j&amp;#39;aimerai faire apparaître un symbole sur la scene ( faire disparaitre les autres ) , c'est un peut rustique comme solution car je dois taper pour chaque cas les 100 AddChild et removeChild mais je n'ai pas reussi a trouver une boucle fonctionnelle pour faire ca

#5 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 11:44 AM

Bonjour,

Le code que tu as déposé est illisible, peux-tu le corriger s'il te plait et retirer tous les divs, span et autres choses qui n'ont rien à voir ?

Deuxième question, quelle est la différence entre les clip : 008-LCU-00x (x=numéro) ?

Et enfin, pourquoi : var 008-LCU-001:Bitmap = new Clip (new 008-LCU-001()) ?
Quel est ton but quand tu crée une variable de type Bitmap, dans laquelle tu crée un Clip dans lequel tu passe un nouveau Clip en paramètres ?

Peux-tu poster un FLA qui contient tes clips et ce bout de code ?
J'ai l'impression que tu fais fausse route dans la méthode que tu as choisi pour gérer tout ça, mais sans voir tes clips (et leur différences) difficile de te donner une autre solution (qui à mon avis passe par une classe - un peu de POO - et/ou un tableau).

#6 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 15:57 PM

Ha oui, et si tu peux nous donner aussi ton objectif final, ce serait un plus...
En gros, que cherches-tu à faire, d'une manière globale ?
Afficher une grille, faire un quiz, une liste ... ?
Connaître ton objectif nous permet de proposer d'autres solutions que tu n'envisagerai peut être pas.

#7 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 17:07 PM

Monsieur Spi,

Pardon pour ce code illisible, je reprends depuis le debut, j'ai pour objectif de faire une appli qui va me permettre de centraliser des documents pdf notamment pour pouvoir les ouvrir a partir de cette appli, et faire de la cherche d'information sur un item via son nom tapé dans une texteBox .

Dans mon programme principal j'ai une Super boucle Switch-Case qui va vérifier le contenu taper et si il match avec un "case" j'aimerai afficher des informations relative a ce mot clé tapé . Pour cette parti c'est plutot simple .

Une des fonctions supplémentaire que j'aimerai faire c'est ( en plus d'afficher des informations relative a cet ITEM) localiser l'Item que la personne a tapé sur un genre de plan, ce plan serais un dessin contenant des lignes, carré, rectangles etc ... et donc en fonction de la valeur tapé ( 008-LCU-001 , 008-LCU-002, TIT-100 etc...) afficher le plan correspondant et mettre un surbrillance l'Item dans le plan .


Un exemple Imaginons que l'operateur tape le mot clé "France" j'aimerai donc afficher des infos sur le pays Français ( démographie, nombre d'habitants, reference historique etc ... ) ouvir un objet dans ma bibliothèque, le placer dans la scene et mettre en surbrillance les frontières de la France et le nom du pays . C'est exactement ce que je souhaite faire avec mon appli !

Et donc Europe ce serait par exemple 008-LCU-001 , Afrique --> 008-LCU-002 Etc ... et TIT-100---> France, TIT-101---->Bresil etc ..


Dans mon programe j'ai une boucle switch-case pour vérifier la valeur tapé, et en fonction de cette valeur je vais remplir mes zone de textes ( démographie, nombre d'habitants, reference historique etc ... ) et ouvrir le bon CLIP . Ce clip possédera également une boucle switch-case et mettra en surbrillance un élément en fonction (France,Allemangne etc ... pour le clip europe par exemple)

La difficulté de cette exercice c'est de pourvoir crée un genre variable d’échange entre le code principale et le code dans chaque clip ( a moins que mes clips peuvent taper dans le code de principal ?? ) .
En realité j'ai meme besoin de deux variable ( ou paramètres ) pour pouvoir faire l’opération inverse également, par exemple je tape France, j'ai le Clip Europe qui s'ouvre, la France est en surbrillance , et les informations relative au pays sont écrite dans zone de textes des grace a la proprieté .txt , si ensuite je clique je l’Allemagne ca reviendrai a faire taper dans la barre de recherche "Allemagne" .

Petite Remarque, je peut egalement taper Europe pour afficher le clip Europe avec l'europe en surbrillance .

#8 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 17:08 PM

Voici mon appli, le code ce trouve sur la frame2

#9 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 17:10 PM

le voici en PJ

Fichier(s) joint(s)



#10 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 19:23 PM

Re,

J'ai parcouru le code et... je me suis rapidement arrêté.
Je vois un problème récurent de factorisation, ça rend le code illisible, et inutilement lourd.

Prenons quelques exemples :

// Fonction clique sur la texte "Proposition 1" //
Masque.Proposition1.addEventListener(MouseEvent.MOUSE_DOWN, Propo1Sel);

function Propo1Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition1.text;
}

// Fonction clique sur la texte "Proposition 2" //
Masque.Proposition2.addEventListener(MouseEvent.MOUSE_DOWN, Propo2Sel);

function Propo2Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition2.text;
}

// Fonction clique sur la texte "Proposition 3" //
Masque.Proposition3.addEventListener(MouseEvent.MOUSE_DOWN, Propo3Sel);

function Propo3Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition3.text;
}

// Fonction clique sur la texte "Proposition 4" //
Masque.Proposition4.addEventListener(MouseEvent.MOUSE_DOWN, Propo4Sel);

function Propo4Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition4.text;
}

// Fonction clique sur la texte "Proposition 5" //
Masque.Proposition5.addEventListener(MouseEvent.MOUSE_DOWN, Propo5Sel);

function Propo5Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition5.text;
}

// Fonction clique sur la texte "Proposition 6" //
Masque.Proposition6.addEventListener(MouseEvent.MOUSE_DOWN, Propo6Sel);

function Propo6Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition6.text;
}

// Fonction clique sur la texte "Proposition 7" //
Masque.Proposition7.addEventListener(MouseEvent.MOUSE_DOWN, Propo7Sel);

function Propo7Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition7.text;
}

// Fonction clique sur la texte "Proposition 8" //
Masque.Proposition8.addEventListener(MouseEvent.MOUSE_DOWN, Propo8Sel);

function Propo8Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition8.text;
}

// Fonction clique sur la texte "Proposition 9" //
Masque.Proposition9.addEventListener(MouseEvent.MOUSE_DOWN, Propo9Sel);

function Propo9Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition9.text;
}

// Fonction clique sur la texte "Proposition 10" //
Masque.Proposition10.addEventListener(MouseEvent.MOUSE_DOWN, Propo10Sel);

function Propo10Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition10.text;
}

// Fonction clique sur la texte "Proposition 11" //
Masque.Proposition11.addEventListener(MouseEvent.MOUSE_DOWN, Propo11Sel);

function Propo11Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition11.text;
}

// Fonction clique sur la texte "Proposition 12" //
Masque.Proposition12.addEventListener(MouseEvent.MOUSE_DOWN, Propo12Sel);

function Propo12Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition11.text;
}

// Fonction clique sur la texte "Proposition 13" //
Masque.Proposition13.addEventListener(MouseEvent.MOUSE_DOWN, Propo13Sel);

function Propo13Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition13.text;
}

// Fonction clique sur la texte "Proposition 14" //
Masque.Proposition14.addEventListener(MouseEvent.MOUSE_DOWN, Propo14Sel);

function Propo14Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition14.text;
}

// Fonction clique sur la texte "Proposition 15" //
Masque.Proposition15.addEventListener(MouseEvent.MOUSE_DOWN, Propo15Sel);

function Propo15Sel(evt: MouseEvent) {
InputVar.text=Masque.Proposition15.text;
}

pourrait être simplifié par ces quelques lignes :

// Fonction clique sur un texte //
Masque.addEventListener(MouseEvent.MOUSE_DOWN, textSelect);

function textSelect(e:MouseEvent) {
        InputVar.text = e.target.text;
}

Le truc c'est d'écouter le click sur le conteneur ("Masque"), et de regarder sur quoi on a réellement cliqué ("e.target"), puis de récupérer le texte de l'élément sur lequel on viens de cliquer.

Ensuite :

function RechercheVariable(e:Event):void
{


//--------------------------------------------------Texte Dynamique------------------------------------------------------//

        switch(InputVar.text)
        {  

        //------------------------------------------------------------------------------------------------------//
        //1ere Partie---//-------------RECHERCHE SUR LA SYNTAXE DES LCU, RTU, PLCC----------------------------- //
        //------------------------------------------------------------------------------------------------------//       
 
        // LCU-001 Search//
         
                case "LCU1":
                case "LCU01":
                case "LCU001":
                case "LCU-1":
                case "LCU-01":
                case "LCU-001":  

                        Masque.visible=true;
                        Masque.Proposition1.text="HVAC-EEB-008-LCU-001";
                        Masque.Proposition2.text="HVAC-TEC-135-LCU-1-1";
                        Masque.Proposition3.text="HVAC-FSAL-101-LCU-1";
                        Masque.Proposition4.text="";
                        Masque.Proposition5.text="";
                        Masque.Proposition6.text="";
                        Masque.Proposition7.text="";
                        Masque.Proposition8.text="";
                        Masque.Proposition9.text="";
                        Masque.Proposition10.text="";
                        Masque.Proposition11.text="";
                        Masque.Proposition12.text="";
                        Masque.Proposition13.text="";
                        Masque.Proposition14.text="";
                        Masque.Proposition15.text="";                    
                break;
 
        // LCU-002 Search //
         
                case "LCU2":
                case "LCU02":
                case "LCU002":
                case "LCU-2":
                case "LCU-02":
                case "LCU-002":  

                        Masque.visible=true;
                        Masque.Proposition1.text="HVAC-EEB-007-LCU-002";
                        Masque.Proposition2.text="HVAC-TEC-136-LCU-2-1";
                        Masque.Proposition3.text="HVAC-TEC-136-LCU-2-2";
                        Masque.Proposition4.text="HVAC-FSAL-102-LCU-2";
                        Masque.Proposition5.text="";
                        Masque.Proposition6.text="";
                        Masque.Proposition7.text="";
                        Masque.Proposition8.text="";
                        Masque.Proposition9.text="";
                        Masque.Proposition10.text="";
                        Masque.Proposition11.text="";
                        Masque.Proposition12.text="";
                        Masque.Proposition13.text="";
                        Masque.Proposition14.text="";
                        Masque.Proposition15.text="";                            
                break;

        // LCU-003 Search //
         
                case "LCU3":
                case "LCU03":
                case "LCU003":
                case "LCU-3":
                case "LCU-03":
                case "LCU-003":  

                        Masque.visible=true;
                        Masque.Proposition1.text="HVAC-EEB-006-LCU-003";
                        Masque.Proposition2.text="HVAC-EEB-110-LCU-003";
                        Masque.Proposition3.text="HVAC-FSAL-105-LCU-3-1";
                        Masque.Proposition4.text="HVAC-FSAL-105-LCU-3-2";
                        Masque.Proposition5.text="";
                        Masque.Proposition6.text="";
                        Masque.Proposition7.text="";
                        Masque.Proposition8.text="";
                        Masque.Proposition9.text="";
                        Masque.Proposition10.text="";
                        Masque.Proposition11.text="";
                        Masque.Proposition12.text="";
                        Masque.Proposition13.text="";
                        Masque.Proposition14.text="";
                        Masque.Proposition15.text="";                            
                break;

        // LCU-004 Search //
         
                case "LCU4":
                case "LCU04":
                case "LCU004":
                case "LCU-4":
                case "LCU-04":
                case "LCU-004":  

                        Masque.visible=true;
                        Masque.Proposition1.text="HVAC-EEB-010-LCU-4-1";
                        Masque.Proposition2.text="HVAC-EEB-009-LCU-4-2";
                        Masque.Proposition3.text="HVAC-FSAL-102-LCU-4";
                        Masque.Proposition4.text="";
                        Masque.Proposition5.text="";
                        Masque.Proposition6.text="";
                        Masque.Proposition7.text="";
                        Masque.Proposition8.text="";
                        Masque.Proposition9.text="";
                        Masque.Proposition10.text="";
                        Masque.Proposition11.text="";
                        Masque.Proposition12.text="";
                        Masque.Proposition13.text="";
                        Masque.Proposition14.text="";
                        Masque.Proposition15.text="";                            
                break;
         

        // ... ect...


        default:
                Masque.Proposition1.text="";
                Masque.Proposition2.text="";
                Masque.Proposition3.text="";
                Masque.Proposition4.text="";
                Masque.Proposition5.text="";
                Masque.Proposition6.text="";
                Masque.Proposition7.text="";
                Masque.Proposition8.text="";
                Masque.Proposition9.text="";
                Masque.Proposition10.text="";
                Masque.Proposition11.text="";
                Masque.Proposition12.text="";
                Masque.Proposition13.text="";
                Masque.Proposition14.text="";
                Masque.Proposition15.text="";
                Masque.visible=true;
        }

}

Pourrait être remplacé par :

// afficher les textes
function displayTexts(t1 = "",t2 = "",t3 = "",t4 = "",t5 = "",t6 = "",t7 = "",t8 = "",t9 = "",t10 = "",t11 = "",t12 = "",t13 = "",t14 = "",t15 = ""){
        Masque.visible = true;
        Masque.Proposition1.text = t1;
        Masque.Proposition2.text = t2;
        Masque.Proposition3.text = t3;
        Masque.Proposition4.text = t4;
        Masque.Proposition5.text = t5;
        Masque.Proposition6.text = t6;
        Masque.Proposition7.text = t7;
        Masque.Proposition8.text = t8;
        Masque.Proposition9.text = t9;
        Masque.Proposition10.text = t10;
        Masque.Proposition11.text = t11;
        Masque.Proposition12.text = t12;
        Masque.Proposition13.text = t13;
        Masque.Proposition14.text = t14;
        Masque.Proposition15.text = t15;  
}

// rechercher un texte
function RechercheVariable(e:Event):void {

        switch(InputVar.text){  
 
                // LCU-001 Search//
         
                case "LCU1":
                case "LCU01":
                case "LCU001":
                case "LCU-1":
                case "LCU-01":
                case "LCU-001":  
                        displayTexts("HVAC-ARH SVC-LCU-56", "HVAC-TEC-135-LCU-1-1", "HVAC-FSAL-101-LCU-1");              
                break;
 
                // LCU-002 Search //
         
                case "LCU2":
                case "LCU02":
                case "LCU002":
                case "LCU-2":
                case "LCU-02":
                case "LCU-002":  
                        displayTexts("HVAC-ARH SVC-LCU-56", "HVAC-TEC-136-LCU-2-1", "HVAC-TEC-136-LCU-2-2", "HVAC-FSAL-102-LCU-2");                              
                break;
         
                // ... ect...

                default:
                        displayTexts();
        }

}

Ici le switch/case ne me semble pas efficace, il faudrait des stocks de données dans lesquels on va piocher selon certaines conditions, là gérer ça par des lignes de if/else ou switch/case va rapidement devenir un enfer à maintenir. L'idéal serait une REGEXP qui irais taper dans une mini base de donnée jSon ou XML ou à défaut un tableau.

Cette partie :

// Fonction pour ouvrir l'extrait du schemas electrique//
ExtraitElec_btn.addEventListener(MouseEvent.MOUSE_DOWN,ExtraitElecFrame2);

function ExtraitElecFrame2(evt:MouseEvent) {
        var targetURL:URLRequest = new URLRequest ( ExtraitElec );               
        navigateToURL(targetURL, "_self");
}

// Fonction pour ouvrir l'extrait du schemas hydraulique//
ExtraitHydrau_btn.addEventListener(MouseEvent.MOUSE_DOWN,ExtraitHydauFrame2);

function ExtraitHydauFrame2(evt:MouseEvent) {
        var targetURL:URLRequest = new URLRequest ( ExtraitHydrau );
           navigateToURL(targetURL, "_self");
}

// Fonction pour ouvrir le schemas hydraulique//
PlanHydrau_btn.addEventListener(MouseEvent.MOUSE_DOWN,PlanHydrauFrame2);

function PlanHydrauFrame2(evt:MouseEvent)
{
        var targetURL:URLRequest = new URLRequest ( PlanHydrau );                              
        navigateToURL(targetURL, "_self");
}

// Fonction pour ouvrir le schemas electrique//
PlanElec_btn.addEventListener(MouseEvent.MOUSE_DOWN,PlanElecFrame2);

function PlanElecFrame2(evt:MouseEvent)
{
        var targetURL:URLRequest = new URLRequest ( PlanElec );
        navigateToURL(targetURL, "_self");
}

// Fonction pour ouvrir la doc constructor//
DataSheet_btn.addEventListener(MouseEvent.MOUSE_DOWN,DataSheetFrame2);

function DataSheetFrame2(evt:MouseEvent)
{
        var targetURL:URLRequest = new URLRequest ( DataSheet );
        navigateToURL(targetURL, "_self");
}

Peut se simplifier par :

// définir les url des boutons
PlanElec_btn.lien = ExtraitElec;
PlanHydrau_btn.lien = ExtraitHydrau;
ExtraitElec_btn.lien = PlanHydrau;
ExtraitHydrau_btn.lien = PlanElec;
DataSheet_btn.lien = DataSheet;

function gotoUrl(e:MouseEvent){
        var targetURL:URLRequest = new URLRequest ( e.currentTarget.lien );
        navigateToURL(targetURL, "_self");
}

ExtraitElec_btn.addEventListener(MouseEvent.MOUSE_DOWN,gotoUrl);
ExtraitHydrau_btn.addEventListener(MouseEvent.MOUSE_DOWN,gotoUrl);
PlanHydrau_btn.addEventListener(MouseEvent.MOUSE_DOWN,gotoUrl);
PlanElec_btn.addEventListener(MouseEvent.MOUSE_DOWN,gotoUrl);
DataSheet_btn.addEventListener(MouseEvent.MOUSE_DOWN,gotoUrl);



Tu ne peux pas fonctionner avec des successions de copier/coller, tu dois imaginer des fonctions génériques qui font le boulot à l'aide de quelques paramètres. D'autre part, ces paramètres devraient se trouver dans des tableaux (facilement manipulables/updatables) voire mieux, dans un fichier jSon externe facilement maintenable dans l'application, sinon à chaque modif ou ajout il faut modifier l'appli et recompiler.

Pour finir, je n'ai pas retrouvé le premier code que tu as posté dans le FLA que tu as fourni ensuite.

#11 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 19:57 PM

Monsieur Spi,

Effectivement c'est une successions de copier/coller avec des paramétrés différents pour chaque case, malheureusement je n'y connais rien dans les base de données, encore moins le jSon et comme j'aimerai finir au plus vite cette petite appli j'evite le elearning ( ce sera pour plutard) pour avance le plus vite possible sur ce petit projet perso.

Oui le code avec les appels de Clip je l'ai supprimé car je ne trouve pas le moyen d'accéder a la variable " InputVar.text" a partir du clip, je suis donc a la recherche d'une autre solution et j'ai nettoyé cette partie

#12 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 19:59 PM

Citation

Oui le code avec les appels de Clip je l'ai supprimé car je ne trouve pas le moyen d'accéder a la variable " InputVar.text" a partir du clip, je suis donc a la recherche d'une autre solution et j'ai nettoyé cette partie

et avec :

stage.InputVar.text


#13 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 21 April 2018 - 20:19 PM

Je test cette syntaxe et te fais un retour ! Merci ça me permets de m’améliorer, je vais tenter de me pencher également sur la question des données demain car ton idée est vraiment sympas .

Si je peux par exemple exploiter certaines données a l'exterieur de l'appli pour les modifier comme par exemple un fichier .pdf qui aurait changé de nom, ou une variable avec une valeur différente ( une constante a changer comme mon exemple avec la demographie ) ce serait genial de pouvoir le faire via un fichier excel csv par exemple, plutot que modifier le code et compiler a chaque fois .
Je ne voulais pas faire trop compliqué au final cet echange donne des idées et fais evoluer ma petite appli c'est cool !!!

#14 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 20:22 PM

Correction, pour accéder à une variable sur la timeline principale depuis un clip tu peux utiliser :

MovieClip(root).InputVar.text

Pour le reste, je te recommande déjà de factoriser les parties que j'ai soulevé, quand ton code sera plus malléable on pourra regarder pour rendre tout ça dynamique.

#15 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 21 April 2018 - 20:43 PM

Et voici un exemple d'utilisation du XML, à toi de l'étendre à tes besoins.

Fichier(s) joint(s)



#16 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 22 April 2018 - 08:23 AM

Monsieur Spi,

Merci !!!
J'applique a la lettre tes conseils je suis en train de factoriser toutes les instructions repetitives, mettre a jour des éléments graphique sur la scene, ensuite je vais crée 2,3 Clip pour voir si l’interactivité grâce a cet instruction MovieClip(root).InputVar.text va fonctionner .

Je reviens vers toi une fois que cela est terminé .
J'ai deja fait un énorme progrès ce weekend tant sur mon appli car sur la façon de programmer !

Concernant la premiere partie du code avec la boucle Switch-case , je ne vais pas exporter les donnée car ils ne servent qu'a verifier si la syntaxe du mot clé tapé est bonne, par contre il sera effectivement intéressant de mettre tous les éléments relatif au mot clé ( les mots clé dans le masque) dans le fichier xml .

Autre chose qui n'a rien a voir, avec le topic initial et je vais peut etre loin mais existe t-il une méthode ou propriété qui permets d'ouvrir un fichier .pdf a une page précisé dans le code AS3, un peut comme un CRLT-F dans adobe reader ?

#17 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 22 April 2018 - 11:33 AM

Citation

Concernant la premiere partie du code avec la boucle Switch-case , je ne vais pas exporter les donnée car ils ne servent qu'a verifier si la syntaxe du mot clé tapé est bonne, par contre il sera effectivement intéressant de mettre tous les éléments relatif au mot clé ( les mots clé dans le masque) dans le fichier xml .

Il faut voir le fichier XML comme une mini base de données qui contient toutes les réponses, l'appli ne sert qu'à poser des questions et interpréter la réponse trouvée dans la base. Il faut donc passer un moment pour structurer ça correctement, ici par exemple il me semble qu'une REGEXP peut permettre de poser la question "est ce que ce qui a été tapé se trouve tout ou en partie dans un des nœuds du XML ?" si oui alors tu récupère le contenu du nœud et tu traite graphiquement la réponse.

L'idée c'est de faire un moteur de recherche, tout simplement, qui parcours un index (ici le fichier XML) pour obtenir une réponse.

Citation

Autre chose qui n'a rien a voir, avec le topic initial et je vais peut etre loin mais existe t-il une méthode ou propriété qui permets d'ouvrir un fichier .pdf a une page précisé dans le code AS3, un peut comme un CRLT-F dans adobe reader ?
Pas a ma connaissance, à moins de passer par une ANE ou un lecteur dédié, mais peut-être qu'une solution existe en AS3, il faut chercher.

#18 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 23 April 2018 - 18:25 PM

Bonjour Monsieur Spi,

J'ai pu légèrement avancer sur mon petit projet aujourd'hui,
Comme tu peux le voir en pj j'ai mis ma derniere version et j'aimerai avoir ton avis sur la structure du code pour faire apparaitre mes objets sur la scene en fonction de la valeur dans InputVar.text .

Pour l'instant je n'ai fait qu'un seul objet et je l'ai placé sur la scène , l'objet EEB008LCU001, l’intérêt serait qu'il apparaisse début la bibliothèque jusqu’à la scene quand la valeur InputVar.text vaudra " HVAC-EEB-008-LCU-001", mais aussi EEB-008-TIT-008, BF-001-TE-0101 etc ...
le rectangle concerné dans l'objet EEB008LCU001 aura alors une couleur différentes et je vais jouer sur les liens hypertexte dans le menu du ruban vert a gauche et sur le remplissage des texte en bas de la scene pour avoir tout les infos possible a ce tag

Jusqu’à la je n'ai pas de soucis, le problème ce que pour " HVAC-EEB-008-LCU-002" je vais devoir crée un autre objet graphique "EEB008LCU002" dans la bibliothèque l'appeler et faire un removeChild sur les autres.

Je vais donc retomber dans mes travers a faire des copier-coller avec pres de 150 removeChild et 1 AddChild pour chaque "mots clé" auras tu une astuce pour cela ?

J'en profite également pour savoir si tu connais une fonction qui pourrais permettre de rendre un objet transparent si il sort d'une certaine zone ?

Fichier(s) joint(s)



#19 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 23 April 2018 - 18:36 PM

Citation

150 removeChild et 1 AddChild

Tu peux essayer une fonction générique qui sert à vider les objets d'un conteneur.
Cela impose de mettre tous tes objets dans un même conteneur (un clip).
Puis tu fais juste un addChild de ton nouvel objet.


// vider un conteneur
function videcontainer(cont){
        while(cont.getChildAt(0)){
                cont.removeChildAt(0);
        }
}
 

Citation

Je vais donc retomber dans mes travers a faire des copier-coller
Si tu réfléchis bien avant de coder tu n'es jamais obligé de passer par des copier/coller à répétition.

Citation

rendre un objet transparent si il sort d'une certaine zone
Connaitre la position et la taille de la zone, puis :

function sortirzone(zone, ob){
        if(ob.x > zone.x+zone.width) ob.alpha = 0;
        if(ob.x < zone.x) ob.alpha = 0;
        if(ob.y < zone.y) ob.alpha = 0;
        if(ob.y > zone.y+zone.height) ob.alpha = 0;
}

Que l'on peut simplifier par :

function sortirzone(zone, ob){
        if(ob.x > zone.x+zone.width || ob.x < zone.x || ob.y < zone.y || ob.y > zone.y+zone.height) ob.alpha = 0;
}


Ou si c'est juste masquer une partie d'une zone utilise un masque (soit via un calque de type masque, soit en code avec setMask)


Citation

je vais devoir crée un autre objet graphique "EEB008LCU002" dans la bibliothèque l'appeler et faire un removeChild sur les autres
C'est là que le problème apparaît...
Tes "objets graphiques" semblent toujours les mêmes, avec juste comme différence leur contenu.
Donc pour moi il faut créer un objet générique que tu remplis selon quelques paramètres.
L'idéal serait de faire une classe, mais je ne sais pas si tu sais faire de la POO.

#20 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 23 April 2018 - 19:08 PM

Monsieur Spi,

Merci je teste cette fonction :

// vider un conteneur
function videcontainer(cont){
while(cont.getChildAt(0)){
cont.removeChildAt(0);
}
}

Ça me paraît pas mal du tout !
Non malheureusement les objets graphiques sont complètements différents ( il y a quelques objets graphique qui se ressemble mais il y en a énormément qui seront unique )

Par contre je ne vois pas du tout comment fonctionne le code pour la gestion de la transparence, dois je mettre cette fonction a l’intérieur de l'objet ?

#21 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 23 April 2018 - 19:16 PM

Ou si c'est juste masquer une partie d'une zone utilise un masque (soit via un calque de type masque, soit en code avec setMask)

Oui effectivement je ne souhaite pas que l'objet graphique soit complément opaque, mais juste la partie qui est a extérieur du au zoom ou au drag

#22 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 24 April 2018 - 13:04 PM

Citation

Non malheureusement les objets graphiques sont complètements différents ( il y a quelques objets graphique qui se ressemble mais il y en a énormément qui seront unique )

Question : ce que tu appelle "objet graphique" est une sorte d'image ?
Si oui, il faut utiliser un système qui n'utilise qu'un conteneur (clip) dans lequel tu charge une image externe via son nom.
Par exemple, si tu cherche à afficher "EEB008LCU001", il suffit de nommer ton image "EEB008LCU001.jpg" puis de créer une fonction qui va chercher l'image correspondante au texte saisi (ou un texte approchant).
Ca éviterai de devoir créer des centaines d'objets inutiles dans ton application.

#23 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 24 April 2018 - 17:27 PM

L'objet graphique, c'est effectivement une image que j'ai dessiné sur illustrator composé de différentes formes et texte .
Je t'avoue que je ne vois pas trop comment faire tous cela, je pense deja tenter une premiere version de mon appli pour tester sa fonctionnalite et surtout pondre quelque chose rqpidement et ensuite ( apres une petite formation sur la POO) je vais tenter de nettoyer le code .

Mais je t'avoue que je calle deja sur pas mal de point car l'aide sur l'AS3 n'est pas simple et il y a tres peu d'infos en Français .
un peu comme avec cette histoire de Mask, je trouve cela assez complexe et tres peu d'infos ou d'exemple, ou encore sur la methode pour lancer un fichier Excel a partir d'un bouton... pas facile

#24 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 24 April 2018 - 18:30 PM

re,

Tu as beaucoup d'infos/docs/tutos/exemples sur le Wiki de Mediabox : http://forums.mediab.../wiki/tutoriaux
Ou en faisant une recherche sur le forum avec par exemple comme mot clé "setMask", il y a 14 ans d'échanges autour de Flash et Actionscript, tu devrait trouver ton bonheur.

#25 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 24 April 2018 - 19:03 PM

Merci je vais jeter un coup d'oeil

encore une chose peux tu m'expliquer pourquoi je n'arrive pas a crée une instance d'un objet de ma bibliothèque avec cette syntaxe :

var EEB008LCU001 : Symbole47 = new symbole47()
addChild(EEB008LCU001);

le compilateur me dit que je fais appel a une methode qui ne semble pas definie alors que le symbole 47 est bien dans ma bibliothèque, quelque chose ne va pas dans la syntaxe ?

J'ai cru comprendre que en AS3 sous Air il est possible de lancer des .exe, est-il possible de lancer un fichier excel en specifant le chemin absolu ?

#26 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 24 April 2018 - 19:29 PM

var EEB008LCU001 : Symbole47 = new symbole47()

Deux choses, le type utilisé et la syntaxe.
Si tu as demandé un export AS sur ton clip tout va bien pour le type.
Puis si tu as appelé ton export (liaison) "Symbole47" alors le type et le "new" doivent avoir la même syntaxe.
AS3 fait la différence entre les majuscules et minuscules, donc :

var EEB008LCU001 : Symbole47 = new Symbole47()
Devrait fonctionner (avec majuscule).

#27 luks_l

    Ceinture Blanche

  • Members
  • Pip
  • 1 messages

Posté 25 April 2018 - 08:31 AM

Bonjour,

Cela m’intéresse également la syntaxe pour ouvrir un fichier excel, si quelqu'un connais la méthode je suis preneur ;)

#28 Monsieur Spi

  • Community Manager
  • PipPipPipPipPipPipPipPip
  • 6996 messages

Posté 25 April 2018 - 12:19 PM

Bonjour,

Citation

Cela m’intéresse également la syntaxe pour ouvrir un fichier excel

Quel rapport avec les questions précédentes ?
Le mieux serait d'ouvrir un nouveau sujet pour ta question, afin qu'on ne mélange pas les réponses, merci.

#29 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 25 April 2018 - 15:19 PM

effectivement vaut mieux ne pas melanger les sujet, Merci Monsieur Spi c'etait bien un probleme de Majuscule .
Merci encore

#30 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 26 April 2018 - 15:56 PM

Monsieur Spi,

Cette syntaxe

MovieClip(root).InputVar.text

est également valable pour lance une "Funtion" qui est dans ma timeline principale ?
Je souhaiterai lancer une fonction dont le code est sur la timeline principale via un ecouteur d'evenement .

#31 Yakub

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 71 messages

Posté 26 April 2018 - 16:39 PM

J'ai tenté cette syntaxe :

.addEventListener(MouseEvent.MOUSE_DOWN, MovieClip(root).RechercheVariable);

ca marche, super !



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

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

authorised training centre

Centre de Formation Mediabox - Adobe et Apple Authorised Training Center.

Déclaré auprès de la Direction du Travail et de la Formation Professionnelle

Mediabox : SARL au capital de 62.000€ - Numéro d'activité : 11 75 44555 75 - SIRET : 49371646800035

MEDIABOX, 23, rue de Bruxelles, 75009 PARIS

FFP