De flash - 3: voor box2d bitmap en de doos

, flash en 3. En de doos box2d:,,,,,,,,,, delen, 5 delen,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, op het eerste deel worden van het zeer fundamentele box2d door toevoeging van een aantal eenvoudige rond object en de grafische weergave, om ze te gebruiken.In dit deel, moeten we niet alleen het beeld van de werkelijkheid om te laten zien dat we het doel, we leren om gebruik te maken van een geheel andere vorm.Stel ik voor dat je naar deze reeks van in het begin, maar als je wilt beginnen, dan grijp deze dossiers, die we in het eerste deel van de source code.(de knop bovenop. Download, met inbegrip van aan het einde van dit deel, de source code.), stap 1: de Papoea - Nieuw - Guinea in uw project, we beginnen in plaats van de gewone wereld, hebben we iets gebruiken.Klik op de Papoea - Nieuw - Guinea bestanden downloaden op je harde schijf:,, (de tijd krijgt om foto 's van hun ontwerp, veel maar nu, hou dit een), voeg het toe aan de projecten in de flash - dossier, en dat betekent dat het in uw bibliotheek en het geven van een de Naam van een soort (selectie, simplewheelbitmapdata,).In de FlashDevelop, dit betekent dat het in je MAP, bibliotheek, en ingebed in het je, majoor, gebruik de code zoals deze, die (Bron: [= "/Lib /simplewheel. Papoea - Nieuw - Guinea")] van de variabele simplewheel:;, doen wat je met betrekking tot de workflow.Ik hou van projecten in FlashDevelop creëren, zuiverheid herinneren, dus ik zal schrijven, in dit verband. Stap 2: het creëren van een scala aan het redden van elk wiel van de wielen in de wereld het beeld dat wij box2d te creëren, moeten we tot een voorbeeld, simplewheel, op de lijst.Toegang tot al deze wielen, we kunnen gebruik maken van een scala aan het creëren van een, en verzoekt haar wheelimages [], de variabele wheelimages:,: -; om ervoor te zorgen dat je het bij de Top van start, getstarted (), en getstarted, privé - functies ():void {var de zwaartekracht: b2vec2 = nieuwe b2vec2 (0, 10); de nieuwe b2world = (zwaartekracht, waar); wheelarray = nieuwe installatie (); wheelimages = nieuwe installatie ();,, salaristrap 3: - schijf beeld, zullen de meest verstandige wielen beeld van waar is, createwheel (), omdat we er alle reden toe te voegen, moeten we deze lijn. Aan het einde van de functie, wheelarray. - (wheelbody); var wheelimage: bitmap = nieuwe simplewheel (); wheelimage.width = straal * 2; wheelimage.height = straal * 2; wheelimage X =.Luister, wheelimage. Y = het aanvankelijke standpunt; dit. Addchild (wheelimage); wheelimages. - (wheelimage);}, wees voorzichtig... Je moet de invoer van flash.display.bitmap, en omdat we in Papoea - Nieuw - Guinea, is een kaart, als je flash -, dan heb je geen, simplewheel dus, in plaats van nieuwe typen, simplewheel ():,, zo moet je het doen, wheelarray. - (wheelbody); var wheelimage = nieuwe bitmap: bitmap (nieuwe simplewheelbitmapdata ()); wheelimage.width = straal * 2; wheelimage.height = straal * 2; wheelimage. X = startx; wheelimage. Y = het aanvankelijke standpunt; Aan deze. (wheelimage); wheelimages. - (wheelimage);}, ik moet blijven gebruiken, de nieuwe simplewheel (), in deze handleiding, omwille van de eenvoud.Onthoud dat je moet veranderen, als je met een zaklamp pro.), kan je proberen het al!De wielen bewegen niet, maar ze moeten op het scherm (na, ze in de lijst).Dit is mijn (klikken):, oh.Nou.Waar zijn ze?Stap 3:,, het concept van de symbolen, het probleem is hier dat de schaalfactor, nooit meer.Onthoud: box2d moet meetinstrumenten en flash als de pixels.De straal van de parameters, en is de meter, en het aanvankelijke standpunt, luister,,, is de toepassing van de parameters pixel; wij hebben niet de omvang, het zal u zijn opgevallen dat we niet zien dat we de gewenste resultaten.(in dit geval, het beeld is zo groot, zo groot, je kan het zien in de linker - en dit is een volledig transparante pixel), kunnen we besluiten dat een of andere systemen voor de meting van de aangewezen, bijvoorbeeld, alle instrumenten van nu af aan, dus we weten dat we altijd te vermenigvuldigen met De factor een flash, pixel nodig...Maar, ik zal eerlijk zijn, ik vind het een pijnlijk is.Integendeel, ik stel voor het gebruik van een vorm van Hongarije nomenclatuur (best) om te voorkomen dat we in de war, dit is een simpel idee: we geven ons alle variabelen, met de naam is m. M gemeten, en we alle variabelen, in het begin van de naam van de pixels, px je kan kiezen voor een andere maatregel, voor als je het gebruik van m - code, betekent dat je iets anders.Controleer de: private functie, createwheel (mradius: cijfers pxstartx: aantal, pxstarty: cijfers mvelocityx: aantal, mvelocityy: aantal): ongeldig {VAR wheelbodydef:b2bodydef = nieuwe b2bodydef (); wheelbodydef.type = b2body.b2_dynamicbody; wheelbodydef. Positie. (pxstartx /factor, pxstarty /factor); wheelbody:b2body = var. De rest van de wereld. Createbody (wheelbodydef); var ronde: b2circleshape = nieuwe b2circleshape (mradius); var wheelfixturedef:b2fixturedef = nieuwe b2fixturedef (); wheelfixturedef.shape = ronde; wheelfixturedef.restitution = (wiskunde. () × 0,5) + 0,5; wheelfixturedef.friction = (wiskunde. () * 1); wheelfixturedef.density = wiskunde. () × 20; var wheelfixture:b2fixture = wheelbody createfixture (wheelfi.Xturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); wheelbody. Setlinearvelocity (startingvelocity); wheelarray. - (wheelbody); var wheelimage: bitmap = nieuwe simplewheel (); wheelimage.width = mradius * 2; wheelimage.height = mradius * 2; wheelimage. X = pxstartx; wheelimage. Y = pxstarty; dit. Addchild (wheelimage); wheelimages. - (wheelimage);}, zie je?Nu kunnen we zien, wheelimage.width = mradius * 2, onjuist is, omdat, wheelimage.width, flash, wat betekent dat de goederen, displayobject. Verwacht wordt dat de pixels, maar mradius is duidelijk in de meter.Om dit probleem op te lossen, moeten we de toepassing van de schaalfactor - maar moeilijk te bedenken, als niet te kijken, of we moeten of vermenigvuldigen, hè?Het antwoord is, meerdere, maar we kunnen dit makkelijker maken om de omvang van de factor,,, mtopx, ("m").Een "vinden /worden vervangen door" in je code in, zodat je niet missen, dus, nu we dat weten, kunnen we op de meter, mtopx toegevoegde waarde, de pixels van gelijke waarde.Weet je nog, je kan dit doen, maar dat is niet zo moeilijk, maar je moet het makkelijker maken, laten we het creëren van een variabele, pxtom, niet omgekeerd, als je met de meting van een pixel, pxtom, je meter gelijkwaardige maatregel, dat kunnen we doen. Door het creëren van een nieuwe variabelen, het is een waarde, mtopx, omdat, anyvalue * * * * * * * (1 /mtopx) = = = = = = = anyvalue /mtopx,.Dus, de variabele aantal = 20; mtopx: de variabele aantal pxtom: = 1 /mtopx; nu gewoon een "vinden /vervangen" veranderen ", /mtopx," als ", * * * * * * * pxtom," op je code in, overal.UH, maar zorg ervoor dat je ons gewoon zeggen dat het herschrijven van de lijn, de variabele aantal pxtom:, = 1 /mtopx,!Test je SWF 's, om ervoor te zorgen dat het nog steeds, zoals je zou verwachten.Het is geweldig.Dat betekent dat je moet onthouden is, je wordt nooit een schaalfactor punten.Alleen de vermenigvuldiging.Flash is sneller vermenigvuldigen, in ieder geval, oké, kunnen we nu de praktische toepassing van de verdeelsleutel, createwheel (code), zitten we in de problemen: var wheelimage: bitmap = nieuwe simplewheel (); wheelimage.width = mradius * 2 * mtopx; wheelimage.height = mradius * 2 * mtopx; wheelimage. X = pxstartx; wheelimage. Y = pxstarty; dit. Addchild (wheelimage); wheelimages. - (wheelimage);}, probeer:,, Cool.Nu zien we de overbelasting, zelfs als ze het niet doen.Al het werk dat we geen verandering in het teken lijkt overbodig, maar geloof me, als je het niet nu doen, je zou willen dat je er later.,, zodat de wielen van stap 4: mobiele, je zou denken dat de in deel I van deze reeks praktische oefening is, wielen, ontick () verwerkt.Dit is de sleutel van de code lijkt nu, elke (var wheelbody:b2body in wheelarray) (grafiek. De cirkel (wheelbody. Getposition (x). Mtopx, wheelbody. Getposition (). Y * * * * * * * mtopx, (wheelbody. Getfixturelist () (). Getshape als b2circleshape). Getradius (*) mtopx);}, opmerkingen van de cirkel code, en het vervangen door code zal de juiste beeld van de generator, var. Wheelimage: bitmap; elke (var wheelbody:b2body in wheelarray) {/* grafische. De cirkel (wheelbody. Getposition (x). Mtopx, wheelbody. Getposition (). Y * * * * * * * mtopx, (wheelbody. Getfixturelist getshape (). () als b2circleshape). Getradius (* * * * * * * * * * * * * *) mtopx); wheelimages /wheelimage = [wheelarray. (wheelbody)]; wheelimage X = wheelbody.getposition.(x). Mtopx; wheelimage. Y = wheelbody. Getposition (). Y * * * * * * * mtopx;}, (omdat elk beeld toevoegen, wheelimages [], wanneer de equivalente lichaam toeneemt, wheelarray [], en dat weten we. Waar is het lichaam, wheelarray [], de beelden, moet in dezelfde een locatie, wheelimages [...],.), probeer:,, het is goed, maar waarom de helft van alle wielen van de grond?Stap 5:,, voelen zinken, we weten het, de cirkel van de code voor goed werk, dus we hebben geen opmerkingen of het voor ons geen aanwijzing, var wheelimage: bitmap; elke (var wheelbody:b2body in wheelarray) (grafiek. De cirkel (wheelbody. Getposition (). * * mtopx, getposition wheelbody. (de). Y * * * * * * * mtopx, (wheelbody. Getfixturelist () (). Getshape als b2circleshape). Getradius (*) mtopx); wheelimage = wheelimages [wheelarray. (wheelbody)]; wheelimage. X = wheelbody. Getposition (x). Mtopx; wheelimage. Y = wheelbody. Getposition (y). * * * * * * * mtopx;}, helpt dat?Dat is.Blijkbaar, Papoea - Nieuw - Guinea beelden en de werkelijke positie van de migratie, want dit is box2d de coördinaten van het centrum van de vorm gegeven.Als we de tekening, grafische. Drawcircle (), is er geen probleem, omdat de functie van het Centrum ring getrokken; als we echter is geregeld, X, Y, en een zaklamp displayobject, plaats en aard van de registratie op basis van het,,,,, bij verstek, we simplewheel, de inschrijving in De linkerbovenhoek de iconen, maar de oplossing is simpel: we moeten het beeld, om dit te compenseren.De linkerkant van het beeld is in het centrum van het object, dus we moeten opschieten, links: om het centrum, var wheelimage: bitmap; elke (var wheelbody:b2body in wheelarray) (grafiek. De cirkel (wheelbody. Getposition () mtopx. X, y wheelbody. Getposition (). * * * * * * * mtopx, (wheelbody. Getfixturelist () (). Getshape als b2circleshape). Getradius (*) mtopx); wheelimage = wheelimages [wheelarray. (wheelbody)]; wheelimage. X = (wheelbody. Getposition (x). Mtopx) - (wheelimage.width × 0,5); wheelimage. Y = (wheelbody. Getposition (y * * * * * * *). Mtopx) - (wheelimage.height × 0,5);}, ter compensatie van de helft van de breedte en hoogte van het moet doen.Om het te proberen.Opmerkingen van de grafische weergave van de code weer proberen een hoger percentage factor (ga, mtopx = 40).,, stap 6: de detectie van een klik, en nu hebben we een object in een lijst kunnen gebruik maken van de muis en hun interactie.Een heel eenvoudige manier om te bewijzen dat het een beetje aan het "push" -, wanneer ze worden aangegaan, als we in de fysieke code, laten we ervoor zorgen dat we kunnen opsporen die doos was een klik.De toevoeging van een luisteraar, elk wiel mouseevent.click, beeld, ten slotte, wordt code createwheel ():, wheelimage. AddEventListener (mouseevent.click, onclickwheelimage); de invoer, vergeet niet, Flash. Het evenement.Nu, het creëren van de functies (toevoeging van een follow - up, controle van mijn werk, onclickwheelimage): private functie (gebeurtenissen: de gebeurtenissen): ongeldig {micro - ("ronde was een klik");}, probeer het eens.Werkt het niet?Oh, dat is omdat, bitmap, niet vallen, interactiveobject, (opsporing van de muis gebeurtenissen).Dit is frustrerend.Dit is makkelijk op te lossen, maar we hebben net elke; bitmap, binnen, createwheel (), SPRITE,,,:, var wheelimage: bitmap = nieuwe simplewheel (); wheelimage.width = mradius * 2 * mtopx; wheelimage.height = mradius * 2 * mtopx; ///////wheelimage. X = < - pxstartx; het schrappen van het /wheelimage. Y = pxstarty; < ///////- schrapping van deze. Addchild (wheelimage); < - het schrappen van de VAR - wheelsprite: Sprite = nieuwe Sprite (); wheelsprite. Addchild (wheelimage); wheelsprite. X = pxstartx; wheelsprite. Y = pxstarty; wheelimages. - (wheelsprite); de. Addchild (wheelsprite); wheelsprite. AddEventListener (mouseevent.click, onclickwheelimage);,... En dan in de ontick (), wij kunnen niet stemmen over een wheelimage,,,.,. Kom op, we moeten het gedefinieerd Als een speciale functie, SPRITE,:Tik (a_event:timerevent): ///////nietigverklaring {grafische. Duidelijk ('); grafische. Type (3, 0xFF0000); de rest van de wereld. Stap (0025, 10, 10); ///////var wheelimage: bitmap; < - het schrappen van De var - wheelimage: Sprite, ziet er als volgt uit:,, de code, var cratebodydef:b2bodydef = de nieuwe b2bodydef (); cratebodydef. Positie. (mstartx, mstarty); var cratebody:b2body = van de rest van de wereld. Createbody (cratebodydef); var crateshape:b2polygonshape = nieuwe b2polygonshape (); crateshape. Setasbox (Voor /2, mheight /2); var cratefixturedef:b2fixturedef = nieuwe b2fixturedef (); cratefixturedef.shape = crateshape; var cratefixture:b2fixture = cratebody. Createfixture (cratefixturedef); en (nog setasbox (), de helft van de methoden van de,, breedte en hoogte van de helft, dus zullen weDoor de twee.), laten we een verandering van functie, net als wij, createwheel (): createcrate, private functie (het aantal pxstartx: nummer:,, pxstarty: cijfers mvelocityx: aantal, mvelocityy: aantal): ongeldig {VAR cratebodydef:b2bodydef = nieuwe b2bodydef (); cratebodydef. Positie (* * * * * * * * * * * * * * pxtom. Pxstartx, pxstarty pxtom); ///////cratebody:b2body = de factor op de schaal van var. Createbody (cratebodydef); var crateshape:b2polygonshape = nieuwe b2polygonshape (); crateshape. Setasbox (op /2, gericht op /2); ///////doos = = lengte breedte vierkante dus var cratefixturedef:b2fixturedef = nieuwe b2fixturedef (); cratefixturedef.shape = crateshape; var cratefixture:b2fixture = cratebody. Createfixture (cratefixturedef); b = nieuwe startingvelocity: b2vec2 var.2vec2 (mvelocityx, mvelocityy); cratebody. Setlinearvelocity (startingvelocity);}, pas op voor de code van boven is iets anders.Omdat we de pixel - meting van de positie van de wielen te kiezen, en ik heb met de positie van de meting van de pixels kist ook.Tegelijkertijd, als gevolg van de doos is, ik niet opgenomen, mheight, parameters.Ik heb de ingestelde snelheid, met in wezen dezelfde code als de wielen, ja, ja, we kunnen ze niet zien, tenzij we het gebruik van grafische, telefoon of toevoeging van een aantal voorbeelden, simplecrate, of zoiets, ik weet het.Maar wij kunnen in ieder geval effect, dus nu proberen nog een privé - functie, getstarted ():void {var de zwaartekracht: b2vec2 = nieuwe b2vec2 (0, 10); de nieuwe b2world = (zwaartekracht, waar); wheelarray = nieuwe installatie (); wheelimages = nieuwe installatie () (var i:int = 0;; ik < 20; I + +) (createwheel (wiskunde, wiskunde. () × 0,5). (* * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50, 0); createcrate (wiskunde. (*) 0,5, wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)} createboundaries (); steptimer = nieuwe timer (0025 × 1000); steptimer.addeventlisDe heer Turner (timerevent.timer, ontick); grafische. Type (3, 0xFF0000); steptimer. Start ();}, probeer:,, het werkte, maar er is iets niet goed.Ik denk dat we zullen ze vinden, zichtbaar., 10 stappen: zie de doos, net als voorheen, zullen wij - het behoud van de doos, en aan de andere een installatie voor de opslag van de grafische vak:, de variabele wereld: b2world; de variabelen); wheelarray: van de variabele wheelimages: generator; openbare var cratearray: - de variabele crateimages: generator;; de variabelen: de variabele steptimer timer; mtopx: hoeveelheid = 50; de variabele aantal pxtom: = 1 /mtopx * * * * * * * * * * * * * *); //- functie getstarted ():void {var de zwaartekracht: b2vec2 = nieuwe b2vec2 (0, 10); de nieuwe wereld = b2world (de zwaartekracht. Waar); wheelarray = nieuwe installatie (); wheelimages = nieuwe installatie (); cratearray = nieuwe installatie (); crateimages = nieuwe installatie (); en dan moeten we in deze reeks, private functie createcra(in het licht van het aantal te pxstartx: nummer:,, pxstarty: cijfers mvelocityx: aantal, mvelocityy: aantal): ongeldig {VAR cratebodydef:b2bodydef = nieuwe b2bodydef (); cratebodydef. Positie. (* * * * * * * * * * * * * * pxstartx pxtom, pxstarty pxtom); ///////cratebody:b2body = de factor op de schaal van var. Createbody (cratebodydef var crateshape:b2polygonshape); = nieuwe b2polygonshape (); crateshape. Setasbox (op /2, gericht op /2); ///////doos = = lengte breedte vierkante dus var cratefixturedef:b2fixturedef = nieuwe b2fixturedef (); cratefixturedef.shape = crateshape; var cratefixture:b2fixture = cratebody. Createfixture (cratefixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); setlinearvelocity cratebody. (startingvelocity); cratearray duwen (kratten.Lichaam); var crateimage: bitmap = nieuwe simplecrate (); ///////of "nieuwe bitmap (nieuwe simplecratebitmapdata ());" in crateimage.width = voor de * * * * * * * mtopx flash -; crateimage.height = voor de * * * * * * * mtopx; var cratesprite: Sprite = nieuwe Sprite (); cratesprite. Addchild (crateimage); x = cratesprite. Y = pxstarty pxstartx; cratesprite.; crateimages. - (cratesprite addchild (); dit cratesprite);}, dit is in wezen dezelfde code als de wielen maar op, breedte en hoogte van de verandering, omdat de doos is, niet rond.In de lijst van het beeld, maar we moeten ze elke tik, dus toe te voegen, ontick (). Functie: var crateimage: Sprite; elke (var cratebody:b2body in cratearray) {crateimage = crateimages [cratearray. (cratebody)]; crateimage. X = (cratebody. Getposition (x). Mtopx) - (crateimage.width × 0,5); crateimage. Y = (cratebody. Getposition (). Y * * * * * * * mtopx) - (crateimage.height × 0,5);}, hier de resultaten:,, de doos niet bewegen!Dat verklaart de vreemde dingen.Weet je waarom?Omdat ik iets vergeten...Een gok, en dan begint de volgende om te zien of je gelijk hebt, private functie createcrate (in het licht van het aantal pxstartx: nummer:,, pxstarty: cijfers mvelocityx: aantal, mvelocityy: aantal): ongeldig {VAR cratebodydef:b2bodydef = nieuwe b2bodydef (); cratebodydef.type = b2body.b2_dynamicbody; cratebodydef. De positie van een pxstartx (* * * * * * * pxtom. En pxstarty * * * * * * * pxtom); var cratebody:b2body = van de rest van de wereld. Createbody (cratebodydef); var crateshape:b2polygonshape = nieuwe b2polygonshape (); crateshape. Setasbox (op /2, gericht op /2); var cratefixturedef:b2fixturedef = nieuwe b2fixturedef (); cratefixturedef.shape = crateshape; var cratefixture:b2fixture = cratebody createfixture (cratefixturedef. Probeer het nu:); en,, probleem opgelost.Laten we de dozen een beetje te: voor (var i:int = 0; ik < 20; I + +) (createwheel (wiskunde, wiskunde. () × 0,5). (* * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde,. (de) × 100) 0); createcrate (50, wiskunde, wiskunde. () × 1,5). (* * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)}, dat is beter,, stap 11: de geweldige balans doos, ik zag iets vreemd.Probeer een klein wiel, een grote kooi evenwicht zoals:, /* * * * * * * (var i:int = 0; ik < 20; I + +) (createwheel (wiskunde, wiskunde. () × 0,5). (* * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - (20) + 10 wiskunde. () × 100) 0); createcrate (50, wiskunde, wiskunde. () × 1,5). (* * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)} * ////////het creëren van deze voorwerpen duidelijk, in plaats van die wielen doos vrij: createwheel (0,5, stage.stagewidth /2, stage.stageheight - (0,5 * mtopx), 0, 0); createcrate (3 (1 * mtopx) + stage.stagewidth /2, stage.stageheight - (3,5 * mtopx), 0, 0);,, vreemd.Is?Een doos hoort niet in een cirkel op de voorwerpen in evenwicht te brengen.Als je op een wiel om het van je af, de kratten direct vallen (of, soms, volgen de wielen), dat het voelt als de kwaliteit van de zaak is de ongelijke verdeling van de - zoals het bevat dingen die echt, echt heel zwaar, aan de linkerkant, dit is dat het in de wielen evenwicht, in feite, dit probleem is de kwaliteit van het te doen: we helemaal niet aan.Het lichaam van een standaard box2d inderdaad aan de kwaliteit als er geen speciale bepalingen in verband met de kwaliteit, maar er zijn andere eigenschappen (zoals het traagheidsmoment) niet correct, in dit geval, om het lichaam te vreemd gedrag, maak je geen zorgen, nu maar weet dat deze eigenschap is, om deze problemen op te lossen, en we moeten iedereen passende kwaliteit.Nou, eigenlijk, om ervoor te zorgen dat alle acties, zoals wij het willen, moeten we de kwaliteit van de persoonlijke uitrusting, en de kwaliteit van de box2d lichaam zelf laten vinden.De kwaliteit van een directe, moeten we vaststellen, bevolkingsdichtheid, dat wil zeggen hoeveel kilo per vierkante meter, hoewel alle profiel, dat klinkt ingewikkeld, maar het is eigenlijk is de toevoeging van een privé - functie:, createcrate (in het licht van het aantal pxstartx: nummer:,, pxstarty: aantal aantal aantal, mvelocityx::: ongeldig, mvelocityy) {VAR cratebodydef:b2bodydef = nieuwe b2bodydef (); cratebodydef.type = b2body.b2_dynamicbody; cratebodydef. Positie. (* * * * * * * * * * * * * * pxstartx pxtom, pxstarty pxtom); var cratebody:b2body = van de rest van de wereld. Createbody (cratebodydef); var crateshape:b2polygonshape = nieuwe b2polygonshape (); crateshape. Setasbox (voor /2, in het licht van de nieuwe b2fixturedef); var cratefixturedef:b2fixturedef = (cratefixturedef.shape = CR);Ateshape; ///////cratefixturedef.density = 1; een groot aantal = zware voorwerpen var cratefixture:b2fixture = cratebody. Createfixture (cratefixturedef); we hebben deze op wielen.Het is interessant is, zien de dingen gedrag, geen van deze fundamentele eigenschappen, hè?Nu, het testen van het:,, hè.Het is goed, maar nog niet erg goed.De SWF 's een paar keer proberen te spelen, je weet wat ik bedoel.,, stap twaalf: anderen het zware werk doen, wanneer dat niet zo maar het eerste deel van de handleiding (toevoeging van grafische, we gewoon terug naar onze wielen) van de code van het bestaande patroon, weten we wat het probleem is, dat het werk helaas hebben we geen code, de aandacht van de rechthoek, om nog maar te zwijgen van de code, we weten al dat werk.Gelukkig is box2d inderdaad een dergelijke code: dit is de zogenaamde debugdraw, invoer, box2d. Dynamische. B2debugdraw, en daarna het amendement, getstarted (), zoals: getstarted, privé - functies ():void {var de zwaartekracht: b2vec2 = nieuwe b2vec2 (0, 10); de nieuwe b2world (wereld = zwaartekracht, echt); var debugdraw:b2debugdraw = nieuwe b2debugdraw (); de VAR - debugsprite: Sprite = nieuwe Sprite (); addchild (debugsprite); debugdraw. Setsprite (debugsprite); debugdraw. Setdrawscale (mtopx); debugdraw. Setflags (b2debugdraw. E_shapebit); de rest van de wereld. Setdebugdraw (debugdraw, dit zal leiden tot een); een object, debugdraw, dat in de wereld van alle voorwerpen, foto 's, in de nieuwe geest die we creëren, debugsprite genaamd,,.We b2debugdraw.e_shapebit door het,, zegt dat het moet tekenen vormen (vertellen we het alleen maar tekenen, zei dat de lichamen. In tegendeel, als we willen dat de kwaliteit van het centrum), moeten we handmatig de wereld vertellen, vertel debugdraw object een lijk, dus doe het ontick (): ontick, private functie (a_event:timerevent): Invaliditeit - de wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata ();, je kan alles van grafische, dat nu niet meer nodig; we hebben ook hun.), probeer dit eens:,, zag je dat?Hier is een foto van het lichaam, waaruit blijkt dat dit probleem: draait, maar het beeld niet.We hebben nooit gezegd dat het!Stap 13:,, net als een opname, schatje, we kunnen een houten beeld door de vaststelling van, draaien, eigendom, ontick (): elke (var cratebody:b2body in cratearray) {crateimage = crateimages [cratearray. (cratebody)]; crateimage. X = (cratebody. Getposition (*). * mtopx) - (crateimage.width × 0,5); crateimage. Y = (cratebody. Getposition (). Y * * * * * * * mtopx) - (crateimage.height × 0,5); crateimage.rotation = cratebody. Getangle ();},... Oké, oké, dit is niet echt, zoals het gebruik box2d meter en pixel. Meting van de box2d flash, het gebruik van verschillende eenheden: de grootte van de in de hoek box2d, in een flits. Controle van de mate van dit artikel een volledige verklaring, en daarom zullen wij de oprichting van een "of" de factoren var.Variabele: de variabele aantal, mtopx: = 50; de variabelen pxtom: hoeveelheid = 1 /mtopx; de variabele aantal radtodeg: = 180 /b2settings.b2_pi; de variabele aantal degtorad: = b2settings.b2_pi /180;, je zal moeten worden ingevoerd, box2d.common.b2settings, - -, dit artikel opnieuw onderzoeken, als je het wil weten waarom We het gebruik van PI en 180. En nu is slechts een verandering van het beeld, draaien ontick (): elke (var cratebody:b2body in cratearray) {crateimage = crateimages [cratearray. (cratebody)]; crateimage. X = (cratebody. Getposition (x). Mtopx) - (crateimage.width × 0,5); crateimage. Y = (cratebody. Getposition (). Y * * * * * * * mtopx) - (crateimage.height × 0,5); crateimage.rotation = cratebody. Getangle (*) radtodeg;}, probeer:,,... Oh,,, op stap 14:Naar links, hier is het probleem: op een bepaald punt in de doos beeld draaien in beeld, dat voor de registratie.In het geval van een specifiek punt, dat in het centrum van de kwaliteit van de rotatie.Dat is niet hetzelfde, behalve op één plaats, in alle gevallen zijn niet draaien, deze animatie toont de verschillende is in het centrum, de foto 's van de zaak die een hoek van een begin van links), als je de flash -, er is een zeer eenvoudige methode om dit probleem op te lossen, maar verander je de exacte registratie van merken in het centrum van de Plaza.Maar als je niet, wat je moet doen is het equivalent van de met de code.Het is heel simpel, hoewel, zoals in de praktijk is de kist. In een geest van de zaak; als we draaien, draaien we in feite de elfen, wat op zijn beurt weer draaiende bitmap binnen, zie, in de notulen, dan is het dit: de grijze stippellijn Square, vertegenwoordigers van de elf, met inbegrip van de kist..De kleine grijze ring is elf punten draaien.Als we de elfen: 90 graden gedraaid,...... het zal doen, want je verwachten van naar de elfen.Maar, als je het kan zien is de kist, het lijkt zo draaien:, zie je?Nu, in de veronderstelling dat we een beetje bewegen in die geest, zo 'n lijn, dus elf, elf... En we draaien:,.Dus, om het werk, maar we moeten de mobiele krat in de elf bitmap, op de helft van de hoogte van de helft van de breedte en de achtergelaten.Door wijziging van de code, createcrate (): crateimage, var: bitmap = nieuwe simplecrate (); crateimage.width = de * * * * * * * mtopx; crateimage.height = voor de * * * * * * * mtopx; var cratesprite: Sprite = nieuwe Sprite (); cratesprite. Addchild (crateimage); crateimage. X = crateimage.width /2; crateimage. Y = crateimage.height /2; cratesprite. X = pxstartx; cratesprite. Y = pxstarty; crateimages. - (cratesprite addchild (); dit cratesprite), moeten we ook ontick () van het schrappen van deze code, de mobiele tank, SPRITE laat de helft van de breedte en hoogte van de helft van de crateimage Sprite,:.: elke (var cratebody:b2body in cratearray;) {crateimage = crateimages [cratearray. (cratebody)]; ///////- dit is niet wat Sprite, crAteimage. X = (cratebody. Getposition (x). Mtopx); ///////(crateimage.width × 0,5); crateimage. Y = (cratebody. Getposition (). Y * * * * * * * mtopx); ///////(crateimage.height × 0,5); crateimage.rotation = cratebody. Getangle (*) radtodeg;}, probeer het,,, de grote!Je ziet niet eens debugdraw beeld, wat betekent dat het volledig worden gedekt door de sluiting van het beeld,.,, wil je misschien weer tot 20 ronden en in vak 20 van de grootte en de locatie van de code willekeurig, kijken of het gedrag en we veranderen.Dit is van mij, en dat is een verschil, deze stap en 11 van de SWF 's.En nu heb je een digitale kaart is goed, probeer jezelf in plaats van aan te dringen op de foto 's van mijn film.In deze reeks van een deel van de, zullen we met de verschillende kenmerken van de uitbreiding van het aantal, het kan ook een leuk klein speelgoed!Vergeet niet je kan stemmen, wat wil je ons leren van deze handleiding in de gastheer, de pagina 's van Google.











Previous:
Next Page: