Construiți o casetă HTML ActionScript 3.0 cu suport XML și CSS

În acest tutorial, vom crea o casetă HTML care analizează conținutul încărcat din XML și CSS. Îl vom construi folosind ActionScript 3.0, astfel încât să îl putem compila în FlashDevelop. Voi demonstra, de asemenea, cum să îl compilați în Flash IDE. Ne vom concentra pe crearea de fișiere externe (clase), încărcarea și utilizarea fișierelor XML și CSS, toate acestea presupunând o anumită înțelegere a ActionScript. Să începem!




Introducere

În următorii pași vom crea o casetă HTML utilizând ActionScript 3.0. Pe parcurs vom vedea:

  • Crearea de scripturi externe (clase).
  • Încărcarea, parsarea și utilizarea fișierelor XML și CSS.
  • Crearea de noi evenimente cu "dispatchEvent".
  • Utilizând "TextEvent".
  • Utilizarea etichetelor htmlText.

Puteți crea fișierele pe care le vom vedea mai jos într-un texteditor, cum ar fi notepad, etc. Voi folosi FlashDevelop ca mediu de dezvoltare. Fișierele noastre vor fi:

  • "Styles.css"
  • "Source.xml"
  • "CSS.as"
  • "XMLLoader.as"
  • "Main.as"

și pentru cei care doresc să compileze în Flash IDE:

  • "HtmlBox.fla"

Pasul 1 - Pornirea codului HTML

În FlashDevelop, începeți un nou proiect. Alegeți "proiectul AS3" și denumiți-l "htmlBox".

După crearea proiectului, "Main.as" va fi creat automat. Trebuie să creați alte fișiere manual. Adăugați un folder numit "keremk" în directorul src.

În acest director, vom crea "XMLLoader.as" și "CSS.as" făcând clic dreapta pe "keremk" și mergând la Add> New Class ... De asemenea, vom adăuga "source.xml" și "styles.css "fișiere în folderul bin, făcând clic dreapta pe" bin "și mergând la Add> New XML File ... și Add> New CSS File.

Pentru Flash IDE, creați un folder numit "htmlBox" în exploratorul dvs. Creați "Main.as" făcând clic dreapta și mergând la New> Flash ActionScript File, apoi creați "htmlBox.fla" făcând clic dreapta și mergând la New> Document Flash. Apoi creați un folder numit "keremk" atunci în acest dosar creați "XMLLoader.as" și "CSS.as". Trebuie să creați "styles.css" și "source.xml" în folderul "htmlBox" (același folder ca fișierele "Main.as" și "htmlBox.fla"). Aveți posibilitatea să le creați făcând clic dreapta și mergând la New> Text Document, apoi redenumirea extensiilor. Puteți folosi orice editor pentru a scrie fișierele "as", "xml" și "css". De asemenea, puteți scrie fișiere "ca" în Flash IDE, făcând dublu clic pe ele.

Pasul 2 - Crearea fișierului CSS

Voi folosi fontul-familie, font-size, text-align, font-weight, color și
text-decorare proprietăți în fișierul meu CSS. De asemenea, voi crea o etichetă "hW" pentru titlurile și clasele "activeL", "passiveL", "page" și "para" pentru alte texte.

 hW: stiluri de titlu activL: stiluri de legături active passiveL: stiluri de legătură pasive pagină: stiluri număr pagini para: stiluri paragraf

Iată codul. Nu o voi explica pe rând, deoarece cred că este destul de ușor de înțeles.

 A: link text-decorare: subliniere;  A: hover text-decoration: nimic;  hW font-family: "Courier New", curier, monospațiu; font-size: 20px; text-align: centru; font-weight: bold; culoare: # CCCCCC; . activeL font-family: "Comic Sans MS", cursive; font-size: 12px; text-align: centru; font-weight: normal; culoare: #EEEEEE;  .passiveL font-family: "Comic Sans MS", cursive; font-size: 12px; text-align: centru; font-weight: normal; culoare: # 666666;  .para font-family: Verdana, Arial, Helvetica, sans-serif; font-size: 12px; text-align: justify; font-weight: normal; culoare: # CCCCCC;  .page font-family: Verdana, Arial, Helvetica, sans-serif; culoare: # CCCCCC; font-size: 12px; text-aliniere: drept; font-weight: normal; 

Pasul 3 - Crearea fișierului XML

Când creați fișier XML, vom folosi etichetele Flash-htmlText care sunt afișate mai jos. Pentru mai multe informații, puteți vizita Adobe pentru TextField.htmlText.

 Ancorați tag-ul (eticheta de link):  Etichetă îndrăzneață: Break tag:
Etichetă imagine: Etichetă italică: Elementul pentru elementul de listă:
  • Eticheta paragrafului:

    Span tag: Etichetă subliniere:

  • Vom începe să creați "sursa.xml" definind primul copil ca . Între etichete, vom scrie codul nostru html.

             

    Pasul 4 - Scrierea paginilor HtmlBox în fișierul XML

    Vom începe cu o pauză "
    "pentru a îmbunătăți prezentarea. Rețineți că trebuie să închidem fiecare etichetă pe care o folosim în XML, altfel fișierul XML nu poate fi analizat. "
    "este o etichetă închisă.
    După eticheta "break", vom scrie o rubrică în eticheta "hw" și vom începe paragraful în " "Pentru liste vom folosi un"" etichetă.


    RUBRICA
  • Pasul 5 - Adăugarea de link-uri "Următoare" și "Anterioare" către pagini

    Pentru a adăuga linkurile următoare și cele anterioare, vom folosi "eveniment: următor" și "eveniment: prev" ca "href". Acestea vor fi capturate de flashplayer ca eveniment. Când se dau clic pe link-uri, "eveniment: următor" expediază un eveniment "link" cu un text "în următor" în bliț.

     ...  < PREVIOUS |   | NEXT>  

    În această pagină (pentru prima pagină) nu va exista o pagină anterioară. Deci, legătura anterioară ar trebui să fie pasivă și "href" -ul să fie gol.

    Apropo, pentru a vedea "<", "&" etc. symbols in htmlbox we should use their codes shown below.

    < : < (less than) > :> (mai mare decât) &: & (ampersand) ":" (ghilimele duble) ' : "(apostrof, citat unic)

    Pasul 6 - Adăugarea numerelor paginilor în pagini

    Când adăugăm numere de pagini, trebuie să folosim clasa "pagină" pentru "span". Modelul numărului de pagini depinde de dvs. Le-am scris astfel: "(pagina 1/3)".

    ... (pagina 1/3) 

    Și aici este fișierul meu XML cu o singură pagină.

        
    AS3 HTML BOX cu suport XML și CSS
    buna tuturor.

    Această casetă HTML a fost creată numai cu AS3. Și toate codurile au fost scrise în fișiere externe "ca".

    Cu tutorialul de mai jos, veți afla:
  • Cum se creează clase externe.
    Cum să încărcați, să analizați și să utilizați fișiere XML și CSS într-un htmlText.
    Cum să creați evenimente noi cu "dispatchEvent" și să folosiți aceste evenimente.
    Cum se utilizează "TextEvent" în htmlText.
    Cum se utilizează etichetele htmlText.






  • < PREVIOUS | | NEXT>

    (pagina 1/3)

    Apropo, puteți adăuga imagini la paginile dvs. după cum se arată mai jos:

        

    Pasul 7 - Fișiere Script de acțiune (clase externe)

    Am creat dosarul "keremk" și vom folosi acest folder pentru clasele noastre "XMLLoader" și "CSS".

    Prin urmare, trebuie să începem cursurile cu:

     pachet keremk 

    Pasul 8 - Crearea clasei CSS

    Vom începe clasa noastră CSS cu "pachet keremk ". Numele clasei va fi identic cu numele fișierului "CSS". Notă: ActionScript este sensibil la minuscule. Deoarece vom expedia evenimente cu această clasă, se va extinde "EventDispatcher".

     pachetul keremk // CSS este în folderul keremk clasa publică CSS extinde EventDispatcher // CSS va expedia evenimente funcția publică CSS (): void loader = new URLLoader; // atunci când este creat un CSS, va fi definit un încărcător nou 

    Pasul 9 - CSS: Importarea de clase Flash

     import flash.net.URLLoader; // Vom încărca fișierul css cu importul urlloader flash.net.URLRequest; // și ar trebui să existe o solicitare de încărcare. import flash.text.StyleSheet; // Vom analiza fișierul css ca StyleSheet. import flash.events.SecurityErrorEvent; // Vom expedia evenimentele, deci trebuie să importem și clasele conexe. import flash.events.IOErrorEvent; importul flash.events.Event; import flash.events.EventDispatcher;

    De asemenea, puteți importa aceste clase în 3 rânduri utilizând "*" pentru a importa toate clasele "evenimente" și "net", dar prefer să le importați unul câte unul. Nu avem nevoie de toate clasele "evenimente" și "net". Dacă preferați să scrieți mai puțin cod, aici este echivalentul abreviat.

    import flash.events. *; import flash.net. *; import flash.text.StyleSheet;

    Pasul 10 - CSS: Variabile

    Vom avea nevoie doar de două variabile în această clasă, un URLLoader și un StyleSheet.

    încărcător privat var: URLLoader; public foaie de var: StyleSheet;

    Apropo, variabilele private nu sunt accesibile din afara clasei lor. Voi folosi "încărcătorul" numai în clasa CSS, așa că îl pot crea ca privat. Voi folosi "foaie" din clasa principală, așa că trebuie să o creez ca "publică" (accesibilă).

    Pasul 11 ​​- CSS: Funcția de încărcare

    Vom folosi această funcție de încărcare din clasa principală, așa că trebuie să o creăm ca fiind publică. Acesta va necesita un șir de încărcare, care va fi "_req: String"

    încărcarea funcției publice (_req: String): void // funcția va încărca fișierul căruia îi este dată calea. loader.load (noua adresă URLRequest (_req)); // calea ar trebui transformată într-o adresă URLRequest pentru a încărca fișierul. loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); / / Vom asculta 3 evenimente pentru a trece la clasa principală. loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE, încărcat); 

    Pasul 12 - CSS: Manageri de evenimente și dispeceri

    La pasul 11, am adăugat 3 ascultători de evenimente la încărcător, eroare de securitate, eroare IO și finalizată. Unul dintre ei va fi expediat în cele din urmă. Când sa întâmplat, trebuie să o transferăm în clasa principală prin ascultarea și expedierea. De asemenea, ar trebui să verificăm dacă există vreo problemă atunci când analizăm fișierul CSS după evenimentul "Complete". O vom verifica folosind "încercați să prindeți".

    funcția privată ioError (e: IOErrorEvent): void // Când apare o eroare IO, dispatchEvent (noul eveniment ("CSS_IOError")); // această linie trimite "CSS_IOError".  funcția privată secError (e: SecurityErrorEvent): void // Când există o problemă de securitate, dispatchEvent (noul eveniment ("CSS_SecurityError")); // această linie trimite "CSS_SecurityError".  funcția privată încărcată (e: Event): void // Dacă încărcarea fișierului sa terminat, încercați // încercați să o parsezi. foaie = new StyleSheet (); sheet.parseCSS (loader.data); dispatchEvent (noul eveniment ("CSS_Loaded")); // Dacă parsarea este OK, această linie expediază "CSS_Loaded".  catch (e: Error) dispatchEvent (noul eveniment ("CSS_ParseError")); // Dacă parsarea NU este corectă, această linie trimite "CSS_ParseError"

    Cu operatorii de evenimente și dispeceri, clasa noastră CSS este terminată. Iată fișierul complet CSS.as:

     pachetul keremk import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.events.SecurityErrorEvent; import flash.events.IOErrorEvent; importul flash.events.Event; import flash.events.EventDispatcher; public class CSS extinde EventDispatcher private var loader: URLLoader; public foaie de var: StyleSheet; funcția publică CSS (): void loader = new URLLoader;  încărcarea funcției publice (_req: String): void loader.load (noua adresă URLRequest (_req)); loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE, încărcat);  funcția privată ioError (e: IOErrorEvent): void dispatchEvent (noul eveniment ("CSS_IOError"));  funcția privată secError (e: SecurityErrorEvent): void dispatchEvent (noul eveniment ("CSS_SecurityError"));  funcția privată încărcată (e: Event): void try sheet = new StyleSheet (); sheet.parseCSS (loader.data); dispatchEvent (eveniment nou ("CSS_Loaded"));  captură (e: Eroare) dispatchEvent (noul eveniment ("CSS_ParseError")); 

    Pasul 13 - Crearea programului XMLLoader

    Vom incepe clasa XMLLoader cu "package keremk " si se va extinde si "EventDispatcher".

     pachetul keremk // XMLLoader este în folderul keremk. class public XMLLoader extinde EventDispatcher funcția publică XMLLoader () loader = new URLLoader; // atunci când este creat un XMLLoader, va fi definit un nou încărcător. 

    Pasul 14 - XMLLoader: Importul de clase Flash

    Avem nevoie de aceleași clase ca și noi pentru CSS fără clasa "StyleSheet". Ele sunt după cum urmează:

     import flash.events.SecurityErrorEvent; // Clase de evenimente pentru ascultare și expediere. import flash.events.IOErrorEvent; importul flash.events.Event; import flash.events.EventDispatcher; importați flash.net.URLLoader; // clase net pentru a încărca fișiere xml. import flash.net.URLRequest;

    Pasul 15 - XMLLoader: Variabile

    Vom avea acum nevoie de 5 variabile:

     private var loader: URLLoader; // pentru a încărca fișierul XML privat de date var: XML; // pentru a ține datele fișierului XML pentru al analiza. privat var i: uint; // contra pentru a utiliza în parsare. privat var lenXML: uint; // pentru a verifica câte pagini există în XML. public var pagini: Array = []; // pentru a ține pagini după parsarea XML.

    Pasul 16 - XMLLoader: Funcția de încărcare

    Funcția "încărcare" va fi aceeași ca și cu "CSS.load". O vom folosi din clasa principală și ar trebui să fie și public.

    încărcarea funcției publice (_req: String): void // funcția va încărca fișierul pentru care este dată calea. loader.load (noua adresă URLRequest (_req)); // calea ar trebui transformată într-o adresă URLRequest pentru a încărca fișierul. loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); / / Vom asculta 3 evenimente pentru a trece la clasa principală. loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE, încărcat); 

    Pasul 17 - XMLLoader: Manageri de evenimente și dispeceri

    Am adăugat 3 ascultători de evenimente pentru încărcător, eroare de securitate, eroare IO și finalizată. Unul dintre ei va fi expediat în cele din urmă. Când sa întâmplat, trebuie să o transferăm în clasa principală prin ascultarea și expedierea. Ar trebui să verificăm, de asemenea, dacă există vreo problemă la parsarea fișierului XML după evenimentul "Complete". Pot expedi două evenimente diferite: "XML_Loaded" sau "XML_ParseError". O vom verifica folosind "încercați să prindeți".

     funcția privată ioError (e: IOErrorEvent): void // Când apare o eroare IO, dispatchEvent (noul eveniment ("XML_IOError")); // această linie expediază "XML_IOError".  funcția privată secError (e: SecurityErrorEvent): void // Când există o problemă de securitate, dispatchEvent (noul eveniment ("XML_SecurityError")); // această linie expediază "XML_SecurityError".  funcția privată încărcată (e: Event): void // Dacă încărcarea fișierului sa terminat, încercați // încercați să o parsezi. data = XML nou (loader.data); // ia date XML la "date" lenXML = data.children () lungimea (); // verifică numărul de pagini pentru (i = 0; i < lenXML; i++) //parses XML data to array pages.push(data.children()[i]);  dispatchEvent(new Event("XML_Loaded"));//if parsing the XML is OK, dispatch "XML_Loaded".  catch (e:Error)  dispatchEvent(new Event("XML_ParseError"));//if something is wrong with XML data, this line dispatches "XML_ParseError".  

    Cu manipulatorii și dispecerii, clasa noastră XMLLoader este terminată. Aici este finalizat XMLLoader:

    pachetul keremk import flash.events.SecurityErrorEvent; import flash.events.IOErrorEvent; importul flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; class public XMLLoader extinde EventDispatcher private var loader: URLLoader; private var data: XML; privat var i: uint; privat var lenXML: uint; public var pagini: Array = []; funcția publică XMLLoader () loader = new URLLoader;  încărcarea funcției publice (_req: String): void loader.load (noua adresă URLRequest (_req)); loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); loader.addEventListener (IOErrorEvent.IO_ERROR, IOError); loader.addEventListener (Event.COMPLETE, încărcat);  funcția privată ioError (e: Event): void dispatchEvent (noul eveniment ("XML_IOError"));  funcția privată secError (e: Event): void dispatchEvent (noul eveniment ("XML_SecurityError"));  funcția privată încărcată (e: Eveniment): void try data = new XML (loader.data); lenXML = date.children () lungime (); pentru (i = 0; i < lenXML; i++)  pages.push(data.children()[i]);  dispatchEvent(new Event("XML_Loaded"));  catch (e:Error)  dispatchEvent(new Event("XML_ParseError"));    

    Pasul 18 - Crearea clasei principale

    Deoarece clasa Main va fi în directorul rădăcină al proiectului nostru, vom începe să îl scriem cu "pachet ". Acesta va extinde "sprite" și vom începe codul nostru în funcția "Main":

     pachet // punct de intrare pentru importuri. clasa publică principală extinde Sprite // punctul de intrare pentru vars. funcția publică Main (): void // punct de intrare pentru coduri.  // punct de intrare pentru funcții suplimentare. 

    Pasul 19 - Principal: Importul de clase Flash

     import flash.display.Sprite; // Clasa principală va extinde "Sprite". Deci, vom avea nevoie de clasa "Sprite". import flash.display.StageAlign; // Avem nevoie de "StageAlign" pentru a alinia etapa. import flash.display.StageScaleMode; // Avem nevoie de "StageScaleMode" pentru a gestiona modul de scară al scenei. import flash.events.Event; // Avem nevoie de clasa "Eveniment" pentru a folosi evenimentele pe care le-am creat în clasele "XMLLoader" și "CSS". import flash.events.TextEvent; // Avem nevoie de "TextEvent" pentru a folosi legăturile de pagină din "htmlText". import flash.text.TextField; // Vom crea un "TextField" pentru a afișa pagini html și a adăuga css-ul la acesta cu "TextFormat" import flash.text.TextFormat; import keremk.CSS; // Și în acea clasă "Principală", vom folosi clasele "CSS" și "XMLloader" pe care le-am creat mai devreme. import keremk.XMLLoader;

    Pasul 20 - Principal: Variabile

     privat var xml: XMLLoader; / / aceasta va retine datele noastre private privat var css: CSS; / / acesta va retine datele noastre de date StyleSheet private var field: TextField; // vom folosi aceasta pentru a arata paginile noastre html private var cssBool: Boolean = false; // aceste două booleani ne vor spune dacă fișierele noastre CSS și XML sunt încărcate private var xmlBool: Boolean = false; private var stgW: Number = stage.stageWidth; // aceste două vor verifica înălțimea și lățimea scenei. private var stgH: Number = stage.stageHeight; // astfel putem schimba lățimea și înălțimea htmlbox-ului din fișierul html. private var pageNum: int = 0; // aceasta va defini pagina pe care o afișăm în HtmlBox. (Din moment ce indexul matricei pornește de la 0, numărulNumăr este 0) private box boxBorder: Sprite; // acesta va fi marginea HtmlBox-ului nostru. Putem permite granița cu TextField, dar în acest fel putem gestiona marjele.

    Pasul 21 - Principal: Funcția principală

    Funcția principală va fi executată automat când pornim HtmlBox. Prin urmare, trebuie să ne scriem codurile de pornire în această funcție.

    funcția publică Main (): void stage.align = StageAlign.TOP_LEFT; // Aceste două linii sunt opționale. Prefer să țin pasul aliniat la partea de sus-stânga și nesupravegheată. stage.scaleMode = StageScaleMode.NO_SCALE; boxBorder = Sprite nou (); // Aceasta este granița cu htmlbox. Practic, este un dreptunghi neinchis. Și vom crea un nou Sprite pentru ao desena. boxBorder.graphics.lineStyle (2, 0xC0C0C0, 1); // thicknes = 2px, culoare = 0xC0C0C0 (gri), alfa = 1 (100%). Puteți schimba aceste valori după cum doriți. boxBorder.graphics.drawRect (5, 5, stgW - 10, stgH - 10); // margin = 5. Este distanța dintre granița și stadiul limită. addChild (boxBorder); // după ce creăm și desenăm frontiera, trebuie să o adăugăm pe scenă. field = new TextField (); // Vom crea un nou TextField pentru a afișa pagini html. addChild (câmp); // deoarece există mai multe proprietăți pe care să le definim, vom adăuga mai întâi câmpul pentru etapă. cu (câmpul) // după ce adăugăm "câmpul" la etapă, putem folosi "cu" pentru a defini proprietățile sale. x = 10; // Am definit x și y ca 10 pentru a face un spațiu de 5px între câmp și frontieră. y = 10; width = stgW-20; și lățimea ar trebui să fie stgW-20. Deoarece, dacă vrem să facem o distanță de 10px între câmp și scenă, lățimea câmpului trebuie să fie 20px (10px din stânga + 10px din dreapta) mai scurtă decât lățimea scenei. înălțimea = stgH-20; // Și ar trebui să calculam înălțimea ca lățimea. multiline = true; // Câmpul trebuie să fie multiline. Deoarece textele noastre html sunt multiline. selectable = false; // Dacă doriți să selectați textul, puteți să îl modificați pe "true". wordWrap = true; // Fără "wordWrap" paragrafele noastre vor fi simple linii. condenseWhite = adevărat; // Aceasta este o proprietate importantă care face textul nostru să arate mai bine. Fără aceasta, vor exista mai multe spații în toate locurile htmltext.  // După ce creăm frontiera și câmpul text, putem încărca fișierele noastre. xml = noul XMLLoader (); // Vom crea un nou XMLLoader xml.load ("source.xml"); // și vom încărca fișierul XML. // Trebuie să ascultăm evenimentele pentru a ști ce să facem în continuare. xml.addEventListener ("XML_Loaded", xmlDone); // Dacă captem "XML_Loaded", vom continua să creăm HtmlBox. xml.addEventListener ("XML_IOError", eroare); / / Voi crea o singură funcție pentru toate erorile. xml.addEventListener ("XML_SecurityError", eroare); // Deci, toate evenimentele de eroare vor merge la această funcție de eroare xml.addEventListener ("XML_ParseError", eroare); css = new CSS (); // Vom crea un nou CSS css.load ("styles.css"); // și vom încărca fișierul nostru CSS. // css evenimentele sunt destul de aceleași cu evenimentele xml. css.addEventListener ("CSS_Loaded", cssDone); // Dacă capturăm "CSS_Loaded", vom continua să creăm HtmlBox. css.addEventListener ("CSS_IOError", eroare); // Și toate evenimentele de eroare ajung la funcția "eroare". css.addEventListener ("CSS_SecurityError", eroare); css.addEventListener ("CSS_ParseError", eroare); 

    Pasul 22 - Principal: funcția "eroare"

    Deoarece toate erorile trec la funcția "eroare", trebuie să le aranjăm cu "case de comutare". Vom verifica ce eroare a avut loc și scrieți textul necesar în "câmp". În acest pas, voi arăta doar două erori. Veți vedea toate erorile din clasa finalizată la pasul 25

     eroare de funcție privată (e: Event): void switch (e.type) // Vom verifica tipul erorii care a apărut cazul "XML_IOError": // Dacă eroarea este "XML_IOError" textul necesar despre "XML_IOError" în "câmp". field.htmlText = '


    XML IO ERROR
    Controlați calea dvs. XML!

    'break' / / Dacă eroarea este "XML_IOError", vom întrerupe operația și vom opri "casetele de comutare". cazul "XML_SecurityError": field.htmlText = '


    EROARE DE SECURITATE XML
    Verificați fișierele de politici!

    ' pauză;

    Pasul 23 - Principal: Funcțiile "Efectuat"

    Vom crea trei funcții "Efectuate". "xmlDone", "cssDone" și "allDone". "xmlDone" și "cssDone" vor fi executate după ce fișierele noastre vor fi încărcate cu succes și vor informa "allDone". Când fișierele css și xml sunt încărcate cu succes, "allDone" va adăuga StyleSheet la "câmp" și va scrie prima pagină.

     funcția privată cssDone (e: Event): void cssBool = true; // vom face cssBool "true". Deoarece fișierul CSS este încărcat cu succes. allDone (); // Și executați allDone.  funcția privată xmlDone (e: Event): void xmlBool = true; // vom face xmlBool "true". Deoarece fișierul XML este încărcat cu succes. allDone (); // Și executați allDone.  funcția privată allDone (): void if (cssBool && xmlBool) // dacă ambele fișiere css și xml sunt încărcate cu succes, field.styleSheet = css.sheet; // vom seta stilurile noastre la "field". field.htmlText = xml.pages [pageNum]; // vom scrie prima pagină în câmp. addEventListener (TextEvent.LINK, textEvent); // Și vom adăuga ascultător de evenimente pentru evenimentele de legătură care vor fi expediate de htmlText. 

    Pasul 24 - Principal: Funcția "textEvent"

    În această funcție, vom verifica textele evenimentului "următor" și "prev".

     funcția privată textEvent (e: TextEvent): void if (e.text == "următorul") // Dacă se face clic pe linkul "Next", ++ pageNum; // vom crește campul field.htmlText = xml .pages [pageNum]; // și scrieți noua pagină în "câmp".  dacă (e.text == "prev") // Dacă se face clic pe linkul "prev", --pageNum; // vom micșora numărul de pagină.htmlText = xml.pages [pageNum]; // și scrie noua pagină la "câmp". 

    Pasul 25 - Principal: Terminat

    Aici este terminat clasa principală:

     pachet import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; importul flash.events.Event; importul flash.events.TextEvent; import flash.text.TextField; import flash.text.TextFormat; import keremk.CSS; import keremk.XMLLoader; public class principal Extinde Sprite private var xml: XMLLoader; privat var css: CSS; câmp privat de var: TextField; privat var cssBool: Boolean = false; privat var xmlBool: Boolean = false; privat var stgW: Număr = stage.stageWidth; privat var stgH: număr = stage.stageHeight; private var paginaNumă: int = 0; privat caseta varBorder: Sprite; funcția publică principală (): void stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; boxBorder = Sprite nou (); boxBorder.graphics.lineStyle (2, 0xC0C0C0, 1); boxBorder.graphics.drawRect (5, 5, stgW-10, stgH-10); addChild (boxBorder); câmp = nou TextField (); addChild (câmp); cu (câmpul) x = 10; y = 10; lățime = stgW-20; înălțime = stgH-20; multiline = true; selectable = false; wordWrap = adevărat; condenseWhite = adevărat;  xml = noul XMLLoader (); xml.load ( "source.xml"); xml.addEventListener ("XML_Loaded", xmlDone); xml.addEventListener ("XML_IOError", eroare); xml.addEventListener ("XML_SecurityError", eroare); xml.addEventListener ("XML_ParseError", eroare); css = nou CSS (); css.load ( "styles.css"); css.addEventListener ("CSS_Loaded", cssDone); css.addEventListener ("CSS_IOError", eroare); css.addEventListener ("CSS_SecurityError", eroare); css.addEventListener ("CSS_ParseError", eroare);  eroare de funcție privată (e: Event): void switch (e.type) caz "XML_IOError": field.htmlText = '


    XML IO ERROR
    Controlați calea dvs. XML!

    ' pauză; cazul "XML_SecurityError": field.htmlText = '


    EROARE DE SECURITATE XML
    Verificați fișierele de politici!

    ' pauză; cazul "XML_ParseError": field.htmlText = '


    Eroare XML PARSE
    Vă rugăm să depanați fișierul XML!

    ' pauză; cazul "CSS_IOError": field.htmlText = '


    EROARE CSS IO
    Vă rugăm să vă controlați calea CSS!

    ' pauză; cazul "CSS_SecurityError": field.htmlText = '


    EROARE DE SECURITATE CSS
    Verificați fișierele de politici!

    ' pauză; cazul "CSS_ParseError": field.htmlText = '


    Eroare CSS PARSE
    Vă rugăm să depanați fișierul CSS!

    ' pauză; funcția privată cssDone (e: Event): void cssBool = true; totul este gata(); funcția privată xmlDone (e: Event): void xmlBool = true; totul este gata(); funcția privată allDone (): void if (cssBool && xmlBool) field.styleSheet = css.sheet; field.htmlText = xml.pages [pageNum]; addEventListener (TextEvent.LINK, textEvent); funcția privată textEvent (e: TextEvent): void if (e.text == "următorul") ++ pageNum; field.htmlText = xml.pages [pageNum]; dacă (e.text == "prev") --pageNum; field.htmlText = xml.pages [pageNum];

    Pasul 26 - Compilarea în FlashDevelop

    Am terminat de scris codul nostru, acum este momentul să-l compilați. Dacă ați creat proiectul în FlashDevelop, trebuie doar să apăsați "F5" pentru ao verifica și "F8" pentru a construi proiectul. Înainte de aceasta, este posibil să doriți să modificați setările de ieșire. Pentru a face acest lucru, mergeți la Project> Properties ...

    În panoul cu proprietăți, puteți modifica:

    • "Target" -> versiunea Flash Player
    • "Fișier de ieșire" -> Numele și calea fișierului de ieșire (calea fișierului de ieșire este "bin /")
    • "Dimensiuni" -> Lățimea și înălțimea fișierului de ieșire
    • "Culoarea de fundal" -> Culoarea de fond a fișierului de ieșire (am folosit negrul "# 000000")
    • "Framerate" -> Framerate a fișierului de ieșire (Deoarece nu există cadru în proiectul nostru, am folosit 30fps ca implicit.)
    • "Test Movie" -> Cum se joacă filmul test când apăsați "F5"

    După operația "Construiți proiectul", puteți utiliza folderul htmlBox din bin. Dacă intenționați să îl mutați într-un alt folder, trebuie să mutați fișierele "htmlBox.swf", "source.xml" și "styles.css" în același folder. Dacă intenționați să utilizați "index.html", veți avea nevoie de întregul director "bin". Implicit, dimensiunile htmlBox vor fi 100% în "index.html". Puteți schimba acest lucru în "swfobject.embedSWF ();" funcția în "index.html".

    Pasul 27 - Compilarea în Flash IDE

    Dacă utilizați Flash CS3 sau CS4, deschideți fișierul "htmlBox.fla". În fereastra de proprietăți, scrieți "Principal" în caseta "Clasă". De asemenea, puteți schimba "Frame rate", "Size" și "Background color" din htmlBox în fereastra de proprietăți.

    După definirea clasei "Document", îl puteți testa apăsând "Ctrl + Enter" și publicându-l apăsând "Ctrl + F12". Dacă doriți să modificați setările de publicare (cum ar fi versiunea), puteți deschide setările de publicare apăsând "Ctrl + Shift + F12" sau accesând File> Publish Settings ...

    Din nou, dacă intenționați să mutați-l într-un alt folder, trebuie să mutați fișierele "htmlBox.swf", "source.xml" și "styles.css" în același folder. Dacă intenționați să utilizați "index.html", veți avea nevoie de fișierul "AC_RunActiveContent.js" din același director. Implicit, dimensiunile htmlBox vor fi aceleași cu fișierul swf din "index.html". Puteți să o modificați în fiși