hurtig tip: forståelse getdefinitionbyname()

, hurtigt tip: forståelse getdefinitionbyname(),,,,, andel,,,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne hurtige tips, vil du lære at opføre en henvisning til en klasse af en snor, og skabe et tilfælde af denne klasse ved hjælp af en indbygget as3 funktion, getdefinitionbyname(),.du skal også tage ved lære af de bedste metoder for anvendelse af dette i forskellige situationer.,,, hvorfor er getdefinitionbyname() nyttige?,, getdefinitionbyname(), er meget nyttigt, hvis du har brug for at få nye tilfælde af klasser, ved hjælp af en streng,.for eksempel, hvis du havde syv forskellige fliser - hver repræsenteret af en klasse, som hedder, tile1,, tile2, osv. - og du har brug for at skabe et tilfælde af hver, ville du have til at skrive følgende kode:, privat funktion createtiles(): ugyldig (var - tile1: tile1 = nye tile1(), var tile2: tile2 = nye tile2(), var tile3: tile3 = nye tile3(), var tile4: tile4 = nye tile4(), var tile5: tile5 = nye tile5(), var tile6: tile6 = nye tile6(), var tile7: tile7 = nye tile7(); stadie. addchild (tile1) fase. addchild (tile2) fase. addchild (tile3); //du fik ideen, den er meget omfattende.), getdefinitionbyname(), giver dig mulighed for at løse dette problem.,, hvordan man bruger det nu, denne kodeks var lidt rodet, og vi måtte type mange linjer, bare for at få et par forskellige fliser.dette er, hvordan vi kan nå det samme mål ved hjælp getdefinitionbyname():, privat funktion createtiles(): ugyldig (for (var - jeg: int = 1; jeg < 8; jeg + +) (var - tileref: klasse = getdefinitionbyname ("balance" + i) som klasse, var fliser: sprite = nye tileref(); stadie. addchild (balance);}} på linje 6, getdefinitionbyname(), returnerer et referencenummer for den klasse, som hedder ", fliser, +, den aktuelle værdi af, i, for loop".så når jeg er lig med 1, getdefinitionbyname ("balance" + i), returnerer en henvisning til den klasse, tile1,.vi må skabe de fliser og lægger det på scenen. - vi kan ikke skrive, var fliser: tileref, fordi tileref, ikke henviser til noget, indsamle,, hvis du gør, får du en anden fejl.), men når du løber denne kode, så vil det ikke virke.du får en variabel er defineret, fejlmelding, i de fleste tilfælde, fordi "tile1" er måske ikke nok oplysninger til flash - at finde klasse.lad os se på nogle workarounds., og få det til at virke, er der en række almindeligt anvendte metoder til at løse problemet med variabel er defineret, fejl, får du, når du løber denne kode, og jeg vil lære dig, hvad det er.jeg vil også gerne rose gert jan van der godt af floorplanner tech blog for denne postede. her er nogle af de metoder, de kan bruge:,, så brug en »dummy« variabel, bruge kort notat af klasse navn, omfatter den fulde sti i snor, omfatter klasse er swc i dit projekt. ved hjælp af en »dummy« variabel i denne metode, du skal bare skabe en dummy - variabler med henvisninger til de klasser, du ønsker at henvise til, getdefinitionbyname(), senere: private var dummytile1: tile1; private var dummytile2: tile2; //etc - privat funktion createtiles(): ugyldig (//skabe fliser}, det virker, men det er meget grim.hvis du har fliserne klasser i en pakke, ville du også nødt til at importere dem!kort notat, det er ligesom »dummy« variabel metode, men du behøver ikke at oprette en »dummy« variabel for hver klasse, du bare smide nogle udtrykkelige henvisninger til de klasser, selv:, tile1; tile2; tile3; tile4; tile5; tile6; tile7; //etc - privat funktion createtiles(): ugyldig (//skabe fliser}, nu kan det se ud, men det faktum, at du bliver nødt til at ajourføre denne liste, hver gang du får en ny, fliser, forbliver., herunder fuld vej navn, en metode, som er den bedste (hvis de har klasser i en anden pakke) skal omfatte hele vej navn i din serie: //- lad os sige min fliser er alle i - pakken « - projektet. fliser privat funktion createtiles(): ugyldig (for (var - jeg: int = 1; jeg < 8; jeg + +) (var - tileref: klasse = getdefinitionbyname ("projekt. fliser. fliser" + i) som klasse, var fliser: tileref = nye tileref(); stadie. addchild (balance);}}, meget tidiig!men det virker kun, hvis de klasser i en særskilt pakke fra klassen. ved hjælp af en swc, hvis fliserne er holdt i en swc, du kan gøre det meget lettere, uden at behøve at anvende enhver import eller dummy - variabler.jeg vil gerne rose v0id drømmer i flash dette postede det forklarede mig, hvordan man bruger denne metode:,, i projektet egenskaber vælge "actionscript de" til "yderligere de argumenter," område, tilføje følgende: omfatte biblioteker path_to_swc,,, path_to_swc må have absolut vej og ikke den relative vej!,,, alle disse metoder er nu blevet forklaret.der er desværre ikke fantastisk, magisk metoder til anvendelse, hvis du har alle de fliser i samme pakke, som alle de andre som filer.jeg anbefaler, at du laver en ny pakke kaldet, fliser, eller noget, hvis du vil bruge den gode metoder.,, konklusion, men i dag skal du har lært at bruge, getdefinitionbyname(), og de bedste metoder til at bruge det.jeg håber, at dette vil hjælpe dig i fremtidige projekter, hvis du har spørgsmål, lad dem i bemærkningerne nedenfor.,



Previous:
Next Page: