Visualizzazione dei risultati da 1 a 5 su 5

Discussione: XML e button

  1. #1
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14

    (AS2) XML e button

    Buongiorno,
    scusate se probabilmente pongo un quesito banale, ma non lo e' per me che mi sono avvicinato a flash da poco.
    Ho un file XML chiamato prodotti.xml con questa struttura tipo:

    codice:
    <prodotti>
      <prodotto id="1" descrizione="Forno" metodo="rimessa diretta" prezzo="Euro 150,00">
        <immagine url="1.jpg" />
        <immagine url="2.jpg" />
        <immagine url="3.jpg" />
      </prodotto>
      <prodotto id="2" descrizione="Cucina" metodo="rimessa diretta" prezzo="Euro 100,00">
        <immagine url="a.jpg" />
        <immagine url="b.jpg" />
      </prodotto>
      <prodotto id="3" descrizione="Microonde" metodo="rimessa diretta" prezzo="Euro 200,00">
        <immagine url="forno1.jpg" />
        <immagine url="forno2.jpg" />
        <immagine url="forno3.jpg" />
      </prodotto>
    </prodotti>
    Sullo stage, inoltre, ho inserito un movie clip di istanza "button1" costituito semplicemente da un dinamic text di istanza "testoprodotto" che prende il testo direttamente dall'XML attraverso un actionscript (2.0) cosi' come segue:

    codice:
    var myXml:XML = new XML();
    myXml.ignoreWhite = true;
    myXml.load("prodotti.xml");
    promo_description = new Array();
    myXml.onLoad = function(success)
    {
      if(success)
      {
        var nodes:Array = this.firstChild.childNodes;
        var tmpLenght:Number = nodes.length;
        for(var i:Number = 0; i < tmpLenght; i++)
        {
          promo_description.push(nodes[i].attributes.descrizione);
          bottone1.testoprodotto.text = promo_description[i];
        }
      }
      else
      {
        trace("Errore di caricamento");
      } 
    }
    stop();
    Fin qui funziona tutto correttamente, cioe' nel movieclip mi viene riportato il contenuto dell'ultimo nodo del file XML. Il problema nasce quando sostituisco il movie clip con un button. In questo caso, il testo del button non riesce piu' ad istanziarsi con le informazioni del file XML.
    Dove sbaglio?
    Ringrazio anticipatamente chiunque possa fornirmi indicazioni.
    Vincenzo.

  2. #2
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Ciao.

    Il quesito non è troppo banale.

    Tieni conto che ci sono delle sensibili differenze tra la classe Button e la classe MovieClip.

    Non ho idea del perché ma quando sono inserite delle istanze all'interno di un pulsante, queste perdono il nome che gli è stato assegnato dal pannello proprietà, e vengono automaticamente rinominate secondo la serie progressiva di nomi che normalmente il compilatore attribuisce alle istanze a cui non è stato attribuito un nome specifico ("instance1", "instance2", ecc.).
    Per questo motivo non ti viene popolato il campo di testo, perché l'istanza "testoprodotto" non viene trovata.

    Un modo per aggirare il problema è quello di impostare (dal pannello proprietà) la variabile associata al campo di testo. Tieni presente però che tale variabile non risiederà all'interno del pulsante ma bensì allo stesso livello target in cui è presente quello stesso pulsante.

    Cioè se il tuo bottone sta nella root, anche la variabile la troverai nella root. Ovviamente questo potrebbe andare incontro ad altri problemi, nel caso in cui tu abbia più istanze dello stesso bottone che risiedono sulla root e tu voglia appunto attribuire valori differenti ai vari campi dentro ciascun bottone.
    In tal caso si potrebbe risolvere utilizzando un mc contenitore (che contenga a sua volta il bottone) e istanziando quello in modo da ritrovarne la variabile al suo interno.

    Ci sono comunque altri sistemi più o meno funzionali a seconda delle esigenze.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  3. #3
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    Grazie tante KillerWorm, in effetti seguendo il tuo suggerimento di inserire il button in un movieclip ed utilizzare la "variable" anziche' l'istanza mi consente di valorizzare il testo dei vari button presenti nello stage utilizzando le informazioni dei nodi dell'XML.
    Adesso, pero' (non se se dipende dalle modifiche che mi hai suggerito), non riesco ad animare il bottone cosi' come lo avevo programmato in modo che la scritta diventi bold al passaggio del mouse (regular sul frame Up, bold sul frame Over e regular sul frame Hit). Ho provato anche ad inserire una variable nei frame Up Over e Hit, assegnando il text anche in questi frame, ma nulla! :-(

  4. #4
    Moderatore di CSS L'avatar di KillerWorm
    Registrato dal
    Apr 2004
    Messaggi
    5,780
    Bene.
    Ho visto il problema della formattazione del testo.
    Purtroppo utilizzando la variabile associata non viene mantenuta la formattazione che è stata impostata al campo di testo dal pannello proprietà perché (da quanto sembrerebbe) quella variabile controlla direttamente il valore della proprietà htmlText per il quale la formattazione va data come stringa testuale attraverso i tag html.

    Un metodo per risolvere questo problema collaterale potrebbe quindi essere quello di associare differenti variabili per i campi di testo relativamente ai frame UP, OVER, DOWN (come tu stesso hai fatto, per quanto mi sembra di capire) e impostare, però, i tag in modo opportuno per ogni variabile.

    Supponiamo ad esempio di avere due variabili: testoNormale e testoBold.
    Avendo i tre campi di testo (è importante comunque attribuire ad ognuno la propria formattazione dal pannello proprietà e incorporare adeguatamente i caratteri) si potrà assegnare, ad esempio, la variabile testoNormale ai campi nei frame UP e DOWN, mentre la variabile testoBold per il campo nel frame OVER.
    A questo punto dovrai passare i due valori in questo modo:
    codice:
    mcContenitore.testoNormale = "pippo"
    mcContenitore.testoBold= "pippo"
    Nota il tag [b] utilizzato per rendere grassetto il valore della variabile testoBold.

    Ovviamente, come sempre, ci sono altre diverse soluzioni e ce ne potrebbero essere ancora altre ma questa, anche se non è troppo elegante, mi sembra abbastanza pratica per il momento.
    Installa Forum HTML.it Toolset per una fruizione ottimale del Forum

  5. #5
    Utente di HTML.it
    Registrato dal
    Nov 2010
    Messaggi
    14
    Perfetto!!!
    Funziona tutto :-)
    Grazie tante KillerWorm.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.