Batch maken van SWF's met DOS en de Flex Command Line Compiler

Laten we kijken naar het maken van bulkcontent. We gaan een DOS Batch-bestand gebruiken om snel meerdere SWF's te genereren die verschillende tekst, geluid, afbeeldingen enz. Bevatten maar die een door ons gedefinieerde sjabloon volgen.


Ik moet toegeven dat ik een SWF-liefhebber ben. Je hoort tegenwoordig veel over HTML5 en andere opkomende technologieën die de goede oude SWF op de een of andere manier uit de markt zullen helpen, maar ik zal een van die ontwikkelaars zijn die zo lang mogelijk vasthouden aan mijn geliefde SWF. In de afgelopen 14 jaar of zo was de SWF uniek in zijn vermogen om rijke media-inhoud via internet te leveren, ver voordat andere technologieën zelfs maar in de buurt kwamen.

Voor e-learning is de SWF nog steeds vrijwel de standaard en ik gebruik deze in al mijn lesinhoud. Ik gebruik het voor alles, van virtuele privévideo's tot vectorafbeeldingen, vectortekst en allerlei interactieve activiteiten.

Voor het maken van bulkcontent, heb ik ontdekt dat niets zo snel en krachtig werkt als een goed DOS-batchbestand. U kunt snel een batchbestand schrijven en wijzigen om allerlei interessante dingen te doen. Als u met een groot aantal afbeeldingen, tekst en audio werkt, kan een batchbestand dat snel omzetten in multimedia-inhoud in de vorm van een SWF.

Redenen om dit te doen zijn:

  1. U hebt Flash niet geïnstalleerd op de pc waarop u werkt
  2. U wilt SWF's in bulk maken
  3. U wilt SWF's maken vanaf de opdrachtregel

Het enige hulpmiddel in Windows dat u, behalve uw code-editor, nodig hebt, is de Flex SDK en optioneel een open source ASCII-naar-UTF-8-convertertoepassing met de naam iconv uit het GnuWin-project, als u van plan bent internationale tekens of accenttekens in uw tekst te gebruiken.


Eindresultaat voorbeeld

Laten we eens kijken naar het uiteindelijke resultaat waar we naartoe zullen werken


Stap 1: Bepaal uw SWF-type

Bulkcreatie betekent dat al uw SWF's dezelfde sjabloon zullen volgen, dus beslis wat voor soort items u nodig heeft: vectortekst, afbeelding, audio, enz.


Stap 2: Activa en lettertypen organiseren

Geef uw bestanden de juiste naam: elk tekst-, beeld- en audiobestand moet overeenkomende namen bevatten, evenals hoofdletters en kleine letters. Als uw bestanden ongeorganiseerd zijn, wilt u mogelijk een hulpprogramma downloaden om ze een batch te hernoemen, naar kleine letters te converteren, enzovoort. Een dergelijk programma dat ik heb gevonden, heet Nuttig bestandshulpprogramma's.

U wilt mogelijk een tekstbestand openen en een lijst met absolute paden voor deze items bijhouden, inclusief eventuele lettertypen die u wilt insluiten.

In de source / bijkeuken map van uw download voor deze zelfstudie, zult u enkele kleine batch-scripts vinden die u kunnen helpen bij het maken van een hoofdwoordenlijst om te gebruiken bij uw SWF-creatie. Als uw bestandsnamen meer dan één woord bevatten, gebruik dan a scheutje tussen woorden [-]. Streepjes worden al ondergebracht in mijn .bat-bestand dat de SWF's maakt. Wanneer u streepjes gebruikt, worden deze geconverteerd naar getallen en later terug geconverteerd naar streepjes met een ander klein hulpprogramma-bestand, omdat anders uw AS3-klassenbestanden niet kunnen worden gecompileerd.


Stap 3: Maak AS3 Class-bestandssjabloon

Open je code-editor (ik gebruik altijd Notepad ++ voor meertalige codering, het is een geweldige open source-applicatie).

In de volgende stappen schets ik mogelijke elementen die u aan uw klassedefinitie kunt toevoegen, die door uw DOS-bestand wordt gebruikt om al uw SWF's te genereren.

Als u wilt meevolgen door het klassenbestand te bekijken dat ik voor deze fragmenten heb gebruikt, opent u de source / lago.as bestand in uw downloadpakket voor deze zelfstudie.

We beginnen met het toevoegen van een generieke pakketlay-out in AS3, die zonder enige functionaliteit er ongeveer zo zou uitzien:

 pakket import flash.display.Sprite; import flash.display. *; public class lago breidt Sprite uit 

Laten we nu enkele echte items aan onze SWF toevoegen!


Stap 4: Een mp3 inbedden

Zoals altijd, begin je met het importeren van de nodige klassenbestanden:

 import flash.media.Sound; import flash.media.SoundChannel;

Hier is code om een ​​geluid op een statische locatie in te bedden. U zult merken dat wanneer we ons DOS-bestand gaan maken, we in plaats daarvan de variabelen gebruiken voor onze map en bestandsnaam.

 [Embed (source = "C: /Users/You/Desktop/sound/lago.mp3")] public var soundClass: Class; var sndChannel: SoundChannel; var smallSound: Sound = new soundClass () as Sound;

Stap 5: Een afbeelding insluiten

Hier is de code om een ​​afbeelding in te sluiten:

 [Embed (source = "C: /Users/You/Desktop/images/lago.swf")] public var Afbeelding: Class; var pic: Sprite = new Picture ();

In mijn bestand maak ik eerst een Sprite, waaraan ik de afbeelding toevoeg, maar als je de afbeelding direct wilt toevoegen aan de fase die je zou gebruiken:

 addChild (pic);

Stap 6: Een lettertype insluiten

Omdat ik internationale tekens gebruik, sluit ik mijn lettertype in door op te geven welke Unicode-tekens moeten worden opgenomen:

 [Embed (mimeType = "application / x-font", unicodeRange = "U + 0061-U + 007A, U + 00E1-U + 00E1, U + 00E9-U + 00E9, U + 00ED-U + 00ED, U + 00F1-U + 00F1, U + 003F-U + 003F, U + 00FA-U + 00FA, U + 00E1-U + 00E1, U + 00F3-U + 00F3, U + 00BF-U + 00BF, U + 00A1- U + 00A1 ", source =" C: /Users/You/Desktop/BradBunR.ttf ", fontName =" Brady ")] private var terminatorFontClass: Class;

Om te zien welke karakters je nodig hebt, kun je dit overzicht hier bekijken, te vinden op de website Ruimte, Wetenschap en Techniek van de Universiteit van Wisconsin-Madison. In Windows kunt u ook uw charmap.exe-programma openen en de waarden bekijken voor de tekens die u nodig hebt.

charmap.exe

Stap 7: Gebruiken textFormat om je tekst op te sieren

Begin met het importeren van de nodige klassen:

 import flash.text. *; import flash.text.TextFormat; import flash.text.AntiAliasType;

Maak nu een textField en bevestig een textFormat ernaar toe:

 var __text_tf: TextField = new TextField (), __ format: TextFormat = new TextFormat ();

Laten we nu wat styling toepassen op onze tekst. Ik heb een formaat gebruikt voor de onderstaande tekst, maar in mijn huidige bestand pas ik de grootte aan op basis van de tekenreekslengte, dus deze maatlijn zou niet worden gebruikt.

 __format.size = 30; __format.font = "Brady"; __format.letterSpacing = 6; __format.align = TextFormatAlign.CENTER; __text_tf.width = 500; __text_tf.embedFonts = true; __text_tf.wordWrap = true; __text_tf.defaultTextFormat = __format; __text_tf.autoSize = "center"; __text_tf.text = str;

Stap 8: De lettergrootte wijzigen afhankelijk van de snijlengte

Dit was een beetje een lastig stukje code, maar als je probeert bulk-SWF's van zinnen en zelfs zinnen te maken in plaats van alleen maar woorden, zul je merken dat het nodig is om rekening te houden met verschillende reekslengtes. Anders zullen sommige van uw woorden te groot of te klein zijn.

 if (str.length <= 9)  __format.size = 70;  else if (str.length >= 14 && str.length <= 22)  __format.size = 50; __text_tf.defaultTextFormat = __format;  else if (str.length >= 28 && str.length <= 48)  __format.size = 40; __text_tf.defaultTextFormat = __format;  else  __format.size = 50; 

Natuurlijk kunt u deze waarden naar eigen behoefte aanpassen.


Stap 9: Tekst centreren in a textField

Deze regel ontweek me aanvankelijk en was cruciaal voor het goed centreren van mijn tekst in de textField.

 __text_tf.autoSize = "center";

Stap 10: centreren en proportioneel vergroten of verkleinen van een afbeelding

Deze code kostte het grootste deel van een dag om gelijk te krijgen, en is de enige manier om een ​​SWF op de juiste manier te verkleinen en te centreren. U kunt de x, y wijzigen, targetHeight, en targetWidth waarden, afhankelijk van de grootte van uw eigen SWF's, maar anders kunt u met deze code centreren en vergroten / verkleinen:

 var ratio: Number; var wide: Number; var targetWidth: Number = 400; var targetHeight: Number = 250; if (pic.width < targetWidth)  ratio = targetWidth / pic.width; pic.width = targetWidth; pic.height *= ratio; wide = pic.width*ratio;  if (pic.height < targetHeight)  ratio = targetHeight / pic.height; pic.width *= ratio; pic.height = targetHeight; wide = pic.width*ratio;  if (pic.width > targetWidth) ratio = targetWidth / pic.width; pic.width * = verhouding; pic.height * = verhouding; wide = pic.width * ratio;  if (pic.height> targetHeight) ratio = targetHeight / pic.height; pic.width * = verhouding; pic.height * = verhouding; wide = pic.width * ratio;  pic.y = 110; pic.x = 250 - breed / 2; pic.scaleX = pic.scaleY; square.addChild (pic);

Stap 11: DOS-versie van uw AS3-klassenbestand

Bekijk het voorbeeldbestand alstublieft source / lago.as als je meer hulp nodig hebt bij het maken van je klassenbestandssjabloon, nu is het tijd om de DOS-versie van je bestand te maken.

Open het bestand lago.bat.txt in de bronmap van uw download en sla de naam op in alleen lago.bat. Als u een codebewerker zoals Notepad ++ gebruikt, moet u een Batch-markeringssyntaxis hebben die nu wordt toegepast. Hoewel het niet nodig is, maakt het accentueren van de syntaxis het maken van batchcatching een stuk eenvoudiger.

Onthoud dat DOS je nodig heeft om aan bepaalde karakters te ontsnappen door ze voor te azen met een dakje [^] (of soms een double-caret [^^], inclusief:

  • (
  • )
  • >
  • &

Onthoud ook de volgende dingen:

  1. Elke regel moet beginnen echo zodat het zal worden opgenomen
  2. Elke regel moet eindigen met >>! fileoutta! zodat deze wordt toegevoegd aan ons SWF-makerbestand .bat

Gebruik een programma zoals Notepad ++ om een ​​RegEx-zoekopdracht uit te voeren en te vervangen, eerst te ontsnappen aan de benodigde tekens en vervolgens de echo opdrachten aan het begin van regels, of waar \ n wordt gevonden, en de >>! fileoutta! vóór terugkomst, of waar \ r wordt gevonden. Bijvoorbeeld:

Vind:

\ n

Vervangen door:

\ n echo

En

Vind:

\ r

Vervangen door:

>>! fileoutta!\ r

Sla tot slot deze DOS-versie van uw bestand op, d.w.z.. myclass.bat.


Stap 12: Begin met het bewerken van uw DOS batchbestand

Om beter te kunnen volgen, opent u het volgende bestand van uw download bron directory: batch_create_swfs_word_picture_w_audio.bat.txt. Verander het bestand dat eindigt op just .knuppel en opslaan.

Punten over dit .bat-bestand:

  1. Het zal worden uitgevoerd in de map waarin u het plaatst
  2. Het gebruikt de naam van de map als een variabele
  3. Het zal elke afbeelding verwachten in een /afbeeldingen subdirectory
  4. Het zal alle audiobestanden verwachten in een /geluid subdirectory
  5. De absolute paden naar de Flex-compiler, alle lettertypen die u wilt insluiten en optioneel het programma iconv.exe zijn nodig

Ik gebruik een hoofdwoordenlijstbestand om mijn SWF's te maken, die u kunt vinden in source / woordenlijst / glossary.txt. Als u zo'n bestand uit een map met bestanden wilt maken, kunt u een van mijn hulpprogramma .bat-bestanden gebruiken die in de map zijn aangetroffen source / bijkeuken map.

Houd er rekening mee dat bij batchverwerking u zeer zorgvuldig moet zijn bij het benoemen van activa. De beste aanpak is om alle afbeeldingen en audio-items die voor dezelfde SWF zijn bestemd, exact dezelfde naam te geven en ze vervolgens in de juiste submappen te plaatsen, bijvoorbeeld:

geluid / lago.mp3

images / lago.swf

De glossary / glossary.txt bestand om alleen de SWF voor te maken lago zou gewoon lezen

lago

De schoonheid van mijn systeem is dat van mij glossary.txt bestand kan een onbeperkt aantal woorden bevatten - in feite heb ik het met meer dan 1000 woorden uitgevoerd, zonder problemen! Maar de items die u probeert in te sluiten, moeten bestaan ​​en zich op de juiste locatie bevinden, correct worden benoemd of de SWF voor dat woord kan niet worden gecompileerd.


Stap 13: vervang uw bestands- en mapreferenties

Kijk nog eens naar de batch_create_swfs_word_picture_w_audio.bat het dossier. Blader omlaag naar het gedeelte onder de REM 1 titel, en u vindt het begin van het gebied waar u de DOS-versie van het aangepaste AS3-klassenbestand kunt toevoegen dat u in stap 11 hebt gemaakt..

Een ding om op te merken is dat ik de veranderlijk !myvar! voor de mapnaam, zodat ik dit .bat-bestand in elke map in een hoofddirectory op mijn computer kan plaatsen en de paden naar de bestanden nog steeds correct zijn zolang ik de /afbeeldingen en /geluid submappen. Bestudeer mijn code voordat je de code erin legt, zodat je de juiste vervangingen kunt maken.

De secties met de titel REM 1, REM 2, REM 3, en REM 4 allemaal moet u aanpassen op basis van uw eigen mappaden.


Stap 14: Optioneel Customize iconv UTF-8 Converter Path

Open de utf_convert.bat.txt bestand en hernoem het naar utf_convert.bat. Vind de REM 1 en REM 2 secties en vul de juiste paden voor uw bestanden in.


Stap 15: Organiseer uw bestanden voor een proefrun

Tijd om te compileren! Zoek de hoofddirectory die u voor al uw paden hebt gebruikt en maak een nieuwe map met de naam oefenrondje. Open de downloadmap voor deze zelfstudie en kopieer de submappen van source / trialrun en plak ze in de oefenrondje map die u zojuist in uw hoofddirectory hebt gemaakt.


Stap 16: Bestanden kopiëren en plakken

Kopiëren batch_create_swfs_word_picture_w_audio.bat en optioneel de utf_convert.bat bestanden naar de oefenrondje map die u zojuist hebt gemaakt.


Stap 17: Klik op het hoofdbestand .bat

Tijd om batch-SWF-creatie eens te proberen! Klik op batch_create_swfs_word_picture_w_audio.bat Hiermee worden de AS3-klassenbestanden gemaakt die worden gebruikt om afzonderlijke SWF's te genereren.


Stap 18: Klik op de UTF-8 Create .bat-bestanden

U krijgt instructies in de opdrachtregelconsole om op te klikken utf_convert.bat en de utf_click_to_convert.bat bestanden, in die volgorde. Hiermee converteert u al uw AS3-klassebestanden naar UTF-8-compatibele bestanden voordat u de Flex AS3-compiler uitvoert.


Stap 19: Ga door met het maken van batches door op een willekeurige toets te klikken

Nadat de UTF-8-conversie is voltooid, wacht de opdrachtregelconsole totdat u op een willekeurige toets klikt voordat u verdergaat. Zodra u dat doet, begint het eigenlijke SWF-compileren. Voor de proefbewerking worden drie SWF-bestanden gemaakt in de trialrun / word_scripts_sp_au_utf8 directory.


Stap 20: Controleer uw SWF's

Open de trialrun / word_scripts_sp_au_utf8 map en kijk of uw SWF-bestanden aanwezig zijn. Naast de .as-klassebestanden zou je het volgende moeten zien: lago.swf, nieve.swf, en hielo.swf.
Wanneer u uw eigen woordenlijsten voor het maken van batch-SWF's uitvoert, heeft u mogelijk lange bestandsnamen die in batch moeten worden hernoemd. Omdat je geen streepjes in je AS3-klassen kunt krijgen, gebruik ik nummers om ze te vervangen wanneer dat nodig is, en dan voer ik een klein hulpprogramma .bat uit. bijkeuken / rename_long_swfs.bat.txt van uw downloadmap. Hernoem de extensie van dit bestand naar .bat, kopieer het naar de word_scripts_sp_au_utf8 map waar uw voltooide SWF's zich bevinden om dit te hernoemen op een groep SWF's.


Conclusie

Ik hoop dat deze tutorial een aantal van jullie zal helpen om te genieten van de wonderen en ware programmering die kunnen worden geboden door het maken van SWF-batches via DOS. Het is een geweldig gevoel om honderden perfecte multimedia-SWF's te zien die met slechts een paar klikken zijn gemaakt! Hartelijk dank voor het lezen van deze tutorial en ik kijk uit naar eventuele opmerkingen of vragen die u heeft.

Notitie: Het is vermeldenswaard dat ANT vaak wordt beschouwd als een waardig alternatief voor het maken van batchbestanden, met name voor Mac-gebruikers. Bekijk de inleiding van Jesse Freeman voor AntPile voor meer informatie.