Bouw een ActionScript 3.0 HTML Box met XML- en CSS-ondersteuning

In deze zelfstudie maken we een HTML-vak waarin inhoud van XML en CSS wordt geladen. We zullen het bouwen met behulp van ActionScript 3.0 zodat we het in FlashDevelop kunnen compileren. Ik zal ook laten zien hoe je het kunt compileren in Flash IDE. We zullen ons concentreren op het maken van externe scriptbestanden (klassen), het laden en gebruiken van XML- en CSS-bestanden, die allemaal enige kennis van ActionScript veronderstellen. Laten we beginnen!




Invoering

Tijdens de volgende stappen maken we een HTML Box met behulp van ActionScript 3.0. Onderweg zullen we zien:

  • Externe scripts maken (klassen).
  • XML- en CSS-bestanden laden, ontleden en gebruiken.
  • Nieuwe evenementen maken met "dispatchEvent".
  • "TextEvent" gebruiken.
  • Gebruik van htmlText-tags.

Je kunt de bestanden maken die we hieronder zullen zien in een teksteditor zoals Kladblok enz. Ik zal FlashDevelop gebruiken als een ontwikkelomgeving. Onze bestanden zullen zijn:

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

en voor degenen die willen compileren in Flash IDE:

  • "HtmlBox.fla"

Stap 1 - Start de HTML BOX

Start in FlashDevelop een nieuw project. Kies "AS3-project" en noem het "htmlBox".

Nadat het project is gemaakt, wordt "Main.as" automatisch gemaakt. U moet andere bestanden handmatig aanmaken. Voeg een map met de naam "keremk" toe aan de map src.

In deze map maken we 'XMLLoader.as' en 'CSS.as' door met de rechtermuisknop op "keremk" te klikken en naar Add> New Class ... te gaan. We voegen ook onze "source.xml" en "styles.css" toe. "bestanden naar de bin-map door met de rechtermuisknop op" bin "te klikken en naar Toevoegen> Nieuw XML-bestand ... en Toevoegen> Nieuw CSS-bestand te gaan.

Maak voor Flash IDE een map met de naam "htmlBox" in uw verkenner. Maak "Main.as" door met de rechtermuisknop te klikken en naar Nieuw> Flash ActionScript-bestand te gaan en maak vervolgens "htmlBox.fla" door met de rechtermuisknop te klikken en naar Nieuw> Flash-document te gaan. Maak vervolgens een map met de naam "keremk" in deze map maak "XMLLoader.as" en "CSS.as" aan. U moet "styles.css" en "source.xml" in de map "htmlBox" maken (dezelfde map als de bestanden "Main.as" en "htmlBox.fla"). U kunt ze maken door met de rechtermuisknop te klikken en naar Nieuw> Tekstdocument te gaan en vervolgens de extensies een nieuwe naam te geven. Je kunt elke editor gebruiken om "as", "xml" en "css" bestanden te schrijven. U kunt ook "als" -bestanden in Flash IDE schrijven door erop te dubbelklikken.

Stap 2 - Het CSS-bestand maken

Ik gebruik font-family, font-size, text-align, font-weight, colour en
text-decoration eigenschappen in mijn CSS-bestand. Ik maak ook een "hW" -tag voor koppen en "activeL", "passiveL", "pagina" en "para" -klassen voor andere teksten.

 hW: Koersstijlen actiefL: Actieve linkstijlen passiveL: pagina passieve linkstijlen: paginanummerstijlen alinea: alineastijlen

Hier is de code. Ik zal het niet regel voor regel uitleggen, omdat ik denk dat het redelijk begrijpelijk is.

 A: link text-decoration: onderstrepen;  A: hover text-decoration: none;  hW font-family: "Courier New", Courier, monospace; lettertypegrootte: 20px; text-align: center; lettertype: vet; kleur: #CCCCCC;  .activeL font-family: "Comic Sans MS", cursief; lettergrootte: 12px; text-align: center; font-gewicht: normaal; kleur: #EEEEEE;  .passiveL font-family: "Comic Sans MS", cursief; lettergrootte: 12px; text-align: center; font-gewicht: normaal; kleur: # 666666;  .para font-family: Verdana, Arial, Helvetica, sans-serif; lettergrootte: 12px; text-align: rechtvaardigen; font-gewicht: normaal; kleur: #CCCCCC;  .page font-family: Verdana, Arial, Helvetica, sans-serif; kleur: #CCCCCC; lettergrootte: 12px; text-align: right; font-gewicht: normaal; 

Stap 3 - Het XML-bestand maken

Bij het maken van een XML-bestand gebruiken we Flash-htmlText-tags die hieronder worden weergegeven. Voor meer informatie kunt u Adobe voor TextField.htmlText bezoeken.

 Anker-tag (link-tag):  Vet tag: Break-tag:
Afbeelding tag: Cursief label: Lijstitem-tag:
  • Alineatags:

    Span-tag: Onderstreep tag:

  • We beginnen met het maken van onze "source.xml" door het eerste kind als te definiëren . Tussen de tags, zullen we onze html-code schrijven.

             

    Stap 4 - HtmlBox-pagina's in het XML-bestand schrijven

    We beginnen met een pauze "
    "om de presentatie te verbeteren. Merk op dat we elke tag die we gebruiken in XML moeten sluiten, anders kan het XML-bestand niet worden geparseerd. "
    "is een gesloten tag.
    Na de "break" -tag schrijven we een kop binnen de "hw" -tag en starten we de alinea in " "Voor de lijsten gebruiken we een"" label.


    POST
  • Stap 5 - Toevoegen van "Volgende" en "Vorige" koppelingen naar pagina's

    Om volgende en vorige links toe te voegen, gebruiken we 'event: next' en 'event: prev' als 'href'. Deze worden door flashplayer als evenement vastgelegd. Wanneer op de links wordt geklikt, verzendt "event: next" een "link" -gebeurtenis met een "volgende" tekst in een flits.

     ...  < PREVIOUS |   | VOLGENDE>  

    Op deze pagina (voor de eerste pagina) zal er geen vorige pagina zijn. Dus de vorige link moet passief zijn en de "href" moet leeg zijn.

    Trouwens, om te zien "<", "&" etc. symbols in htmlbox we should use their codes shown below.

    < : < (less than) > :> (groter dan) &: & (ampersand) ":" (dubbele aanhalingstekens) ' : '(apostrof, enkel aanhalingsteken)

    Stap 6 - Paginanummers toevoegen aan pagina's

    Bij het toevoegen van paginanummers, hoeven we alleen de klasse "page" te gebruiken voor "bereik". Het patroon van paginanummers is aan jou. Ik schreef ze als volgt: "(pagina 1/3)".

    ... (pagina 1/3) 

    En hier is mijn XML-bestand met één pagina.

        
    AS3 HTML BOX met XML- en CSS-ondersteuning
    Hallo iedereen.

    Deze HTML Box is gemaakt met alleen AS3. En alle codes zijn geschreven in externe "als" -bestanden.

    Met de onderstaande tutorial leer je:
  • Hoe externe klassen te maken.
    XML- en CSS-bestanden laden, parseren en gebruiken in een htmlText.
    Hoe nieuwe evenementen te maken met "dispatchEvent" en deze gebeurtenissen te gebruiken.
    Hoe u "TextEvent" in htmlText kunt gebruiken.
    Hoe htmlText-tags te gebruiken.






  • < PREVIOUS | | VOLGENDE>

    (pagina 1/3)

    Overigens kunt u afbeeldingen toevoegen aan uw pagina's, zoals hieronder getoond:

        

    Stap 7 - Action Script Files (externe klassen)

    We hebben de map "keremk" gemaakt en we zullen deze map gebruiken voor onze klassen "XMLLoader" en "CSS".

    We moeten daarom onze lessen beginnen met:

     pakket keremk 

    Stap 8 - De CSS-klasse maken

    We beginnen onze CSS-klasse met "package keremk ". De naam van de klasse is hetzelfde als de bestandsnaam "CSS". Opmerking: ActionScript is hoofdlettergevoelig. Aangezien we evenementen met deze klasse verzenden, wordt 'EventDispatcher' verlengd.

     pakket keremk // CSS bevindt zich in keremk map public class CSS breidt EventDispatcher uit // CSS verzendt evenementen publieke functie CSS (): void loader = nieuwe URLLoader; // wanneer een CSS is aangemaakt, zal nieuwe loader worden gedefinieerd 

    Stap 9 - CSS: Flash-klassen importeren

     import flash.net.URLLoader; // We laden css bestand met urlloader import flash.net.URLRequest; // en er zou een verzoek moeten zijn om te laden. import flash.text.StyleSheet; // We zullen css-bestand parsen als een stylesheet. import flash.events.SecurityErrorEvent; // We verzenden gebeurtenissen, dus we moeten ook gerelateerde klassen importeren. import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.EventDispatcher;

    U kunt deze klassen ook binnen 3 regels importeren door "*" te gebruiken om alle klassen "events" en "net" te importeren, maar ik importeer ze het liefst een voor een. We hebben niet alle klassen "events" en "net" nodig. Als u liever minder code schrijft, is dit het afgekorte equivalent.

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

    Stap 10 - CSS: variabelen

    We hebben slechts twee variabelen in deze klasse nodig, een URLLoader en een StyleSheet.

    private var loader: URLLoader; public var sheet: StyleSheet;

    Trouwens, privévariabelen zijn niet bereikbaar vanuit hun klassen. Ik gebruik 'loader' alleen in de CSS-klasse, zodat ik het als privé kan maken. Ik gebruik "werkblad" uit de hoofdklasse, dus ik moet het als "openbaar" maken (bereikbaar).

    Stap 11 - CSS: laadfunctie

    We gebruiken deze laadfunctie van onze hoofdklasse, dus we moeten deze als openbaar maken. Het zal een string vereisen om te laden, dat zal "_req: String" zijn

    openbare functie laden (_req: String): void // function laadt het bestand dat zijn pad is gegeven. loader.load (nieuw URLRequest (_req)); // pad moet worden omgezet naar een URLRequest om het bestand te laden. loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); // We luisteren naar 3 gebeurtenissen om over te dragen naar de hoofdklasse. loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE geladen); 

    Stap 12 - CSS: Event Handlers en Dispatchers

    In stap 11 hebben we 3 gebeurtenislisteners toegevoegd aan loader, beveiligingsfout, IO-fout en voltooid. Een van hen zal uiteindelijk worden verzonden. Wanneer het is gebeurd, moeten we het naar de hoofdklasse verplaatsen door te luisteren en te verzenden. We moeten ook controleren of er een probleem is bij het parseren van een CSS-bestand na de "Complete" -gebeurtenis. We zullen het controleren door "try catch" te gebruiken.

    persoonlijke functie ioError (e: IOErrorEvent): void // When IO error happens, dispatchEvent (new Event ("CSS_IOError")); // deze regel verzendt de "CSS_IOError".  persoonlijke functie secError (e: SecurityErrorEvent): void // Als er een beveiligingsprobleem is, dispatchEvent (new Event ("CSS_SecurityError")); // verzendt deze regel de "CSS_SecurityError".  persoonlijke functie geladen (e: Event): void // Als het laden is voltooid, probeer dan // probeer het te ontleden. sheet = new StyleSheet (); sheet.parseCSS (loader.data); dispatchEvent (nieuwe gebeurtenis ("CSS_Loaded")); // Als parsering OK is, verzendt deze regel "CSS_Loaded".  catch (e: Error) dispatchEvent (new Event ("CSS_ParseError")); // Als parsing NIET OK is, verzendt deze regel "CSS_ParseError"

    Met event handlers en dispatchers is onze CSS-klasse klaar. Hier is het volledige CSS.as-bestand:

     pakket keremk import flash.net.URLLoader; import flash.net.URLRequest; import flash.text.StyleSheet; import flash.events.SecurityErrorEvent; import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.EventDispatcher; public class CSS breidt EventDispatcher uit private var loader: URLLoader; public var sheet: StyleSheet; public function CSS (): void loader = new URLLoader;  openbare functie laden (_req: String): void loader.load (nieuwe URLRequest (_req)); loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE geladen);  private function ioError (e: IOErrorEvent): void dispatchEvent (new Event ("CSS_IOError"));  private functie secError (e: SecurityErrorEvent): void dispatchEvent (new Event ("CSS_SecurityError"));  persoonlijke functie geladen (e: Event): void try sheet = new StyleSheet (); sheet.parseCSS (loader.data); dispatchEvent (nieuwe gebeurtenis ("CSS_Loaded"));  catch (e: Error) dispatchEvent (new Event ("CSS_ParseError")); 

    Stap 13 - De XMLLoader maken

    We starten onze XMLLoader-klasse met "package keremk " en het breidt ook "EventDispatcher" uit.

     package keremk // XMLLoader bevindt zich in de map keremk. public class XMLLoader breidt EventDispatcher uit public function XMLLoader () loader = new URLLoader; // wanneer een XMLLoader wordt gemaakt, wordt een nieuwe lader gedefinieerd. 

    Stap 14 - XMLLoader: Flash-klassen importeren

    We hebben dezelfde klassen nodig als voor onze CSS zonder de klasse "StyleSheet". Ze zijn als volgt:

     import flash.events.SecurityErrorEvent; // Event classes om te luisteren en te verzenden. import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; // net classes om XML-bestanden te laden. import flash.net.URLRequest;

    Stap 15 - XMLLoader: variabelen

    We hebben nu 5 variabelen nodig:

     private var loader: URLLoader; // om XML-bestand persoonlijke var-gegevens te laden: XML; // om XML-bestandsgegevens te bewaren om het te parseren. private var i: uint; // -teller om te gebruiken bij het parseren. private var lenXML: uint; // om te controleren hoeveel pagina's er in XML zijn. public var pages: Array = []; // om pagina's vast te houden na het parseren van de XML.

    Stap 16 - XMLLoader: laadfunctie

    De "load" -functie is hetzelfde als bij "CSS.load". We zullen het uit de hoofdklasse gebruiken en het zou ook openbaar moeten zijn.

    openbare functie laden (_req: String): void // function laadt het bestand voor welk pad wordt gegeven. loader.load (nieuw URLRequest (_req)); // pad moet worden omgezet naar een URLRequest om het bestand te laden. loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); // We luisteren naar 3 gebeurtenissen om over te dragen naar de hoofdklasse. loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE geladen); 

    Stap 17 - XMLLoader: gebeurtenishandlers en dispatchers

    We hebben 3 gebeurtenislisteners toegevoegd aan loader, beveiligingsfout, IO-fout en voltooid. Een van hen zal uiteindelijk worden verzonden. Wanneer het is gebeurd, moeten we het naar de hoofdklasse verplaatsen door te luisteren en te verzenden. We moeten ook controleren of er een probleem is bij het parseren van het XML-bestand na de gebeurtenis "Voltooid". Er kunnen twee verschillende gebeurtenissen zijn om te verzenden: "XML_Loaded" of "XML_ParseError". We zullen het controleren door "try catch" te gebruiken.

     persoonlijke functie ioError (e: IOErrorEvent): void // When IO error happens, dispatchEvent (new Event ("XML_IOError")); // deze regel verzendt de "XML_IOError".  persoonlijke functie secError (e: SecurityErrorEvent): void // Wanneer er een beveiligingsprobleem is, dispatchEvent (new Event ("XML_SecurityError")); // verzendt deze regel de "XML_SecurityError".  persoonlijke functie geladen (e: Event): void // Als het laden is voltooid, probeer dan // probeer het te ontleden. data = nieuwe XML (loader.data); // neemt XML-gegevens over naar "data" lenXML = data.children (). length (); // controleert het aantal pagina's voor (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".  

    Met handlers en dispatchers is onze klasse XMLLoader klaar. Hier is de voltooide XMLLoader:

    package keremk import flash.events.SecurityErrorEvent; import flash.events.IOErrorEvent; import flash.events.Event; import flash.events.EventDispatcher; import flash.net.URLLoader; import flash.net.URLRequest; public class XMLLoader breidt EventDispatcher uit private var loader: URLLoader; privé var-gegevens: XML; privévari: uint; privé var lenXML: uint; openbare var-pagina's: Array = []; publieke functie XMLLoader () loader = nieuwe URLLoader;  openbare functie laden (_req: String): void loader.load (nieuwe URLRequest (_req)); loader.addEventListener (SecurityErrorEvent.SECURITY_ERROR, secError); loader.addEventListener (IOErrorEvent.IO_ERROR, ioError); loader.addEventListener (Event.COMPLETE geladen);  private function ioError (e: Event): void dispatchEvent (new Event ("XML_IOError"));  private function secError (e: Event): void dispatchEvent (new Event ("XML_SecurityError"));  private function loaded (e: Event): void try data = new XML (loader.data); lenXML = data.children (). length (); voor (i = 0; i < lenXML; i++)  pages.push(data.children()[i]);  dispatchEvent(new Event("XML_Loaded"));  catch (e:Error)  dispatchEvent(new Event("XML_ParseError"));    

    Stap 18 - De hoofdklasse maken

    Omdat de hoofdklasse zich in de hoofdmap van ons project bevindt, zullen we beginnen met het schrijven van "pakket ". Het verlengt "sprite" en we zullen onze code starten in de "Hoofd" -functie:

     pakket // invoerpunt voor invoer. public class Main breidt Sprite uit // startpunt voor vars. public function Main (): void // startpunt voor codes.  // toegangspunt voor extra functies. 

    Stap 19 - Belangrijkste: Flash-klassen importeren

     import flash.display.Sprite; // Hoofdklasse breidt "Sprite" uit. Dus we hebben de klasse "Sprite" nodig. import flash.display.StageAlign; // We hebben "StageAlign" nodig om de stage uit te lijnen. import flash.display.StageScaleMode; // We hebben "StageScaleMode" nodig om de schaalmodus te beheren. import flash.events.Event; // We hebben de klasse "Event" nodig om evenementen te gebruiken die we in "XMLLoader" - en "CSS" -klassen hebben gemaakt. import flash.events.TextEvent; // We hebben "TextEvent" nodig om paginalinks te gebruiken in "htmlText". import flash.text.TextField; // We zullen een "TextField" maken om html-pagina's te tonen en ons css ernaar toe te voegen met "TextFormat" import flash.text.TextFormat; import keremk.CSS; // En in die "Hoofd" klasse zullen we onze "CSS" en "XMLloader" klassen gebruiken die we eerder hebben gemaakt. importeer keremk.XMLLoader;

    Stap 20 - Hoofd: variabelen

     private var xml: XMLLoader; // dit zal onze XML-gegevens privé houden var css: CSS; // dit houdt onze persoonlijke gegevens van het StyleSheet-gegevensveld in: TextField; // we gebruiken dit om onze html-pagina's te tonen private var cssBool: Boolean = false; // deze twee booleans zullen ons vertellen of onze CSS- en XML-bestanden zijn geladen. Private var xmlBool: Boolean = false; private var stgW: Number = stage.stageWidth; // deze twee controleren de hoogte en breedte van de stage. private var stgH: Number = stage.stageHeight; // op deze manier kunnen we de breedte en hoogte van onze HtmlBox wijzigen in html-bestanden. private var pageNum: int = 0; // hiermee wordt de pagina gedefinieerd die we weergeven in HtmlBox. (Aangezien array-index begint bij 0, is pageNum 0) private var boxBorder: Sprite; // dit wordt de rand van onze HtmlBox. We kunnen de grens van TextField inschakelen, maar op deze manier kunnen we de marges beheren.

    Stap 21 - Hoofd: Hoofdfunctie

    De hoofdfunctie wordt automatisch uitgevoerd wanneer we HtmlBox starten. Daarom moeten we onze startercodes in deze functie schrijven.

    public function Main (): void stage.align = StageAlign.TOP_LEFT; // Deze twee regels zijn optioneel. Ik houd liever de stage in lijn met linksboven en niet-vergrendeld. stage.scaleMode = StageScaleMode.NO_SCALE; boxBorder = nieuwe Sprite (); // Dit is onze grens van htmlbox. Kortom, het is een ongevulde rechthoek. En we zullen een nieuwe Sprite maken om het te tekenen. boxBorder.graphics.lineStyle (2, 0xC0C0C0, 1); // thicknes = 2px, kleur = 0xC0C0C0 (grijs), alpha = 1 (100%). U kunt deze waarden naar wens wijzigen. boxBorder.graphics.drawRect (5, 5, stgW - 10, stgH - 10); // margin = 5. Het is de afstand van de grens tot de rand van het werkvlak. addChild (boxBorder); // nadat we onze rand hebben gemaakt en getekend, moeten we deze aan het podium toevoegen. field = new TextField (); // We zullen een nieuw TextField maken om html-pagina's te tonen. addChild (veld); // omdat er veel eigenschappen zijn om te definiëren, zullen we eerst veld naar fase toevoegen. met (veld) // nadat we het "veld" aan fase toevoegen, kunnen we "met" gebruiken om zijn eigenschappen te definiëren. x = 10; // Ik heb x en y gedefinieerd als 10 om een ​​5px-spatie te maken tussen veld en rand. y = 10; width = stgW-20; // En width zou stgW-20 moeten zijn. Omdat, als we een 10 px-afstand willen maken tussen veld en fase, de breedte van het veld 20px (10px van links + 10px van rechts) korter dan de breedte van het werkgebied moet zijn. height = stgH-20; // En we moeten de hoogte berekenen zoals de breedte. multiline = true; // Veld moet uit meerdere regels bestaan. Omdat onze html-teksten uit meerdere regels bestaan. selecteerbaar = onwaar; // Als u uw tekst selecteerbaar wilt maken, kunt u dit wijzigen in "waar". wordWrap = true; // Zonder "wordWrap" zullen onze alinea's enkele regels zijn. condenseWhite = true; // Dit is een belangrijke eigenschap waardoor onze tekst er beter uitziet. Zonder dit zal er overal meer ruimte zijn in de html-tekst.  // Nadat we ons grens- en tekstveld hebben gemaakt, kunnen we onze bestanden laden. xml = nieuwe XMLLoader (); // We zullen een nieuwe XMLLoader xml.load ("source.xml"); // maken en ons XML-bestand laden. // We moeten naar evenementen luisteren om te weten wat we vervolgens moeten doen. xml.addEventListener ("XML_Loaded", xmlDone); // Als we "XML_Loaded" vastleggen, blijven we HtmlBox maken. xml.addEventListener ("XML_IOError", error); // Ik maak slechts één functie voor alle fouten. xml.addEventListener ("XML_SecurityError", error); // Dus alle foutgebeurtenissen gaan naar deze "error" -functie xml.addEventListener ("XML_ParseError", error); css = nieuwe CSS (); // We zullen een nieuwe CSS css.load ("styles.css"); // maken en ons CSS-bestand laden. // CSS-evenementen zijn vrijwel hetzelfde met de XML-gebeurtenissen. css.addEventListener ("CSS_Loaded", cssDone); // Als we "CSS_Loaded" vastleggen, blijven we HtmlBox maken. css.addEventListener ("CSS_IOError", error); // En alle foutgebeurtenissen gaan ook naar de "error" -functie. css.addEventListener ("CSS_SecurityError", error); css.addEventListener ("CSS_ParseError", error); 

    Stap 22 - Main: "error" Functie

    Omdat alle fouten naar de "error" -functie gaan, moeten we ze rangschikken met "switch case". We zullen controleren welke fout is opgetreden en de vereiste tekst naar "veld" schrijven. In deze stap toon ik slechts twee fouten. Je ziet alle fouten in de voltooide hoofdklasse in stap 25

     persoonlijke functie fout (e: Gebeurtenis): void switch (e.type) // We zullen het type van de fout die optrad controleren op "XML_IOError": // Als de fout "XML_IOError" is, zullen we de fout schrijven vereiste tekst over "XML_IOError" naar "veld". field.htmlText = '


    XML IO-FOUT
    Bepaal alstublieft uw XML-pad!

    'break; // Als de fout' XML_IOError 'is, breken we de bewerking af en stoppen we de' switch case '. case "XML_SecurityError": field.htmlText = '


    XML VEILIGHEIDSFOUT
    Beheer alstublieft uw beleidsbestanden!

    'pauze;

    Stap 23 - Hoofd: "Gereed" Functies

    We zullen drie "Klaar" -functies maken. "xmlDone", "cssDone" en "allDone". "xmlDone" en "cssDone" zullen worden uitgevoerd nadat onze bestanden succesvol zijn geladen en zij zullen "allDone" op de hoogte brengen. Wanneer zowel CSS- als XML-bestanden zijn geladen, voegt "AllDone" het StyleSheet toe aan "veld" en schrijft de eerste pagina.

     private function cssDone (e: Event): void cssBool = true; // We maken cssBool "waar". Omdat CSS-bestand succesvol is geladen. allDone (); // En alles uitgevoerd.  private function xmlDone (e: Event): void xmlBool = true; // We maken xmlBool "waar". Omdat het XML-bestand met succes is geladen. allDone (); // En alles uitgevoerd.  private functie allDone (): void if (cssBool && xmlBool) // als zowel CSS- als XML-bestanden zijn geladen, field.styleSheet = css.sheet; // zullen we onze stijlen instellen op "field". field.htmlText = xml.pages [pageNum]; // we zullen de eerste pagina naar veld schrijven. addEventListener (TextEvent.LINK, textEvent); // En we zullen gebeurtenislisteners toevoegen voor linkgebeurtenissen die door htmlText worden verzonden. 

    Stap 24 - Hoofd: "textEvent" Functie

    In deze functie controleren we de gebeurtenisteksten "volgende" en "vorige".

     private function textEvent (e: TextEvent): void if (e.text == "next") // Als op de link "next" wordt geklikt, ++ pageNum; // verhogen we de pageNum field.htmlText = xml .pages [pageNum]; // en schrijf de nieuwe pagina in "field".  if (e.text == "vorige") // Als op de link "vorige" wordt geklikt, --pageNum; // verkleinen we de paginaNum field.htmlText = xml.pages [pageNum]; // en schrijven de nieuwe pagina naar "veld". 

    Stap 25 - Hoofd: klaar

    Hier is de afgewerkte hoofdklasse:

     pakket import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.TextEvent; import flash.text.TextField; import flash.text.TextFormat; import keremk.CSS; importeer keremk.XMLLoader; public class Main breidt Sprite uit private var xml: XMLLoader; privé var css: CSS; privé var-veld: TextField; private var cssBool: Boolean = false; private var xmlBool: Boolean = false; private var stgW: Number = stage.stageWidth; private var stgH: Number = stage.stageHeight; private var pageNum: int = 0; private var boxBorder: Sprite; public function Main (): void stage.align = StageAlign.TOP_LEFT; stage.scaleMode = StageScaleMode.NO_SCALE; boxBorder = nieuwe Sprite (); boxBorder.graphics.lineStyle (2, 0xC0C0C0, 1); boxBorder.graphics.drawRect (5, 5, stgW - 10, stgH - 10); addChild (boxBorder); field = new TextField (); addChild (veld); met (veld) x = 10; y = 10; breedte = stgW-20; hoogte = stgH-20; multiline = true; selecteerbaar = onwaar; wordWrap = true; condenseWhite = true;  xml = nieuwe XMLLoader (); XML.load ( "source.xml"); xml.addEventListener ("XML_Loaded", xmlDone); xml.addEventListener ("XML_IOError", error); xml.addEventListener ("XML_SecurityError", error); xml.addEventListener ("XML_ParseError", error); css = nieuwe CSS (); css.load ( "styles.css"); css.addEventListener ("CSS_Loaded", cssDone); css.addEventListener ("CSS_IOError", error); css.addEventListener ("CSS_SecurityError", error); css.addEventListener ("CSS_ParseError", error);  persoonlijke functiefout (e: Event): void switch (e.type) case "XML_IOError": field.htmlText = '


    XML IO-FOUT
    Bepaal alstublieft uw XML-pad!

    'pauze; case "XML_SecurityError": field.htmlText = '


    XML VEILIGHEIDSFOUT
    Beheer alstublieft uw beleidsbestanden!

    'pauze; case "XML_ParseError": field.htmlText = '


    XML PARSE ERROR
    Debug uw XML-bestand alstublieft!

    'pauze; case "CSS_IOError": field.htmlText = '


    CSS IO-FOUT
    Bestuurt u alstublieft uw CSS-pad!

    'pauze; case "CSS_SecurityError": field.htmlText = '


    CSS VEILIGHEIDSFOUT
    Beheer alstublieft uw beleidsbestanden!

    'pauze; case "CSS_ParseError": field.htmlText = '


    CSS PARSE ERROR
    Debatteer alstublieft uw CSS-bestand!

    'pauze; persoonlijke functie cssDone (e: Event): void cssBool = true; helemaal klaar(); private function xmlDone (e: Event): void xmlBool = true; helemaal klaar(); private function allDone (): void if (cssBool && xmlBool) field.styleSheet = css.sheet; field.htmlText = xml.pages [pageNum]; addEventListener (TextEvent.LINK, textEvent); private function textEvent (e: TextEvent): void if (e.text == "next") ++ pageNum; field.htmlText = xml.pages [pageNum]; if (e.text == "vorige") --pageNum; field.htmlText = xml.pages [pageNum];

    Stap 26 - Compileren in FlashDevelop

    We zijn onze code aan het schrijven, nu is het tijd om het te compileren. Als u uw project in FlashDevelop hebt gemaakt, hoeft u alleen maar op "F5" te klikken om het te controleren en op "F8" om het project te bouwen. Vóór dat, zou u uw outputmontages kunnen willen veranderen. Ga hiervoor naar Project> Eigenschappen ...

    In het eigenschappenvenster kunt u het volgende wijzigen:

    • "Doel" -> Flash Player-versie
    • "Uitvoerbestand" -> Uitvoerbestandsnaam en -pad (Ons uitvoerbestandpad is "bin /")
    • "Afmetingen" -> Breedte en hoogte van het uitvoerbestand
    • "Achtergrondkleur" -> Achtergrondkleur van het uitvoerbestand (ik heb zwart "# 000000" gebruikt)
    • "Framerate" -> Framerate van het uitvoerbestand (Omdat er geen frame in ons project staat, heb ik standaard 30fps gebruikt.)
    • "Testfilm" -> Hoe testfilm afspelen als u op "F5" drukt

    Na de "Build Project" -bewerking, kunt u de map htmlBox uit de bin-map gebruiken. Als u van plan bent om het naar een andere map te verplaatsen, moet u de bestanden "htmlBox.swf", "source.xml" en "styles.css" verplaatsen naar dezelfde map. Als je van plan bent om "index.html" te gebruiken, heb je de hele "bin" -directory nodig. De dimensies htmlBox zijn standaard 100% in "index.html". U kunt dit wijzigen in het "swfobject.embedSWF ();" functie in "index.html".

    Stap 27 - Samenstellen in Flash IDE

    Als u Flash CS3 of CS4 gebruikt, opent u het bestand "htmlBox.fla". Noteer in het eigenschappenvenster "Hoofd" in het vak "Klasse". U kunt ook "Framesnelheid", "Grootte" en "Achtergrondkleur" van htmlBox in het eigenschappenvenster wijzigen.

    Nadat u de "Documentklasse" hebt gedefinieerd, kunt u deze testen door op "Ctrl + Enter" te drukken en deze te publiceren door op "Ctrl + F12" te drukken. Als u de publicatie-instellingen (zoals de versie) wilt wijzigen, kunt u publicatie-instellingen openen door op "Ctrl + Shift + F12" te drukken of door naar Bestand> Instellingen publiceren ... te gaan

    Nogmaals, als u van plan bent om het naar een andere map te verplaatsen, moet u de bestanden "htmlBox.swf", "source.xml" en "style