Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    settransform...dinamico con xml

    ciao a tutti!
    sto provando a rendere dinamica la colorazione di un movieclip tramite XML e settransform.

    spiego cosa sto realizzando:
    - creo delle thumb da immagini caricate tramite xml.
    - piazzo le immagini all'interno di movieclips.
    - creo un pannellino che importa, sempre tramite xml, delle jpg con dei colori (tipo palette).
    - al click sulle palette, tramite settransform, coloro i movieclip. nel file xml definisco quale codice colore è legato alla paletta cliccata.

    dove sta il problema: non va
    e sennò che ci farei qui???

    specifico: voglio usare settransform per poter giocare meglio con gli effetti alpha ecc.

    uso un file xml così composto:
    codice:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <images>
        <thumb displayNum="3" separation="5">
            <image>000001.jpg</image>
    		<description>FE0000</description>
    		<image1>{ra: '100', rb: '0', ga: '100', gb: '128', ba: '100', bb: '255', aa: '100', ab: '50'}</image1>	
    ...
    ...
    </images>
    "image" è la .jpg della palette;
    "description" una spiega;
    "image1" è il codice che attribuisco ad una variabile in flash perchè trasformi il clip.

    lettura dell'xml dentro flash:
    codice:
    thumbs_cs = new XML();
    thumbs_cs.ignoreWhite = true;
    thumbs_cs.load("colori.xml");
    // qui inserire il percorso al file .XML
    thumbs_cs.onLoad = function() {
    	root = this.firstChild;
    	total = root.childNodes.length;
    	displayNum = Number(root.childNodes[0].attributes.displayNum);
    	separation = Number(root.childNodes[0].attributes.separation);
    
    		var image_cs = root.childNodes[i].childNodes[0].firstChild.nodeValue;
    		var image1_cs = root.childNodes[i].childNodes[2].firstChild.nodeValue;
    		newThumb_cs.image_cs = root.childNodes[i].childNodes[0].firstChild.nodeValue;
    		newThumb_cs.image1_cs = root.childNodes[i].childNodes[2].firstChild.nodeValue;
    
    		//carico le thumbs
    		newThumb_cs.cont_cs.loadMovie(image_cs);
    		newThumb_cs.cont2_cs.loadMovie(image_cs);
    		
    		//CLICK SULLA THUMB
    		newThumb_cs.onRelease = function() {
    			my_color = new Color(_root.clip1.clip2);
    			myColorTransform = new Object();
    			myColorTransform = (coloreEsadecimale_s);
    			my_color.setTransform(myColorTransform);
    
    // PROVA PER SETTRANSFORM
    				var coloreEsadecimale_s:String;
    				coloreEsadecimale_s = this.image1_cs;				
    				trace(coloreEsadecimale_s instanceof String);
    				trace(coloreEsadecimale_s);
    }
    };
    tramite la variabile coloreEsadecimale_s vorrei che venisse riconosciuto di volta in volta il codice nell'xml e applicato. ma non funzia.
    specifico: se inserisco nel settransform il codice colore che indico nell'xml, va ma ovviamente il valore è univoco.

    che il problema sia che quel che cerco di fargli leggere non è una stringa?
    nel senso, il trace sulla variabile "coloreEsadecimale_s" mi da il giusto contenuto ma se gli chiedo se la variabile stessa è una stringa mi dice "false".

    chiedo a voi amici se ci sono errori nello script, se sbaglio a settare qualcosa...boh.
    e se avete suggerimenti su come potrei fare questa cosa, sono ben accetti!

    grazie 1000 a tutti!
    @lex!

  2. #2
    up please
    @lex!

  3. #3
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Non riesco a leggere benissimo il codice, ormai abituato alla sintassi di AS3 per XML
    Comunque dovresti partire intanto dal presupposto che gli elementi che arrivano a flash dall'xml sono delle stringhe e andrebbero perciò modificati per essere "visti" correttamente da actionscript, direi che alla fine il tuo problema può essere questo, non ricordo ora se esiste qualche classe in grado di serializzare i dati per renderli consultabili da flash secondo la natura che gli si vuole attribuire (in questo caso di un oggetto).

  4. #4
    Grazie per la risposta and80.
    In realtà io pensavo che il mio problema fosse convertire i dati XML in stringhe :S

    se faccio un trace della variabile coloreEsadecimale_s il risultato è corretto ma poi non viene applicato al clip!
    eppure, come dicevo, se inserisco il codice colore "a mano" al click viene applicato.
    quindi credo anche io il problema stia lì ma come risolvere? come converto i dati in modo che vengano letti?
    caffettino? offro io. per aiutare la tua mente e la mente dei nostri amici sul forum a ricordare come convertire i dati stringa XML perchè vengano letti da un oggetto color

    grazie!
    @lex!

  5. #5
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    La mia mente la potresti aiutare, ma non ho flash per provare su questo terminale, quindi non riesco a darti una risposta, vediamo se passa qualcun altro

  6. #6
    Nessuno che sa aiutarmi?
    Nessuno che sappia come passare una variabile stringa XML ad un object color?

    codice:
    			
    my_color = new Color(_root.clip1.clip2);
    myColorTransform = new Object();
    myColorTransform = (coloreEsadecimale_s);
    my_color.setTransform(myColorTransform);
    come posso riempire la variabile "coloreEsadecimale_s" con una stringa presa da un XML?

    codice:
    <?xml version="1.0" encoding="utf-8" standalone="yes"?>
    <images>
        <thumb displayNum="3" separation="5">
            <image>000001.jpg</image>
    		<description>FE0000</description>
    		 <image1>{ra: '100', rb: '0', ga: '100', gb: '128', ba: '100', bb: '255', aa: '100', ab: '50'}</image1> 	
    ...
    ...
    </images>
    Pleeeeeeease!
    @lex!

  7. #7
    Utente di HTML.it L'avatar di and80
    Registrato dal
    Mar 2003
    Messaggi
    15,182
    Il fatto è che tu hai una grande stringa che contiene degli elementi che andrebbero trasformati in un oggetto, è complesso farsi restituire un Object da una stringa come quella, posso passarti questa funzione che pressappoco lo fa, ma non è riutilizzabile e la potrai usare esclusivamente per questo scopo. Te la scrivo completa di esempio di utilizzo:

    Codice PHP:
    var "{ra: '100', rb: '0', ga: '100', gb: '128', ba: '100', bb: '255', aa: '100', ab: '50'}";

    function 
    serialize (s){
        var 
    = {}
        
    s.split(" ").join("");
        
    s.split("'").join("");
        
    s.split("{").join("");
        
    s.split("}").join("");
        var 
    temp1 s.split(",");
        for (var 
    i=0i<temp1.lengthi++) {
            var 
    temp2 temp1[i].split(":");
            
    o[temp2[0]] = temp2[1];
        }
        return 
    o;
    }

    var 
    serialize(s);
    for (var 
    p in o) {
        
    trace (p+": "+Number(o[p]));


  8. #8
    GRANDE AND80!!!!!!!!!!!!

    Funziona!!!!!!!

    Ti promisi il caffè... rilancio: cornetto, panino, pizza...quel che vuoi!!!

    Grazieeeeeeeeeeeeeee!!!

    Ciao!
    @lex!

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.