Flash CS3 - Flash CS4

Free tutorials and scripts for all.
Actionscript 3.0

Testi html dentro XML

This is a discussion on Testi html dentro XML within the Articoli e tutorials forums, part of the Flash CS3 e Actionscript 3.0 category; Questo articolo vuole dimostrare come utilizzare dei testi in formato HTML inseriti in un file XML così che Flash possa ...


Go Back   Forum Flash CS3 Flash CS4 > Flash CS3 e Actionscript 3.0 > Articoli e tutorials

Register FAQ Members List Calendar Search Today's Posts Mark Forums Read
  #1 (permalink)  
Old 20-09-07, 10:18
Administrator
 
Join Date: Jul 2007
Location: Cesena
Posts: 4,486
Rep Power: 6
Flep is on a distinguished road
Testi html dentro XML

Questo articolo vuole dimostrare come utilizzare dei testi in formato HTML inseriti in un file XML così che Flash possa caricare l' XML e visualizzare i testi in formato HTML.

L' inserimento di stringhe HTML in un file XML avviene tramite il tag XML CDATA.

Il parser di Flash non interpreta il tag XML Character Data ( CDATA ) , in questo modo possiamo recuperare esattamente i testi formattati in HTML.


Vediamo come...



Creo un FLA e lo salvo con nome ' xml_e_html.fla ' .

Creo un campo di testo dinamico multilinea e lo chiamo ' test_txt ' .

Ora creo 2 campi di testo a linea singola per inserire la font nell' SWF e dato che servirà anche bold e Italic, i campi di testo saranno 2.

Vedere articolo incorporare fonts nell' SWF.

In questo modo avrò 3 campi di testo di cui:

- il principale ' test_txt ' ( multilinea ) a cui inserirò i sets dicarattere che preferisco

- un campo di testo dinamico ( linea singola ) con attivata l' opzione Bold a cui inserirò gli stessi sets di caratteri di ' test_txt '

- un campo di testo dinamico ( linea singola ) con attivata l' opzione Italic a cui inserirò gli stessi sets di caratteri di ' test_txt '

Adesso ho la certezza che tutte le fonts che mi serviranno saranno incorporate nell' SWF al momento della pubblicazione.


Trascino un componente scrollBar dal pannello componenti allo Stage, apro il pannello parametri del componente e nell' opzione ScrollTargetName inseriscoil nome del campo di testo multilinea ( test_txt ).


Ora creo la Document Class, un file AS che salvo con nome ' Main.as ' , che caricherà il file XML in questo modo:



Code:
package
{
	import flash.display.Loader;
	import flash.display.MovieClip;
	import flash.text.TextField;
	import flash.events.*;
	import flash.net.URLLoader;
	import flash.net.URLRequest;
	import flash.xml.*;
	
	public class Main extends MovieClip
	{
		public function Main()
		{
			this.loadXML();
		}
		private function loadXML():void
		{
			var loader:URLLoader=new URLLoader();
			loader.addEventListener(Event.COMPLETE,completeHandler);
		
			var request:URLRequest=new URLRequest('testo.xml');
			try 
			{
				loader.load(request);
			} 
			catch(error:Error) 
			{
				trace('Unable to load requested document.');
			}
		}
		private function completeHandler(event:Event):void
		{
			var loader:URLLoader=URLLoader(event.target);
			var result:XML=new XML(loader.data);
			var myXML:XMLDocument=new XMLDocument();
			myXML.ignoreWhite=true;
			myXML.parseXML(result.toXMLString());
			var node:XMLNode=myXML.firstChild;
			test_txt.htmlText=node.firstChild.firstChild.nodeValue;
		}
	}
}
Il risultato:










Clicca quì per vedere il file XML


Al prossimo articolo !
__________________

 


I recommend: Essential Actionscript 3.0

- Non rispondo ai messaggi privati con domande tecniche. Apri una discussione sul forum !
- I do not reply technicians pvt messages. Open a thread !
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #2 (permalink)  
Old 02-07-08, 22:35
Junior Member
 
Join Date: Apr 2008
Posts: 1
Rep Power: 0
shaibon is on a distinguished road
Re: Testi html dentro XML

Ciao Flep, è possibile usare questa soluzione per costruire una sorta di db?
Mi spiego meglio, è possibile usando questo script muovermi tra i nodi del file xml così da scegliere quali caricare?
Grazie in anticipo per la risposta!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #3 (permalink)  
Old 15-07-08, 09:25
Junior Member
 
Join Date: Jan 2008
Posts: 18
Rep Power: 0
Nerlaleph is on a distinguished road
Send a message via MSN to Nerlaleph
Re: Testi html dentro XML

Voglio implementare una mia prova con questo tuo esempio. Il mio progetto prevede una mini gallery di foto, caricate con swf esterni e una parte testuale. Questo è il codice:

Code:
package
{    
    import flash.display.MovieClip;
    import flash.display.SimpleButton;
    import flash.display.Loader;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.net.navigateToURL;
    import flash.events.*;
    import flash.ui.ContextMenu;
    import flash.ui.ContextMenuItem;    
    import flash.text.TextField;    
    import flash.xml.*;
    
    
    public class storiaAS3 extends MovieClip
    {
        private var btnArray:Array;
        private var urlArray:Array;
        private var pixArray:Array;
        private var loader:Loader;    
        private var swf:String;
        private var pix:MovieClip;
        private var id:int=0;
        private var i:int=0;    //contatore per btnArray
        private var p:int=0;    //contatore per pixArray
        
        public function storiaAS3()
        {
            init();
            this.loadXML();
        }
        
        public function init():void
        {
            preloader_mc.visible=false;        
            
            //Popolazione Array galleria immagini e link
            urlArray = new Array('photo1.swf', 
                                 'photo2.swf',
                                 'photo3.swf', 
                                 'photo4.swf');            
            btnArray = new Array(menu_mc.btn1_mc, menu_mc.btn2_mc, 
                                 menu_mc.btn3_mc, menu_mc.btn4_mc);
            pixArray = new Array(pix_mc.pix_1_mc, pix_mc.pix_2_mc, 
                                 pix_mc.pix_3_mc, pix_mc.pix_4_mc);            
            openSWF();
            caricaSWF1();
        }
        
        private function loadXML():void
        {
            //Gestione txt tramite xml
            var loader:URLLoader=new URLLoader();
            loader.addEventListener(Event.COMPLETE,completeHandler);
        
            var request:URLRequest=new URLRequest('testo.xml');
            try 
            {
                loader.load(request);
            } 
            catch(error:Error) 
            {
                trace('Unable to load requested document.');
            }    
        }
    
        private function completeHandler(event:Event):void
        {
            var loader:URLLoader=URLLoader(event.target);
            var result:XML=new XML(loader.data);
            var myXML:XMLDocument=new XMLDocument();
            myXML.ignoreWhite=true;
            myXML.parseXML(result.toXMLString());
            var node:XMLNode=myXML.firstChild;
            trace(node);
            txt_mc.txt.htmlText=node.firstChild.firstChild.nodeValue;
        }        
                
        private function openSWF():void
        {
            for(var i:int=0;i < btnArray.length;i++)
            {
                btnArray[i].id=i;
                btnArray[i].addEventListener(MouseEvent.MOUSE_DOWN,cambiaSezione);
            }
            for (var p:int=0;p < pixArray.length;p++)
            {
                pixArray[p].visible=false;
            }
        }
        
        private function caricaSWF1():void
        {
            swf=urlArray[0];
            var request:URLRequest=new URLRequest(swf);
            loader=new Loader();
            initListeners(loader.contentLoaderInfo);
            loader.load(request);
            loader.x=314;
            loader.y=0;
            id=0;
        }        
        
        private function cambiaSezione(m:MouseEvent):void
        {
            id=m.target.parent.id;            
            loader.unload();
            removeChild(loader);
            rimuoviListeners(loader.contentLoaderInfo);
            caricaSezione(m.target.parent.id);
        }        
        
        private function caricaSezione(n:int):void
        {
            swf=urlArray[id];
            pix=pixArray[id];
            pix.visible=true;
            var request:URLRequest=new URLRequest(swf);
            loader=new Loader();
            initListeners(loader.contentLoaderInfo);
            loader.load(request);
            loader.x=314;
            loader.y=0;
        }

        private function initListeners(dispatcher:IEventDispatcher):void 
        {
            dispatcher.addEventListener(Event.OPEN,inizia);
            dispatcher.addEventListener(ProgressEvent.PROGRESS,inCaricamento);
            dispatcher.addEventListener(Event.COMPLETE,completato);
        }
        
        private function rimuoviListeners(dispatcher:IEventDispatcher):void 
        {
            dispatcher.removeEventListener(Event.OPEN,inizia);
            dispatcher.removeEventListener(ProgressEvent.PROGRESS,inCaricamento);
            dispatcher.removeEventListener(Event.COMPLETE,completato);
        }
        private function inizia(event:Event):void 
        {
            preloader_mc.visible=true;
        }
        private function inCaricamento(event:ProgressEvent):void 
        {
            var n:Number = event.bytesLoaded/event.bytesTotal;
            n = Math.round(n * 100);
            preloader_mc.progress_txt.text=n.toString()+' %';
            preloader_mc.fill_mc.rotation=n*10.8;        
        }
        
        private function completato(event:Event):void 
        {
            preloader_mc.visible=false;
            addChild(loader);
            swappa();

            switch (id)
            {
                case 0:
                pixArray[0].visible=true;
                pixArray[1].visible=false;
                pixArray[2].visible=false;
                pixArray[3].visible=false;
                break;
                case 1:
                pixArray[1].visible=true;
                pixArray[0].visible=false;
                pixArray[2].visible=false;
                pixArray[3].visible=false;                
                break;
                case 2:
                pixArray[2].visible=true;
                pixArray[1].visible=false;
                pixArray[0].visible=false;
                pixArray[3].visible=false;                
                break;
                case 3:
                pixArray[3].visible=true;
                pixArray[1].visible=false;
                pixArray[2].visible=false;
                pixArray[0].visible=false;                
                break;
            }                
        }
        private function swappa():void
        {
            swapChildren(loader,menu_mc);
            swapChildren(menu_mc,pix_mc);
        }
        
    }
}
Continuo a ricevere questo errore:

Code:
TypeError: Error #2007: Il valore del parametro text deve essere diverso da null.
    at flash.text::TextField/set htmlText()
    at storiaAS3/completeHandler()
    at flash.events::EventDispatcher/dispatchEventFunction()
    at flash.events::EventDispatcher/dispatchEvent()
    at flash.net::URLLoader/onComplete()
Il trace su node mi indica che il file xml viene letto correttamente .. non riesco a capire che diavolo gli prenda ... .
Ogni aiuto è benvenuto, saluti
Davide
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #4 (permalink)  
Old 15-07-08, 17:44
Junior Member
 
Join Date: Jul 2008
Posts: 4
Rep Power: 0
pasteo is on a distinguished road
Re: Testi html dentro XML

Io invece ho cercato di mettere tutto nel FLA eliminando la classe, però mi da il seguente errore:

Code:
TypeError: Error #1088: Il codice nel documento successivo all'elemento principale deve essere formato correttamente.
 at testo_HTML_fla::MainTimeline/completeHandler()
 at flash.events::EventDispatcher/dispatchEventFunction()
 at flash.events::EventDispatcher/dispatchEvent()
 at flash.net::URLLoader/onComplete()
Bho !!!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #5 (permalink)  
Old 01-10-08, 10:01
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: Testi html dentro XML

Ciao Flep! sto usando molto i tuoi tutorial... son fatti molto bene! grazie!
ma penso che in questo caso flash e as3 manchino in una cosa:

se nel file xml, invece di linkare questo sito Lorem ipsum , volessi linkare una funzione presente nel mio file .as .... non si può?? come è possibile???

Sono bloccato da giorni e il cliente vuole mille link interni.. come faccio?? aiuto pleeease!!! :(
__________________
www.kaibakh.org - grazie Flep!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Flash Multi Gallery
  #6 (permalink)  
Old 01-10-08, 11:28
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: Testi html dentro XML

ho trovato una soluzione... era più facile del previsto... grazie lo stesso... :D
__________________
www.kaibakh.org - grazie Flep!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #7 (permalink)  
Old 01-10-08, 11:36
Junior Member
 
Join Date: Jul 2008
Posts: 4
Rep Power: 0
pasteo is on a distinguished road
Re: Testi html dentro XML

Ci potresti cortesemente illustrare come hai fatto ... sai com'è condividere le proprie soluzioni può essere utile a molti altri.
Del resto i forum servono a questo.

Saluti
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #8 (permalink)  
Old 01-10-08, 17:07
Junior Member
 
Join Date: Nov 2007
Posts: 29
Rep Power: 0
ehijon is on a distinguished road
Riferimento: Re: Testi html dentro XML

Quote:
Originally Posted by pasteo View Post
Ci potresti cortesemente illustrare come hai fatto ... sai com'è condividere le proprie soluzioni può essere utile a molti altri.
Del resto i forum servono a questo.

Saluti

hai perfettamente ragione! condivisione!

è molto semplice.. mi sono perso io in un bicchier d'acqua...
allora, è un evento che inserisci nel testo html (presente per esempio nel file xml).. quindi il link risulta così:

PHP Code:
<a href='event:uno'><i>link1</i></a>

<
a href='event:due'><i>link2</i></a
e poi in as3 così...

Code:
campo_testo.addEventListener("link", funzioneLink);
        
function funzioneLink(e:TextEvent):void {
            switch (e.text) {
                case "uno" :
                    trace("uno");
                    break;
                case "due" :
                    trace("due");
                    break;
            }
        }
dovrebbe spiegarsi da solo... ma se hai problemi scrivimi!

__________________
www.kaibakh.org - grazie Flep!

Last edited by ehijon; 01-10-08 at 17:11..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #9 (permalink)  
Old 13-10-08, 12:27
Junior Member
 
Join Date: Mar 2008
Posts: 23
Rep Power: 0
teocomi is on a distinguished road
Re: Testi html dentro XML

io non riesco a capire qual'è il punto del codice che mi permette di mantenere i tag html e sto diventando pazzo ad adattare il mio codice in modo che ce la possa fare..!!
lo posto tutto per sicurezza, ma è un normale rss parser:

HTML Code:
// Set up variables
var mxnaURL:String = "http://weblogs.macromedia.com/mxna/xml/rss.cfm?query=byMostRecent&languages=1";
var mxnaRequest:URLRequest = new URLRequest(mxnaURL);
var mxnaLoader:URLLoader = new URLLoader();

// Assign listeners for downloading feed
mxnaLoader.addEventListener(Event.COMPLETE, feedDownloadedHandler);
// Error listeners
mxnaLoader.addEventListener(IOErrorEvent.IO_ERROR, feedDownloadError);
mxnaLoader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, feedDownloadError);

// Event handlers
// Called when feed has completely downloaded
function feedDownloadedHandler(event:Event):void {
    
    // use a try-catch block in case
    // xml parsing fails
    try {
        
        // convert the loaded text into XML
        var mxnaXML:XML = XML(mxnaLoader.data);
        
        // if XML succeeded (no error)
        // show it in the text field 
        renderFeedXML(mxnaXML);
        
    }catch(error:Error){
        trace("Error parsing XML: "+error);
    }
    
}
// Called if feed download fails
function feedDownloadError(event:Event):void {
    trace("Error during download: "+event);
}
    
// Functions
// Writes each feed item to the screen
function renderFeedXML(feed:XML):void {
    
    // get default namespace for feed
    var defaultNs:Namespace = new Namespace("http://purl.org/rss/1.0/");
    // set default namespace to make referencing easier
    default xml namespace = defaultNs;
    
    // clear screen text
    mxnaText.text = "";
    
    // write each Feed item to the screen
    // looping through the XMLList with for each
    var items:XMLList = feed.item;
    for each (var item:XML in items){
        renderFeedItem(item);
    }
}

// Writes a single feed item to the screen
function renderFeedItem(item:XML):void {
    
    // namespaces
    var rdf:Namespace = new Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
    var dc:Namespace = new Namespace("http://purl.org/dc/elements/1.1/");
    var defaultNs:Namespace = new Namespace("http://purl.org/rss/1.0/");
    // set default namespace to make referencing easier
    default xml namespace = defaultNs;
    
    // parse date string [YYYY-MM-DD]
    var date:String = item.dc::date.text().substring(0, 10);
    
    // write other feed content to text using HTML
    mxnaText.htmlText += "<u><b><a href=\""+item.@rdf::about+"\">"+item.title+"</a></b></u>";
    mxnaText.htmlText += "<i>by "+item.dc::creator+" on "+date+"</i>";
    mxnaText.htmlText += item.description+"";
}

// Download XML feed. Once loaded, the
// parsing and displaying process will start
try {
    mxnaLoader.load(mxnaRequest);
    mxnaText.text = "Loading...";
}catch(error:Error){
    trace("Error during load: "+error);
}
se foste in grado di darmi qualche aiutino ne sarei molto grato, grazie mille!!

Last edited by teocomi; 13-10-08 at 12:32..
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

  #10 (permalink)  
Old 13-10-08, 23:40
Junior Member
 
Join Date: Mar 2008
Posts: 23
Rep Power: 0
teocomi is on a distinguished road
Re: Testi html dentro XML

alla fine ce l'ho fatta!! bastava solo qualche dimestichezza in più con gli XML...
posto qua la parte che ho cambiato del mio codice di sopra:


HTML Code:
function renderFeedItem(item:XML):void {
    
    // namespaces
    var rdf:Namespace = new Namespace("http://www.w3.org/1999/02/22-rdf-syntax-ns#");
    var dc:Namespace = new Namespace("http://purl.org/dc/elements/1.1/");
    var defaultNs:Namespace = new Namespace("http://purl.org/rss/1.0/");
    // set default namespace to make referencing easier
    default xml namespace = defaultNs;
    
    var myXML:XMLDocument=new XMLDocument();
            myXML.ignoreWhite=true;
            myXML.parseXML(item.toXMLString());
    var node:XMLNode=myXML.firstChild;
    var sub:String;
    // write other feed content to text using HTML
    mxnaText.htmlText += "<b><font size=\"15\">"+item.title+"</font></b>";
    mxnaText.htmlText += node.childNodes[6].firstChild.nodeValue+"";
}
non sono affatto sicuro sia la strada migliore, però almeno funziona!
Digg this Post!Add Post to del.icio.usBookmark Post in TechnoratiFurl this Post!
Reply With Quote

Reply

Bookmarks

Thread Tools
Display Modes

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is On
Trackbacks are On
Pingbacks are On
Refbacks are On
Forum Jump

Similar Threads

Thread Thread Starter Forum Replies Last Post
Photoshop CS3 Effetto erba su testi Flep PhotoShop 1 28-07-08 22:34
Actionscript 3 caurina > NO alpha per testi dinamici ehijon Actionscript 3.0 base 4 03-07-08 17:21
Actionscript 3 Prob. Testi dinamici Nedyc Actionscript 3.0 base 0 30-06-08 11:12
Actionscript 2 Menù e testi colorati in base alla selezione dei colori in home page ipnotik Flash CS3 Design 3 08-06-08 21:21
Flash CS3 e testi in html Flep Articoli e tutorials 3 21-04-08 22:55


All times are GMT. The time now is 12:09.


Powered by vBulletin versione 3.7.4
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0 RC4
Forum SiteMap


FlepStudio
by Filippo Lughi
P.IVA 03605860406