Wanneer u met Flash en Actionscript 3.0 werkt, merkt u vaak dat u code van het ene project naar het andere herhaalt. Het maken van een eigen bibliotheek met herbruikbare codefragmenten (bijvoorbeeld op snipplr.com) is een geweldige manier om de ontwikkeling te versnellen. Bekijk deze 15 fragmenten die u mogelijk handig vindt om te integreren in uw eigen codebibliotheek.
Sommige van de volgende fragmenten worden hier gepresenteerd als functies die eenvoudig kunnen worden gebruikt zoals ze zijn. Hoewel je deze naar behoefte in je eigen code kunt laten vallen, raad ik je ten zeerste aan de tijd te nemen om echt naar de code te kijken om meer inzicht te krijgen in wat er gebeurt. Kijken naar codefragmenten is een geweldige manier om nieuwe technieken te leren en je programmeervaardigheden in het algemeen te verbeteren.
Snipplr is een van de meest recente overnames van Envato. Een repository met codefragmenten, een sociale hub en een handige toevoeging aan de Envato toolbelt! Met Snipplr kunt u al uw vaak gebruikte codefragmenten op één plaats bewaren, toegankelijk vanaf elke computer. Je kunt je code delen met andere bezoekers en gebruik maken van wat ze plaatsen.
Je kunt @snipplr volgen op Twitter en op de hoogte blijven via de nieuwe Facebook-pagina van Snippl. Als u een van uw eigen AS3-fragmenten heeft die u wilt delen, voegt u ze toe aan Snipplr en laat u de URL achter in de opmerkingen!
Marktplaatsgebruiker? Waarom niet linken naar uw Snipplr-account vanuit uw sociale profiel op Marketplace?Om een array willekeurig te maken, doorlopen we de lengte van de array, verwijderen we een willekeurig geselecteerd object en voegen het vervolgens weer toe aan de eindpositie van de array. Beschouw dit als het hebben van een spel kaarten waarbij je willekeurig een kaart uit het kaartspel pakt en deze naar de top van de stapel verplaatst voor het totale aantal kaarten in het kaartspel.
Het is belangrijk op te merken dat de splice-methode een array met het verwijderde object retourneert en niet het object zelf, vandaar de toevoeging van de [0]
na de splitsoproep om naar het ingesloten object te verwijzen.
Dit is een korte manier om weergaveobjecten in een rasterlay-out te positioneren. Het maakt gebruik van de modulo-operator (%
) om elk weergaveobject langs de x-as en de te positioneren verdieping
methode van de Math-klasse voor de y-positie.
In dit voorbeeld worden 20 exemplaren van een aangepast weergaveobject gemaakt met de naam myDisplayObject
positionering van elk exemplaar in een raster van 5 kolommen breed. Zoals je misschien al geraden hebt, vertegenwoordigen de twee 5-en in het fragment het aantal kolommen in het raster.
DisplayObjectContainer
, een bovenliggende klasse van de meer gebruikelijke containerklassen zoals MovieClip en Sprite, heeft geen ingebouwde methode om alle kinderen onmiddellijk te verwijderen. Om alle kinderen te verwijderen, gebruiken we gewoon een while-lus om het kind te verwijderen dat index 0 in de stapel inneemt totdat er geen kinderen meer overblijven.
Om de volledige URL te krijgen zoals deze wordt weergegeven in de adresbalk van uw webbrowser gebruiken we AS3's ExternalInterface
klasse. Zonder in te gaan op te veel details, weet dat we in dit voorbeeld ExternalInterface gebruiken om toegang te krijgen tot het DOM (Document Object Model) van de HTML-pagina die onze Flash bevat.
Een nadeel van ExternalInterface is dat de SWF moet worden ingesloten in de HTML-pagina met de parameter "allowcriptaccess" ingesteld op "sameDomain" of "always". Dit is OK als u de insluiting van een SWF beheert, maar er kan helaas niet op worden vertrouwd als de SWF mogelijk wordt uitgevoerd op websites van derden. Vergeet niet om toe te voegen import flash.external.ExternalInterface
aan de bovenkant van uw document.
Als alternatief voor toegang tot de URL waar de SWF zich bevindt, hebben we toegang tot de URL-eigenschap van de LoaderInfo
object behorend tot de hoofdmap van onze SWF. Houd er rekening mee dat dit de locatie van het SWF-bestand is en NIET de HTML-pagina waarin het is ingesloten. Het is belangrijk om dit onderscheid te maken omdat zowel de SWF als de HTML zich op verschillende domeinen kunnen bevinden..
Weten waar een SWF-bestand wordt uitgevoerd, is handig voor het tonen van domeinspecifieke inhoud. In de context van een Flash-game kan dit 'bonus'-niveaus hebben die alleen beschikbaar zijn wanneer de SWF wordt uitgevoerd op de site van de ontwikkelaar of dat advertenties worden weergegeven of niet.
Dit is een recursieve functie die een DisplayObjectContainer
(zoals een Sprite of MovieClip) en rondt de x- en y-waarden van het en de onderliggende elementen af. Het is recursief zoals de functie zichzelf noemt wanneer het een kind tegenkomt dat ook een is DisplayObjectContainer
dus de kinderen worden ook afgerond. Hiermee wordt de gehele weergavelijst onder de doorgegeven waarden herhaald DisplayObjectContainer
, haar kinderen, kinderen van kinderen, enz.
Het doel van deze functie is ervoor te zorgen dat de doorgegeven DisplayObjectContainer
en al zijn kinderen zitten op hele pixels. Dit kan belangrijk zijn bij het werken met afbeeldingen die niet op hele pixels zitten, omdat ze er wazig uitzien. Dit is waarschijnlijk het meest merkbaar bij het werken met pixelet Fonts.
U zult de eerste als statement opmerken controleren om te zien of de doorgegeven DisplayObjectContainer
is NIET de fase. Dit is nodig als Stage erft van DisplayObjectContainer
maar implementeert niet de x- en y-eigenschappen (samen met verschillende andere eigenschappen). Hiermee kunt u het podium veilig passeren als een parameter van deze functie die de positie van alle objecten in de weergavelijst omkeert.
Het genereren van een willekeurig nummer is vaak handig bij het ontwikkelen van applicaties in AS3 (meer nog bij het ontwikkelen van games). AS3 heeft een ingebouwde methode voor willekeurige getallen als onderdeel van de Math-klasse, die een getal kleiner dan 1 en groter dan of gelijk aan 0 genereert. We kunnen dit gebruiken om een handige functie te maken voor het genereren van een willekeurig getal tussen twee andere getallen.
Codefragment - willekeurig getal tussen twee waarden op SnipplrNet als bij het hebben van een willekeurig getal, kan het ook zijn dat je een willekeurige Booleaanse waarde nodig hebt voor gebruik in een uitdrukking. Nogmaals gebruiken we de willekeurig
methode van de Math-klasse om eenvoudig true als te retourneren willekeurig()
genereert een getal groter dan of gelijk aan 0,5 of onwaar als minder.
Dit is een ander veelgebruikt fragment dat door gameontwikkelaars wordt gebruikt om de hoek tussen twee punten in een vlak te vinden. Deze functie heeft vier parameters; het eerste paar is de x- en y-waarden van uw eerste punt en het tweede paar de x- en y-waarden van uw tweede punt.
Het is belangrijk om op te merken dat deze functie de hoek retourneert in radialen zonder graden.
Codefragment - Zoek de hoek tussen twee punten op SnipplrBij vergelijkingen met hoeken zul je vaak te maken hebben met radialen en niet met graden. Geef objecten in Flash-gebruik graden weer als ze te maken hebben met hun rotatie-eigenschap, dus we hebben een manier nodig om tussen de twee te converteren. Deze hulpfunctie is handig om precies dat te bereiken; een voor het converteren van radialen naar graden en de andere graden naar radialen.
Codefragment - Converteren tussen radialen en graden op SnipplrWanneer u invoer van een gebruiker via een formulier accepteert, is het vaak nodig om gegevens te valideren voordat deze naar een back-end-script kunnen worden verzonden. Dit geldt vooral voor e-mailadressen, omdat ze vaak het enige contactpunt zijn tussen uzelf en de gebruiker en belangrijk zijn om goed te worden. De onderstaande functie maakt gebruik van een reguliere expressie om te bevestigen dat de e-mail een geldig formaat heeft.
Codefragment - e-mailvalidatie op SnipplrAls u niet zeker weet wat een reguliere expressie is, moet u dit artikel op wikipedia lezen, evenals de AS3-documentatie voor het RegExp-type. Zorg ervoor dat u ook checkt in het valideren van verschillende invoergegevens in Flash.
Op dezelfde manier moet u vaak gegevens formatteren die vanuit Flash worden verzonden, soms moet u gegevens die worden ontvangen, opmaken. Deze functie neemt een string en verwijdert alle spaties ervan. Hier gebruiken we de splitmethode van de klasse String om de tekenreeks in een array te splitsen en vervolgens de join-methode van de klasse Array aan te roepen om deze terug te converteren naar een tekenreeks. Dit is handig bij het omgaan met een string waarvan je weet dat deze geen spaties kan bevatten zoals een e-mailadres, URL of telefoonnummer. Dit retourneert een nieuwe tekenreeks, waardoor de invoerreeks ongewijzigd blijft.
Codefragment - Ruimteverwijdering op SnipplrAls u zich afvraagt waarom we hier geen reguliere expressie gebruiken, is dit eenvoudig omdat deze methode sneller wordt uitgevoerd.
Wikipedia beschrijft een naaktslak als
deel van een URL die een pagina identificeert met behulp van door mensen leesbare zoekwoorden
Een naaktslak is meestal een paar woorden waarbij elk woord wordt gescheiden door een begrenzend teken, meestal een onderstrepingsteken of koppelteken. Een verstikte versie van de string "10 Tips to a Better Life!" zou zijn "10-tips-naar-een-beter-leven".
Deze functie neemt een willekeurige reeks en converteert in voor gebruik als een slak. We gebruiken twee reguliere expressies om dit te bereiken, de eerste wordt gebruikt om een willekeurig teken te verwijderen dat geen woordteken, spatie of koppelteken is, de tweede vervangt alle spaties door een enkel koppelteken. Uiteindelijk zetten we de string om in kleine letters. Dit retourneert een nieuwe tekenreeks, waardoor de invoerreeks ongewijzigd blijft.
Codefragment - Slugify op SnipplrAls u zich afvraagt waar dit in de context van Flash kan worden gebruikt, is het bijzonder nuttig met SWFAddress voor het maken van SEO-vriendelijke URL's voor de discrete secties van uw app.
http: //
of https: //
Van een string, optioneel verwijderen www.
Deze functie neemt een tekenreeks en retourneert een kopie met alle exemplaren van http: //
en https: //
verwijderd. De tekenreeks: "Ga naar http://example.com voor meer informatie" zou kunnen worden omgezet naar "Ga naar example.com voor meer informatie". Over het algemeen is dit compacter omdat http: // overbodig is wanneer u duidelijk naar een URL verwijst.
Optioneel kan deze functie ook het www
subdomein door true als de tweede parameter door te geven. Het is standaard ingesteld op false, omdat example.com en www.example.com in theorie verschillende websites kunnen bevatten.
Als er ooit een tijd is dat u tekst laadt van een externe bron die ongewenste HTML-markeringen bevat, gebruikt u de volgende functie. Dit gebruikt een reguliere expressie om alle HTML-tags van de invoerreeks te verwijderen. De snaar "Klik hier voor meer informatie"zou eenvoudigweg worden omgezet in" Klik hier voor meer informatie. "Hiermee wordt een nieuwe tekenreeks geretourneerd, waardoor de invoerreeks ongewijzigd blijft.
Codefragment - Strip HTML Markup op SnipplrHet laden van XML, met name van externe bronnen kan soms problematisch zijn wanneer de XML gebruikmaakt van naamruimten. Dit fragment neemt een XML-object en verwijdert alle naamruimtedeclaraties en voorvoegsels. Dit fragment laat de invoer-XML ongewijzigd en retourneert een nieuw XML-object.
Codefragment - Strip XML Namespaces op SnipplrHet is de moeite waard te vermelden dat namespaces om een reden bestaan en het verwijderen ervan kan problemen veroorzaken. Dit is meestal alleen een probleem bij het combineren van meerdere XML-bestanden samen uit verschillende bronnen. Ik heb dit persoonlijk nog nooit meegemaakt, maar het is de moeite waard om op te passen.
Ik hoop dat je deze 15 fragmenten nuttig hebt gevonden. Het schrijven van functionele, herbruikbare code kan een goede gewoonte zijn om erin te komen. Persoonlijk geloof ik dat het bekijken van de codefragmenten van andere mensen een geweldige manier is om tips en trucs te leren die je misschien nog niet eerder hebt bedacht.
Voor meer fragmenten ga je naar de Actionscript-sectie op Snipplr en als je een van je eigen AS3-fragmenten hebt die je wilt delen, voeg je ze toe aan Snipplr en laat je de URL achter in de reacties!
Als je dit bericht leuk vond, kijk dan op mijn site op ahrooga.com voor meer Flash gerelateerde artikelen.