Forums Développement Multimédia

Aller au contenu

Un contrôle/objet est introuvable

CODE Actionscript

3 réponses à ce sujet

#1 youtch77

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 51 messages

Posté 07 August 2013 - 13:22 PM

Dans mon application, je créé une fonction pour afficher une image de progression de format circulaire, que j'affiche ou cache comme une progressBar personnalisée avec un objet bitmap. Mais après avoir bien affiché le HGroup qui contient mon objet personnalisé, je n'arrive pas à le cacher avec l'attribut "visible"... pas de hgSpinnerBitmap à l'horizon :
J'ai placé cela dans mon application mxml :
public function afficherCacherSpinnerBitmap(v:Boolean, destinationView:View, hgSpinnerBitmap:HGroup=null):void{
if(v==true){
        var hgSpinnerBitmap:HGroup = new HGroup;
        hgSpinnerBitmap.id = "hgSpinnerBitmap";
        hgSpinnerBitmap.width = 120;
        hgSpinnerBitmap.height = 125;
        hgSpinnerBitmap.verticalAlign = "center";
        hgSpinnerBitmap.horizontalAlign = "center";
        hgSpinnerBitmap.paddingLeft = 0;
        hgSpinnerBitmap.z = 1;
        destinationView.z = 0;
        destinationView.addElement(hgSpinnerBitmap);
        var spinnerBitmap:Spinner = new Spinner;
        //spinnerBitmap.x = -5;
        spinnerBitmap.tickWidth = 5;
        spinnerBitmap.fadeSpeed = 800;
        hgSpinnerBitmap.addElement(spinnerBitmap);
       
        hgSpinnerBitmap.visible = true;
        hgSpinnerBitmap.x = stage.width / 2 - 60;
        hgSpinnerBitmap.y = stage.width / 2;
}else if(v==false){
        this.getChildByName("hgSpinnerBitmap").visible = false;
}      
}
Pour l'afficher dans ma View :
<s:Button id="btnValider" label="Valider" click="parentApplication.afficherCacherSpinnerBitmap(true, this); onClickBtnValider(event)"/>

Or, dans la View, ceci fonctionne :
<s:Button click="parentApplication.afficherCacherSpinnerBitmap(true, this);" label="Afficher le ProgressSpinner">
Mais toujours dans la View, ceci ne fonctionne pas :
<s:Button id="btnValider" label="Valider" click="parentApplication.afficherCacherSpinnerBitmap(false, this);"/>
... Ceci non plus, pourtant j'accède comme cela aux autres contrôle de la vue d'habitude :
<s:Button id="btnValider" label="Valider" click="parentApplication.vnContacts.activeView.afficherCacherSpinnerBitmap(false, this);"/>
Et en me plongeant dans l'arbre des variables, j'ai remarqué que je n'ai pas l'objet hgSpinnerBitmap dans vnContact.activeView (ma View), mais qu'il se trouve dans le nouvel objet (de type HGroup) à la racine de l'arbre des variables. Comment l'atteindre alors ?

#2 darkrat

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 61 messages

Posté 07 August 2013 - 19:20 PM

je ne connais pas trop le mxml mais tu utilises un getChildByName pour récupérer ton objet et tu as placé son nom en id ca ne devrait pas être en name?

#3 youtch77

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 51 messages

Posté 08 August 2013 - 17:47 PM

C'est pas comme sur Flash, ça m'étonne, les attribut name et id ce n'est pas la même chose ? D'ailleurs après vérif je confirme que c'est pareil (CF documentation d'Adobe) http://help.adobe.co...62b90-7fe9.html !
Auriez vous une piste pour manipuler les contrôles de l'application "à la volée" ?

#4 youtch77

    Ceinture Verte

  • Members
  • PipPipPipPip
  • 51 messages

Posté 09 August 2013 - 13:57 PM

J'ai aussi essayé de changer le script en bouclant sur les contrôles avec ce code :
for each(control:HGroup in this)
{ if(control.id=="hgSpinnerBitmap") controle.visible=false }
Verdict : comme unique résultat control est null... je me demande si il faut boucler this ou sinon l'autre objet de l'application ?

Modification le 21/08/13 : Finalement il parait simple de créer un objet ProgressBar au début du traitement, avec l'attribut indeterminate, en le supprimant à la fin du traitement... Plus petit code et plus simple :mrgreen:



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