Voor box2d flash 3: bouw

, flash en 3 box2d: bouw,,,,,,,,,, uitwisseling van aandelen, 11,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, in deze reeks van deel twee, we tot voorwerp van eenvoudige aard, gebruik te maken van een lijst maken.In dit deel, en we zullen zien hoe de uitbreiding, laten we zorgen voor zoveel mogelijk verschillende soorten objecten, want we willen, zonder ons de code wordt alle verwikkelingen.Stel ik voor dat je vanaf het begin van deze reeks te lezen, maar als je wilt dat het vanaf hier, pak dan een gecomprimeerd bestand, met inbegrip van het tweede deel van de source code.(de knop bovenop. Download, met inbegrip van aan het einde van dit deel, de source code.), stap 1: nieuwe bal. Kom op, laten we gaan kijken:,, straal versnellingsbak springen.Het wiel niet dezelfde eigenschappen heeft, elke ronde een willekeurige teruggave, wrijving, omvang en dichtheid.De doos, loc. Cit., dit is de test goed, maar nu laat de dingen een beetje minder willekeurig.We beginnen met de tennis in plaats van de wielen, dit alles met dezelfde kenmerken, ten eerste, het trekken van een tennis (of een foto krijgen).Dit is van mij, en laat je het met me eens zijn, om ervoor te zorgen dat het heet tennisball.png, je redde het, vrijheid,,,,, dat is 35x35px, maar het is een transparante achtergrond.Kan je een beetje veranderen, als je dat wilt, maar je moet de desbetreffende amendementen vinden. Je code), in je Papoea - Nieuw - Guinea, zoals gewijzigd, Main.as, wat we gedaan hebben, die (Bron: [= "/Lib /tennis. Papoea - Nieuw - Guinea")] openbare var tennis:;, nu, het creëren van twee series: een voor je tennis box2d object, en een overeenkomstige beeld, tennisballarray: -; het publiek variabele var tennisballimages: generator;, tennisballarray = nieuwe installatie (); tennisballimages = nieuwe installatie (); dit zijn allemaal hetzelfde, we zijn in het tweede deel van de serie, dus kijk nog eens, als je moet herzien.), we hebben nu een functie voor het creëren van een interne tennis.Dit is ons voor het creëren van een ronde, 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 pxtom, pxstarty pxtom); de wereld wheelbody:b2body = var. 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 = CR wheelbody.Eatefixture (wheelfixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); wheelbody. Setlinearvelocity (startingvelocity); wheelarray. - (wheelbody); var wheelimage: bitmap = nieuwe simplewheel (); wheelimage.width = mradius * 2 * mtopx; wheelimage.height = mradius * 2 * mtopx; var wheelsprite: Sprite = nieuwe Sprite (); wheelsprite. Addchild (wheelimage); wheelsprite. X = pxstartx; wheelsprite. Y = pxstarty; wheelimages. - (wheelsprite addchild (); dit wheelsprite); wheelsprite. AddEventListener (mouseevent.click, onclickwheelimage);}, kunnen we het kopiëren en wijziging van onze behoeften.Omdat de ballen zou hebben dezelfde eigenschappen (omvang, het herstel van de oorspronkelijke toestand, wrijving, en dichtheid), die hebben we niet nodig, mradius, het debat dat we zonder het gebruik van willekeurige plek.Dat zal de juiste waarde het herstel van de oorspronkelijke toestand is zeer moeilijk, zo niet gaan kunnen we na correctie, dit is mijn, createtennisball (). Functie: privé - functie, createtennisball (pxstartx: cijfers pxstarty: aantal, mvelocityx: nummer, mvelocityy: aantal) {VAR tennisballbodydef: ongeldig: b2bodydef = nieuwe b2bodydef (); tennisballbodydef.type = b2body.b2_dynamicbody; tennisballbodydef. Positie. (* * * * * * * * * * * * * * pxstartx pxtom, pxstarty pxtom); var tennisballbody:b2body = van de rest van de wereld. Createbody (tennisballbodydef); var ronde: b2circleshape = nieuwe b2circleshape (35 * 5 * * * * * * * pxtom); var tennisballfixturedef:b2fixturedef = nieuwe b2fixturedef (); tennisballfixturedef.shape = rond tennisballfixturedef.restitution = 0,8; tennis.Sballfixturedef.friction = 0,75; tennisballfixturedef.density = 1; var tennisballfixture:b2fixture = tennisballbody. Createfixture (tennisballfixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); tennisballbody. Setlinearvelocity (startingvelocity); tennisballarray. - (tennisballbody); var tennisballimage: bitmap = nieuwe tennisball (); de VAR - tennisballsprite: Sprite = nieuwe tennisballsprite Sprite ();. Addchild (tennisballimage); tennisballsprite. X = pxstartx; tennisballsprite. Y = pxstarty; tennisballimages. - (tennisballsprite addchild (); dit tennisballsprite); ///////tennisballsprite. AddEventListener (mouseevent.click, onclickwheelimage);}, er zijn een paar punten moet aandacht worden besteed aan:,,,, voor de bouw van een b2circleshape ()Of is dat de bal krijgt, in meter radius, ik wil niet vechten of uit mijn beeld.Ik denk dat ik naar een echte ping - pong straal, in deze waarde hier, en veranderen, pxtom schaalfactor maakt alles past, en ik vertel de fabrikant zal ik tennis bal pixel straal meter, restituion is de elasticiteit van het voorwerp en de schaal van 1 tot 10, de bal is zeer flexibel. Dus ik zet deze zeer hoog, ook in de wrijving tussen 0 en 1; tennis is zwaar dus ik zet deze zeer hoge dichtheid, ook. Dat is niet beperkt tot een bepaald gebied is de lucht, tennis, dus heb ik het toen ik de doos van de waarde (zoals ik dacht dat het leeg is. In tegenstelling tot de,, createwheel (), de noodzakelijke aanpassing van de omvang, het beeld (zie hierboven), dus ik het schrappen van die bossenES, zoals ik al zei, onclickwheelimage, nu een evenement luisteren, want het is niet relevant.,, proberen te verzamelen van SWF 's.Als het niet werkt, wat je gemist hebt - maar we eigenlijk niet bellen, createtennisball (), van overal, zal anders zijn.,, stap 2: het creëren van tennis, verwijder de wielen van de afstand van de lijn en deze te vervangen door het tennissen.De verandering van deze code in, getStarted ():,, voor (var i:int = 0; I < 20; I + +) (createWheel (wiskunde. Willekeurige (*) 0,5, wiskunde. Willekeurige (*) (stage.stageWidth - 20) + 10, wiskunde. Willekeurige (*) (stage.stageHeight - 20) + 10 (wiskunde. Willekeurige (*) - 50, 100) 0); createCrate (wiskunde. Willekeurige (*) (* * * * * * * (1.5), wiskunde. Willekeurige stage.stageWidth - 20) + 10, wiskunde. Willekeurige (*) (stage.stageHeight - 20) + 10 (wiskunde. Willekeurige () * 100) - van 50 0)},... Naar deze, voor (var i:int = 0; I < 20; I + +) (createTennisBall (wiskunde. Willekeurige (*) (stage.stageWidth - 20) + 10, wiskunde. Willekeurige (*) (stage.stageHeight - 20) + 10 (wiskunde. Willekeurige () * 100) - van 50 0); createCrate (wiskunde. Willekeurige (*) (* * * * * * * (1,5), wiskunde. Willekeurige stage.stageWidth - 20 Math.ra + 10),Ndom (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)}, dat het eerste argument is geschrapt, omdat we niet handmatig omvang niet meer, maar alle andere parameters blijven ongewijzigd.Probeer:,, hè.Niet helemaal juist.Ja, natuurlijk - we geen code, zodat het tennis.We zullen in de volgende.Veranderen, ontick (), van het ontick (a_event:timerevent:, privé - functies): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - wheelimage: Sprite; elke (var wheelbody:b2body in wheelarray) {wheelimage = wheelimages [wheelarray. (wheelbody)]; wheelimage. X = (wheelbody. Getposition (x). Mtopx) - (wheelimage.width × 0,5); wheelimage. Y = (wheelbody. Getposition (). Y * * * * * * * mtopx) - (wheelimage.height × 0,5);} 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; ///////* * * * * * * crateimage.rotation = 0,5); cratebody. Getangle (*) radtodeg;}},... Dit privé - functie, ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - tennisballimage: Sprite; Elke (var tennisballbody:b2body in tennisballarray) {tennisballimage = tennisballimages [tennisballarray. (tennisballbody)]; tennisballimage. X = (tennisballbody. Getposition (x). Mtopx) - (tennisballimage.width × 0,5); tennisballimage. Y = (tennisballbody. Getposition (). Y * * * * * * * mtopx) - (tennisballimage.height × 0,5);} var crateimage: Sprite; elke (var cratebody:b2body in cratearray) {crateimage = crateimages [cratearray. (cratebody)]; crateimage. X = (cratebody getposition ().Mtopx. X); ///////(crateimage.width × 0,5); crateimage. Y = (cratebody. Getposition (). Y * * * * * * * mtopx); ///////(crateimage.height × 0,5); crateimage.rotation = cratebody. Getangle (*) radtodeg;}}, dit is gewoon een zaak van een opsporings - en vervanging - "de wielen," naar "tennissen."): de SWF 's nu proberen,, beter, maar we hebben geen roterende (we hebben het niet nodig is, omdat de wielen draaien symmetrische).En nu, tennisballimage: var: Sprite; elke (var tennisballbody:b2body in tennisballarray) {tennisballimage = tennisballimages [tennisballarray. (tennisballbody)]; tennisballimage. X = (tennisballbody. Getposition (x). Mtopx) - (tennisballimage.width × 0,5); tennisballimage. Y = (tennisballbody. Getposition (y * * * * * * *). Mtopx) - (tennisballimage.height × 0,5); tennisballimage.rotation = tennisballbody. Getangle (*) radtodeg;}, ja.Weet je nog dat we hadden deze kwestie met de doos?Weet je nog hoe we het op te lossen?Er is een hier hetzelfde doen in je eigen.Mijn oplossing is in als je wilt controleren, privé - functie: createtennisball (pxstartx: cijfers pxstarty: aantal, mvelocityx: nummer, mvelocityy: aantal): ongeldig {VAR tennisballbodydef:b2bodydef = nieuwe b2bodydef (); tennisballbodydef.type = b2body.b2_dynamicbody; tennisballbodydef. Positie. (* * * * * * * * * * * * * * pxstartx pxtom, pxstarty var tennisballbody:b2body pxtom); = ter wereld. Createbody (tennisballbodydef); var ronde: b2circleshape = nieuwe b2circleshape (35 * 5 * * * * * * * pxtom); var tennisballfixturedef:b2fixturedef = nieuwe b2fixturedef (); tennisballfixturedef.shape = ronde; tennisballfixturedef.restitution = 0,8; tennisballfixturedef.friction = 0,75; tennisballfixturedef.density = 1; var tennisballfixture:b2fixture CRE = tennisballbody.Atefixture (tennisballfixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); tennisballbody. Setlinearvelocity (startingvelocity); tennisballarray. - (tennisballbody); var tennisballimage: bitmap = nieuwe tennisball (); de VAR - tennisballsprite: Sprite = nieuwe Sprite (); tennisballsprite. Addchild (tennisballimage); tennisballimage. X = tennisballimage.width /2; tennisballimage. Y = tennisballimage.height /2; tennisballsprite. X = pxstartx; tennisballsprite. Y = pxstarty; tennisballimages. - (tennisballsprite addchild (); dit tennisballsprite); ///////tennisballsprite. AddEventListener (mouseevent.click, onclickwheelimage) ///////.}.Privé functie ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - tennisballimage: Sprite; elke (var tennisballbody:b2body in tennisballarray) {tennisballimage = tennisballimages [tennisballarray. (tennisballbody)]; tennisballimage. X = (tennisballbody. Getposition (- * * * * * * *). Mtopx); ///////(tennisballimage.width × 0,5); tennisballimage. Y = (tennisballbody. Getposition (). Y * * * * * * * mtopx); ///////(tennisballimage.height × 0,5); tennisballimage.rotation = tennisballbody. Getangle (*) radtodeg;} 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); crateimage.rotation = cratebody. Getangle (*) radtodeg;}}, test het, ACE:,.,, salaristrap 3: het creëren van een Bowling bal, wil ik mij aansluiten bij de drie ballen, bowlen, basketbal, en een rubberen bal.Als je van boven kan zien, het is een pijn doen opnieuw en opnieuw.We zullen in de volgende verhoging van bowlen, probeer de stroomlijning van het proces, zodat we niet hoeven te maken van de stimulatie van de veranderingen in de Bowling, dit is mijn beeld.Nogmaals, gebruik je eigen, maar om het 60x60px naam: bowlen, Papoea - Nieuw - Guinea, ingebed in beeld, en de toevoeging van de nodige array, [verankerd (Bron: "/Lib /bowlen, Papoea - Nieuw - Guinea")] van de variabele schaal:; ///////...De variabele bowlingballarray: generator; de variabelen bowlingballimages: generator; ///////...Bowlingballarray = nieuwe installatie (); bowlingballimages = nieuwe installatie ();, schreef een createbowlingball (). Functie: privé - functie, createbowlingball (pxstartx: cijfers pxstarty: aantal, mvelocityx: nummer, mvelocityy: aantal): ongeldig {VAR bowlingballbodydef:b2bodydef = nieuwe b2bodydef (); bowlingballbodydef.type = b2body.b2_dynamicbody; bowlingballbodydef. Positie. (pxstartx * * * * * * * pxtom, pxstarty * * * * * * * pxtom); var bowlingballbody:b2body = van de rest van de wereld. Createbody (bowlingballbodydef); var ronde: b2circleshape = nieuwe b2circleshape (60 * 5 * * * * * * * pxtom); var bowlingballfixturedef:b2fixturedef = nieuwe b2fixturedef (); bowlingballfixturedef.shape = ronde; bowlingballfixturedef.restitution = 0; //////////////niet gelukkig is bowlingballfixturedef.friction = 0;Goede bowlingballfixturedef.density = 20; ///////bowlingballfixture:b2fixture = bowlingballbody zware var. Createfixture (bowlingballfixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); bowlingballbody. Setlinearvelocity (startingvelocity); bowlingballarray. - (bowlingballbody); var bowlingballimage: bitmap = nieuwe bowlingball (); de VAR - bowlingballsprite: Sprite = nieuwe Sprite (); bowlingballsprite. Addchild (bowlingballimage); bowlingballimage. X = bowlingballimage.width /2; bowlingballimage. Y = bowlingballimage.height /2; bowlingballsprite. X = pxstartx; bowlingballsprite. Y = pxstarty; bowlingballimages. - (bowlingballsprite addchild (); dit bowlingballsprite); ///////bowlingballsprite.adDeventlistener (mouseevent.click, onclickwheelimage);},... En het creëren van een werkelijke doel, voor (var i:int = 0; ik < 20; I + +) (createtennisball (wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde.) × 100) 50, 0); createbowlingball (wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50, 0); createcrate (wiskunde. () () (* * * * * * * * 1,5 en wiskunde. Stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)}, yo.Oké, nu maken.Laten we kijken of we die code toe, private functie ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - tennisballimage: Sprite; elke (var tennisballbody:b2body in tennisballarray) {tennisballimage = tennisballimages [tennisballarray (tennisballbody.)]; tennisballimage. X = (tennisballbody. Getposition (x). Mtopx); ///////(tennisballimage.width × 0,5); tennisballimage. Y = (tennisballbody. Getposition (). Y * * * * * * * mtopx); ///////(tennisballimage.height × 0,5); tennisballimage.rotation = tennisballbody. Getangle (*) radtodeg;} var crateimage: voor elke (var cratebody:b2body Sprite. In de 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;}}, nota genomen van wat?Dankzij onze veranderingen in de laatste stap te doen, die de problemen van de deel is bijna hetzelfde, alleen maar om een 'tennissen "van de" doos "in elk geval, ze is een perfecte Match, het blijkt dat we die kunnen worden gecombineerd in een enkelvoudig, zodat alle het object.Zo, zullen we niet nodig voor het scheppen van een nieuwe cyclus van die Bowling.Laten we zien wat de volgende stap 4:.,, in een enkele lus trekken, om dit te doen, maar we moeten tennisballarray, cratearray, met, in één enkele reeks.Als ik je vertelde dat het gemakkelijk, private functie ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - generalb2bodyarray: - = nieuwe installatie (); generalb2bodyarray = generalb2bodyarray.Concat (tennisballarray, cratearray); var generalimages: - = nieuwe installatie (); generalimages = generalimages.Concat (tennisballimages, crateimages); algemeen beeld var: Sprite; elke (var generalbody:b2body in generalb2bodyarray) {Algemeen beeld = generalimages [generalb2bodyarray. (generalbody)]; het algemene beeld. X = (generalbody. Getposition (x). Mtopx); algemene beeld. Y = (generalbody getposition (). Mtopx. Y * * * * * * *); generalimage.rotation = generalbody. Getangle (*) radtodeg;}}, zien hoe het werkt?In de lijn van 6 - 10, creëren we een nieuwe installatie: een bevat alle tennis en chassis b2body object, en de andere bevat alle ballen en het scheppen van Elfen.Het meest belangrijke is, zijn ze in dezelfde orde, als artikel 17 dollar, generalimages [], is een ping - pong en Zeventiende eleemnt, generalb2bodyarray [], is ook de b2body tennis.,,, de ring is precies hetzelfde als voor de twee niet meer in het algemeen, het is gewoon weg.Probeer Bowling bal beeld:,, niet bewegen, maar zien hoe gemakkelijk het is ze toegevoegd aan het maken, speciale functie: ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - generalb2bodyarray: - = nieuwe installatie (generalb2bodyarray = generalb2bodyarray);.Concat (tennisballarray, cratearray, bowlingballarray); var generalimages: - = nieuwe installatie (); generalimages = generalimages.Concat (tennisballimages, crateimages, bowlingballimages); algemeen beeld var: Sprite; elke (var generalbody:b2body in generalb2bodyarray) {Algemeen beeld = generalimages [generalb2bodyarray. (generalbody)]; x = (algemene beeld. Generalbody. Getposition (x). Mtopx); y = (generalbody algemene beeld.Getposition (). Y * * * * * * * mtopx); generalimage.rotation = generalbody. Getangle (*) radtodeg;}}, dat is genoeg!Kijk, het begint te lopen:, een beetje langzamer in m 'n machine, dus ik moet de vermindering van het aantal voorwerpen van 60 tot 30, (var i:int = 0; ik < 10; I + +) (createtennisball (wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. () * * * * * * * (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50, 0); createbowlingball (wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50 createcrate (wiskunde, 0);. (de) × 1,5, wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () * 100) - van 50 0)}, ze hebben meer ruimte te stappen:,, 5: het creëren van basketbal, baSketballs, de volgende.Ik beeld is 75x75px heet basketbal. Papoea - Nieuw - Guinea:,, zoals gewoonlijk, te beginnen met die beelden, die als een soort (Bron: [= "/Lib /basketbal. Papoea - Nieuw - Guinea")] van de basketbal; var, nu zullen we nog voor basketbal b2body object en twee - elfen.Behalve...Wacht.Waarom moeten we een afzonderlijke installatie als deze?Eigenlijk, hebben we niet.Geen.Laten we al onze b2body voorwerp van een installatie, we alle elf naar een andere.Verandering van de variabele, cratearray:: -; de variabelen van de variabele tennisballarray crateimages: generator; - de variabele tennisballimages::; -; de variabele bowlingballarray: -; de variabelen bowlingballimages: array;... Dat de variabele generalb2bodyarray: generator;, van de variabele generalimages: generator;, veranderen, wheelarray = nieuwe installatie (:); wheelimages = nieuwe installatie (); cratearray = nieuwe installatie (); crateimages = nieuwe installatie (); tennisballarray = nieuwe installatie (); tennisballimages = nieuwe installatie (); bowlingballarray = nieuwe installatie (); bowlingballimages = nieuwe installatie (); dat, generalb2bodyarray,...); generalimages nieuwe installatie (= = = = = = = de nieuwe installatie (); in elk « », het creëren van wat de functie van het veranderen van het equivalent van, tennisballarray duwen (tennisballbody);,.Generalb2bodyarray.:,. Duw (tennisballbody); ///////of (cratebody), of wat dan ook... Dat tennisballimages:,. Duw (tennisballsprite);... Dat, generalimages. - (tennisballsprite); ///////of (cratesprite), of wat het ook is, we kunnen onclickwheelimage (), van toepassing is. Op alle soorten objecten gemakkelijk nu; alleen de koers wijzigen, private functie onclickwheelimage (gebeurtenissen: de gebeurtenissen: invaliditeit) {VAR spritethatwasclicked: Sprite = event.target elfen; var relatedbody:b2body = wheelarray [wheelimages. (spritethatwasclicked)]; var gecentraliseerde uitwisseling: het aantal = X + spritethatwasclicked. (spritethatwasclicked.width /2); var. Eeuw: het aantal = spritethatwasclicked. Y + (spritethatwasclicked.height /2); var xdistance = aantal gecentraliseerde uitwisseling:- event.stagex; var ydistance: hoeveelheid = eeuw - event.stagey; var ximpulse: hoeveelheid = 60 * * * * * * * * xdistance pxtom; /pakte ik 60 omdat var yimpulse: hoeveelheid = 60 * * * * * * * * ydistance pxtom; /"goed" en ik relatedbody. Applyimpulse (nieuwe b2vec2 (ximpulse, yimpulse), relatedbody. Getposition ());},... Zoals dit: onclickwheelimage, privé - functies (gebeurtenissen: de gebeurtenissen: invaliditeit) {VAR spritethatwasclicked: Sprite = event.target elfen; var relatedbody:b2body = generalb2bodyarray [generalimages. (spritethatwasclicked)]; var gecentraliseerde uitwisseling: het aantal = spritethatwasclicked. X + (spritethatwasclicked.width /2); var eeuw: spritethatwasclicked y =. + (spritethatwasclicked.height /2); var xdistance: = aantal gecentraliseerde uitwisseling van gebeurtenissen.Tagex; var ydistance: hoeveelheid = eeuw - event.stagey; var ximpulse: hoeveelheid = 60 * * * * * * * * xdistance pxtom; /pakte ik 60 omdat var yimpulse: hoeveelheid = 60 * * * * * * * * ydistance pxtom; /"goed" en ik relatedbody. Applyimpulse (nieuwe b2vec2 (ximpulse, yimpulse), relatedbody. Getposition ()); tot slot, ontick (}), te schrappen, kunnen we het volgende duidelijk: privé - functie, ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - generalb2bodyarray: - = nieuwe installatie (); generalb2bodyarray = generalb2bodyarray.Concat (tennisballarray, cratearray, bowlingballarray); var generalimages: - = nieuwe installatie (); generalimages = generalimages.Concat (tennisballimages, crateimages, bowlingballiDe magiër); algemeen beeld var: Sprite; elke (var generalbody:b2body in generalb2bodyarray) {Algemeen beeld = generalimages [generalb2bodyarray. (generalbody)]; het algemene beeld. X = (generalbody. Getposition (x). Mtopx); algemene beeld. Y = (generalbody. Getposition (). Y * * * * * * * mtopx generalimage.rotation); = generalbody. Getangle (*) radtodeg;}}, het opstellen van je SWF 's om ervoor te zorgen dat het werk:,, en zo niet, kan het gevolg zijn van de lokale gemist - onderzoeken de onjuiste berichten; en het nog een keer proberen.,, na Een tijdje, maar het maakt het gemakkelijker om de toevoeging van nieuwe onderwerpen.We zijn van het hele proces van geleidelijke vereenvoudiging, en een vereenvoudiging kunnen we de generator, maar...,, stap 6: het beeld b2body object, waarom hebben we, generalimages [], de generator?Het is gewoon dan kunnen we een b2body in verband met de beelden, en vice versa.Maar er is een betere manier om dit te doen. B2body, elk in een "gegevens van de gebruiker" voorwerp - dat kan worden vastgesteld voor een van je favoriete objecten, en het kan overal vandaan komen.We kunnen dit punt b2body object van de elfen, doen is heel eenvoudig; elke, het creëren van « » (ook), de functie, het veranderen van de gelijkwaardige: deze lijn, generalimages. - (tennisballsprite); dit is gelijk aan... En tennisballbody. Setuserdata (tennisballsprite); en, ontick (), In plaats van de installatie van de beelden vinden, vinden we het gebruik van de gegevens, de privé - functie ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de VAR - algemene beeld: Sprite; elke (var generalbody:b2body in generalb2bodyarray) {Algemeen beeld getuserdata (= generalbody. De elfen; algemene beeld). X = (generalbody. Getposition (x). Mtopx); algemene beeld. Y = (generalbody. Getposition (). Y * * * * * * * mtopx); enEralimage.rotation = generalbody. Getangle (*) radtodeg;}}, als je wilt, kan je met een elf meter, het gebruik van de gegevens. Weergave van objecten te vervangen.Het is simpel, deze structuur.), kan je het verwijderen van in totaal [...]), generalimages, nu...Behalve één ding: het is nog in gebruik zijn, onclickwheelimage () en het verkrijgen van een verwijzing van de beelden naar de b2body. Kunnen we onclickwheelimage (opmerkingen), uit omdat we nu niet gebruiken, maar die lui zijn.Dit is een goed punt, hoe dan ook, we hebben geen beeld van de relevante b2body kunnen vinden.Helaas, we gebruiken het Sprite, zonder ingebouwde "gebruiker", maar we kunnen het eens, het creëren van een nieuwe klasse van b2sprite, genaamd,, de uitbreiding, de Sprite, je, src, folders, pakje (invoer flash.display.sprite; uitbreiding van de cursussen b2sprite sneeuw bi {{}}} b2sprite () openbare functie, ik met een hoofdletter b onderscheiden van de officiële box2d.), de oprichting van een b2body eigenschap:,,, pakket - invoer van box2d.dynamics.b2body; de invoer van flash.display.sprite; uitbreiding van de cursussen b2sprite Sprite {de variabelen: b2body; openbare functie b2sprite () {}}}, omdat deze uitbreiding Sprite, zal Het precies dezelfde geest, met uitzondering vanAanvullende kenmerken, wat we nodig hebben, nu in elk van de drie, en het creëren van « » (ook), de functie, het wijzigen van deze code van gelijkwaardigheid: var tennisballsprite: Sprite = nieuwe Sprite ();... Dat reactive tennisballsprite:b2sprite = nieuwe b2sprite (); de, waar je ook deze lijn, gelijkwaardige: tennisballbody. Setuserdata (tennisballsprite); en... Weer onder het, het creëren van een verbinding van de b2body: b2sprite, tennisballbody. Setuserdata (tennisballsprite); tennisballsprite.body = tennisballbody;, en dan kan je veranderen, onclickwheelimage (), zoals dit: - functie onclickwheelimage (gebeurtenissen: de gebeurtenissen: de leegte als () {event.target is b2sprite) {VAR spritethatwasclicked:b2sprite = event.target als b2sprite; var relatedbody:b2body =Spritethatwasclicked.body; var gecentraliseerde uitwisseling: het aantal = spritethatwasclicked. X + (spritethatwasclicked.width /2); var eeuw: de hoeveelheid = spritethatwasclicked. Y + (spritethatwasclicked.height /2); var xdistance: = aantal gecentraliseerde uitwisseling - event.stagex; var ydistance: hoeveelheid = eeuw - event.stagey; var ximpulse: hoeveelheid = 60 * * * * * * * * xdistance pxtom; alleen omdat ik 60 /var yimpulse: hoeveelheid = 60 * * * * * * * * ydistance pxtom; /"goed" en ik relatedbody. Applyimpulse (nieuwe b2vec2 (ximpulse, yimpulse), relatedbody. Getposition ());}}, nu alles wat je hebt gedaan, Je kan de afschaffing van vallen, toe te voegen aan de gebeurtenissen van luisteraars, onclickwheelimage (), (in functie van het creëren van tennis en bowlen, en probeer je software)F:,, klik op een tennis en kom naar de resultaten, om onclickwheelimage (), de functie, het onclickclickableimage ().Als je wilt, kan je proberen om de doos te klikken.Stap 7: het creëren van basketbal,, (nog), Hé, we zijn niet bij het basketbal?Laten we terug gaan, dus, we verwijderen van beeld - en dat betekent dat we moeten schrijven, createbasketball (), functioneren.Maar, wacht, wacht...Ik weet niet of we moeten, generalb2bodyarray [], en dat weten we niet, b2world, bevat een lijst van alle binnen b2body object, dus - is niet nodig.We doen een snelle verandering van de,, - ik beloof - dan kunnen we de basketbal is deze lijst toe te voegen, niet een serie.Het werkt als volgt: de,, vraag je wereld. Getbodylist (), dat in de lijst, voor Je eerste b2body object. Dit lichaam, je belt. Getnext (), lijst van de in het kader van een object in b2body. Als getnext (), rendement,., leeg. Heb je tot aan Het einde van de lijst in te schrijven.,,, ontick () weg, die de code in plaats van gebruik te maken van deze lijst, generalb2bodyarray [].Dit is mijn oplossing, als je wilt controleren, privé - functie: ontick (a_event:timerevent): ongeldig {wereld. Stap (0025, 10, 10); de rest van de wereld. Drawdebugdata (); de currentbody:b2body = var. Getbodylist (); var beeld: b2sprite; en (currentbody!= nul) {als (currentbody. Getuserdata () is b2sprite) /belangrijk, want de grens niet in verband met het beeld van currentbody (=. Getuserdata () als b2sprite; beeld. X = (currentbody. Getposition (x). Mtopx); beeld. Y = (currentbody. Getposition (mtopx y * * * * * * *).); currentimage.rotation = currentbody. Getangle (*) radtodeg;} currentbody = currentbody. Getnext ();}}, had ik de gelegenheid te controleren en een aanvullende variabelen naam veranderen, je hoeft dit niet te doen, maar het kan makkelijker, als je dat doet, om de samenhang, de code. Je kan nu verwijderen van alle verwijzingen naar de generalb2bodyarray [].Om ervoor te zorgen dat de SWF 's controleren je testen is heel goed, en het creëren van basketbal: het is heel simpel.Ten eerste, schrijven, createbasketball (): createbasketball, private functie (pxstartx: cijfers pxstarty: aantal, mvelocityx: nummer, mvelocityy: aantal): ongeldig {VAR basketballbodydef:b2bodydef = nieuwe b2bodydef (); basketballbodydef.type = b2body.b2_dynamicbody; basketballbodydef. Positie. (* * * * * * * * * * * * * * pxstartx pxtom, pxstarty var basketballbody:b2body = de pxtom); (basketballbodydef); var. Createbody ronde: b2circleshape = nieuwe b2circleshape (75 * 5 * * * * * * * pxtom); var basketballfixturedef:b2fixturedef = nieuwe b2fixturedef (); basketballfixturedef.shape = ronde; basketballfixturedef.restitution = 0,6 heel flexibel; //////////////basketballfixturedef.friction = 0,4; een beetje ruw basketballfixturedef.density = 2,5; ///////zeer licht var - basketbalLfixture:b2fixture = basketballbody. Createfixture (basketballfixturedef); var startingvelocity:b2vec2 = nieuwe b2vec2 (mvelocityx, mvelocityy); basketballbody. Setlinearvelocity (startingvelocity); var basketballimage: bitmap = nieuwe basketbal (); de VAR - basketballsprite:b2sprite = nieuwe b2sprite (); basketballsprite. Addchild (basketballimage); basketballimage. X = basketballimage.width /2; basketballimage y basketballimage.height. = 2; basketballsprite. X = pxstartx; basketballsprite. Y = pxstarty; basketballbody. Setuserdata (basketballsprite addchild (); dit basketballsprite); basketballsprite.body = basketballbody; basketballsprite. AddEventListener (mouseevent.click, onclickclickableimage);}, en het creëren van een heleboel...De (var i:int = 0; ik < 10; I + +) (createtennisball (wiskunde. (*) (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50, 0); createbowlingball (wiskunde (). * * * * * * * (stage.stagewidth - 20) + 10, wiskunde. (*) (stage.stageheight - 20) + 10 (wiskunde. () × 100) 50, 0); createbasketball (wiskunde







Previous:
Next Page: