ActionScript: Het creëren van herbruikbare code


  Share  
|


U wilt een reeks acties op verschillende tijdstippen uit te voeren zonder onnodig te dupliceren code in uw hele film.

Maak een functie en vervolgens bellen (dwz beroepen) op naam wanneer je nodig hebt om deze acties uit te voeren.

Er is meer dan een manier om te maken (dwz definiëren of te verklaren) een functie. Hier is hoe een benoemde functie te maken:

function functienaam () (/ / Verklaringen go here.) te bellen (dat wil zeggen, uit te voeren) de genoemde functie wordt verwezen naar het door naam, zoals:
functienaam ();

Hier is hoe een functie letterlijke maken:

functienaam = function () (/ / Verklaringen go here.);

Hoewel niet strikt vereist is, wordt het beschouwd als een best practice om een puntkomma ook na de uiterste accolade bij het definiëren van een functie letterlijk.

Groepering verklaringen in een functie kunt u de functie een keer te definiëren, maar het voeren zo vaak als je wilt. Dit is handig wanneer u nodig hebt om soortgelijke acties op verschillende tijdstippen uit te voeren zonder overlapping dezelfde code op meerdere plaatsen. Houd uw code gecentraliseerd in functies maakt het makkelijker te begrijpen (omdat je de functie kan schrijven een keer en dan negeer de details bij gebruik) en makkelijker te onderhouden (omdat u wijzigingen kunt aanbrengen op een plaats in plaats van in meerdere plaatsen).

Er zijn twee veel voorkomende manieren van het definiëren ActionScript functies: als de naam of functie functies letterlijke (alias anonieme functies). Elk van deze manieren van verklaren van een functie heeft zijn eigen gebruik.

De genoemde functie verklaring is de meest voorkomende keuze (niet bij het definiëren van een functie die moet worden gebruikt als een methode) en heeft ten minste een voordeel ten opzichte van letterlijke functie: genoemd functies zijn toegankelijk binnen de gehele keyframe (of op () of onClipEvent ()-handler ), zelfs als ze komen na de oproep aan de functie.

Bijvoorbeeld, hoewel de writeMessage () functie niet wordt verklaard, nadat het is ingeroepen, is de functie nog beschikbaar:

/ / Roep de writeMessage () functie, die later in het script. WriteMessage verklaard ();
/ / Verklaren (omschrijven) de writeMessage () functie als een benoemde functie. WriteMessage function () (trace ( "Hallo, vriend.");)
/ / De functie is beschikbaar voor of nadat deze is verklaard. WriteMessage ();

In tegenstelling, een letterlijke functie is alleen toegankelijk vanaf regels code die komen na de verklaring:

/ / De ActionScript tolk niet in staat zal zijn om een functie te vinden met deze naam, / / en dus gebeurt er niets (het niet stil). WriteMessage2 ();
/ / Verklaren (omschrijven) de writeMessage2 () functie als een anonieme functie letterlijke writeMessage2 = function () (trace ( "Hallo, vriend."););
/ / Is echter de functie beschikbaar van regels code nadat het is verklaard. WriteMessage2 ();

Echter, er zijn verschillende redenen om te functioneren letterlijke gebruiken:

U kunt een functie letterlijk een globale variabele, zodat de functie kan worden toegankelijk vanaf elke tijdlijn.

Functie letterlijke bieden een handige, compacte en intuïtieve manier om methoden om objecten te definiëren.

Functie literals kan worden behandeld als andere variabelen, in dat ze kunnen worden doorgegeven aan andere functies of hebben hun waarden toegewezen.

Hier geven we een functie letterlijk als een eigenschap van de _global object:

_global.launchBookExamples = function () (getURL ( "http://www.person13.com/ascb", "_blank");) \

Daarom, vanaf elke locatie op een tijdlijn, kunt u de functie uitvoeren door simpelweg gebruik van haar naam. Bijvoorbeeld, u hecht dit script op een knop:

myButton.onRelease = function () (launchBookExamples (););

Hier hebben we de functie omschrijven als een methode van een filmclip (waar onEnterFrame () is een speciale, ingebouwde methode voor filmclips die je nodig hebt om te bepalen voordat het kan worden gebruikt):

myClip_mc.onEnterFrame = function () (trace ( "Hooray voor methoden!");)

Natuurlijk kunt u definiëren aangepaste methoden en door simpelweg het toewijzen van de functie letterlijk om een nieuwe eigenschap van het object:

myClip_mc.myCustomMethod = function () (trace ( "Hooray voor methoden!");)

Het is ook vermeldenswaard dat u een methode die gelijk is aan een andere methode kunt instellen. Deze techniek wordt vaak gebruikt om dezelfde handelingen toewijzen aan een filmclip of knop voor twee verschillende evenementen. U kunt een anonieme functie en toewijzen aan een van de methoden event handler, en dan gewoon een event handler methode toe te wijzen aan de andere. Een bekend voorbeeld hiervan is wanneer u wilt dezelfde acties voor wanneer een gebruiker op een knop of releases filmclip en wanneer ze vrij buiten te definiëren:

/ / Definieer een onRelease ()-methode voor een filmclip. MyMovieClip.onRelease = function () (( "Hooray trace voor methoden!");)
/ / Assign dezelfde methode definitie aan de onReleaseOutside () methode ook. MyMovieClip.onReleaseOutside = myMovieClip.onRelease;

Functies kunnen ook worden doorgegeven als gegevens. U kunt gemakkelijk passeren een functie letterlijk naar een andere functie die een functie vereist als een van haar argumenten, zoals setInterval () of de Array.sort () methode:

/ / Stel een interval dat een functie gesprekken die stappen van een variabele, i, en geeft / / de waarde. SetInterval (function () (trace (+ + i);), 1000);

Functies zijn onderworpen aan dezelfde beperkingen als strekking variabelen. Tijdlijn functies zijn alleen toegankelijk tijdens de tijdlijn waarop ze zijn gedefinieerd bestaat. Een tijdlijn-functie kan worden benoemd een functie of een anonieme functie toegewezen aan een tijdlijn variabele. Daarnaast kunnen tijdlijn functies worden genoemd slechts met behulp van de juiste doelgroep pad. Wanneer u de functie toegang van dezelfde tijdlijn, hoeft u niet om het doel weg, maar als je de functie wilt toegang van een andere tijdlijn, moet u ervoor zorgen u het juiste pad.

/ / Uitdrukkelijk beroepen op een functie die is gedefinieerd op de belangrijkste tijdlijn. _root.myFunction ();

Als uw functie wordt gebruikt in dezelfde tijdlijn alleen, hoeft u geen zorgen te maken over omvang kwesties. Maar als u van plan de functie gebruik in de hele vele tijdlijnen, zijn twee oplossingen meestal gebruikt:

Definieer de functie als een globale functie. Als u een functie een globale functie te maken, kunt u bellen op naam van een tijdlijn in de film, zonder zich zorgen te maken over de omvang:

_global.myFunction = function () (trace ( "Global functies zijn leuk!");)

Definieer de functie als een (statisch) methode van een globale klasse. Alle bouwde de-in de klassen zijn wereldwijde standaard, en als je een klasse definiëren met een algemene aannemer, dan zelfs uw aangepaste klassen kunnen worden mondiaal. Deze techniek is eigenlijk een variatie op de eerste, maar met het voordeel dat klassen bieden u een manier van het organiseren van uw functies in een potentieel zinvolle manier (bijvoorbeeld de ingebouwde Math klasse organiseert een groot aantal wiskundige functies).

een artikel afkomstig van Gabriel Savimbi


Share  

© 2005-2010 E-articles.info All Rights Reserved - Terms and conditions