mechanische slangen, het creëren van een mechanische slang omgekeerde beweging,,,,,,,,,,,, deel 2,,,,,,, de delen van het netwerk, maandag wat in tuts + koers zal dalen tot slechts drie dollar.Niet' niet missen.,, stel je een keten van de animatie ": alle extra wagons trein verplaatsen volgen; dansen meester trekken, touw, zelfs als je arm, je ouders en je hand vasthouden, omdat ze je op een avond wandeling.Movevment rimpels onder naleving van de oorsprong van de laatste beperkingen, het.Dit is het omgekeerde,, (VK), wiskunde, berekend van de beweging nodig.Hier, we zullen het gebruiken om een slang, dat is een beetje veel geavanceerder dan een Nokia spel.,,, het uiteindelijke resultaat bekijken, laten we eens kijken naar de resultaten van de laatste, we zullen er hard aan werken.Volgens en gehouden, links, rechts, links van de sleutels, mobiele, stap 1: de betrekkingen in de keten, een keten is voor de bouw van de module.Elke module in de keten van de vertegenwoordiger van een punt, vertaling en roterende kan gebeuren.Ik keten, de rimpelingen in de omgekeerde beweging van de laatste knopen (het laatste kind de eerste module (root -) met betrekking tot het kinematisch (FK), kinematische die bij de wortel tot het laatste kind.Alle kettingen, begin bij de wortel.De wortel is een nieuwe module verbonden agent ouder.Integendeel, het eerste kind in de keten in het tweede kind, dit is herhaald, tot het laatste kind toe te voegen.De volgende beschrijving van de animatie van een dergelijke relatie.,, stap 2: weet je nog, ikshape, de verwezenlijking van onze betrekkingen, het concept van de toeleveringsketen.Klasse van de ikshape herinneren aan hun vader en zoon knooppunten knooppunten, en geen ouder - en tot slot een kind - - geen uitzondering.De volgende ikshape privé, privé - var -: ikshape; particuliere var parentNode:ikshape; particuliere var, deze eigenschap voor vec2parent:vector2d; toegang tot openbare functies, als volgt: ikchild (childsprite:ikshape): - = childsprite nietigverklaring {} openbare functie; ikchild () {}: ikshape openbare functies ikparent terug te keren naar sub - knooppunten (parentsprite:ikshape): een parentnode = parentsprite nietigverklaring {} openbare functie; ikparent () {terug:ikshape ouder;}, stap 3: van kinderen van ouders van de vervoerder, misschien is het je opgevallen dat deze winkel vector2d - knooppunten ouder, punt.Dit beginsel is in de richting van de beweging van kinderen als gevolg van de vader.Het gebruik van kinderen als gevolg van vector2d vector wijst op de omvang en de richting van de ouders worden gemanipuleerd, vaak in het kader van de uitvoering van een ik keten gedrag.Dus, het volgen van deze gegevens noodzakelijk is.Hier is het aantal positieve vector massage ikshape openbare functies, calcvec2parent ():void {VAR xlength: hoeveelheid = een parentnode. X, X; de VAR - ylength: hoeveelheid = een parentnode. Y y; vec2parent = nieuwe vector2d (xlength, ylength); de openbare functie setvec2parent (VEC:vector2d} {vec2parent): nietigverklaring van DUPLICATE = VEC. (); de openbare functie getvec2parent (}):vector2d {terug vec2parent. DUPLICATE (); de openbare functie getang2parent (}): de hoeveelheid {terug vec2parent. Getangle ();}, stap 4: de opstelling van node, niet in de laatste plaats moet er een methode om de vorm.We zullen een rechthoek van elke module is vertegenwoordigd.Maar een andere voorkeur kan door overweldigende manier hier neer.De vierde categorie, met inbegrip van een klasse van de standaard van de methode van de bal.(in de vorm van snel tussen de laatste wordt in deze handleiding). Zo, we zijn klaar voor de bescherming van ikshape klasse, trekken:void {VAR () = aantal 0x00ff00; kleur: var w: de hoeveelheid = 50; h = aantal var: 10; grafische. Beginfill (col; grafische drawRect (W). /2, H /2, G, H); grafische. Endfill ();}, 5:IK keten, stap, ikine klasse van de verwezenlijking van een ik keten gedrag.Dit soort verklaringen over de volgorde van de volgende, in deze klasse worden particuliere variabele in deze categorie in het gebruik van de methode van de specifieke functie, het beginsel van de interpretatie van de wiskunde.Deze specifieke taken.,, stap 6: in een keten van de gegevens, de volgende code blijkt ikine klasse - variabelen, de particuliere ikinechain:VAR vector. < ikshape >; ////////de structuur van de gegevens van de Lid - constraintdistance:VAR vector - beperkingen. < aantal GT;; ///////- particuliere constraintrangestart tussen: vector. < aantal >; ///////begint te draaien vrije particuliere constraintrangeend:VAR vector. < aantal > ///////van het einde van de vrijheid, de concretisering van De maatregelen 7: een keten, ikine keten worden opgeslagen gegevens vormen een Sprite, weet je nog van de relatie tussen ouders en kinderen.De elfen ikshape.De resultaten van de wortel van de ketting zien in de index 0, in het kader van een kind in de index 1,...Tot slot een kind in de volgorde van de mode.Echter, de bouw van de keten is niet uit de wortels van de kinderen; het is het laatste kind wortel, in de veronderstelling dat de ketting van de bouw van n, volgen deze volgorde: n - (n - 1) - (2) - op het eind van de dag...20 knopen.De volgende beschrijving van de volgorde van de animatie.,, in de steek ik keten geconcretiseerd, het laatste punt.Later zal extra ouder.Tot slot een module is een wortel.De volgende codes ik keten voor de opbouw van de toevoeging of schrapping van openbare functies - keten, ikine (lastchild:ikshape, afstand nummer) {///////- alle - ikinechain = nieuwe luchtvaartmaatschappij. < ikshape > (); constraintdistance = nieuwe luchtvaartmaatschappij. < aantal > (); constraintrangestart = nieuwe luchtvaartmaatschappij. Lt; aantal > (); constraintrangeend = nieuwe luchtvaartmaatschappij. < aantal > (); ///////beperkingen. Ikinechain [0] = lastchild; dit. Constraintdistance [0] = afstand; dit. Constraintrangestart [0] = 0; dat een constraintrangeend [0] = 0;} /* de methode die ik keten /openbare functie appendnode (nodenext:ikshape, afstand nummer = 60, anglestart: hoeveelheid = 1 * math.pi, angleend: = aantal wiskundige. PI) {this.iki ongeldig:Nechain. Unshift (nodenext); deze constraintdistance. Positie (afstand); deze constraintrangestart. Unshift (anglestart); deze constraintrangeend. Unshift (angleend);} openbare functie removeNode (module: aantal): {is leeg. Ikinechain. Aansluiting (- 1); deze constraintdistance aansluiting (module. 1); de constraintrangestart. Aansluiting (- 1); deze constraintrangeend. Aansluiting (- 1);},, salaristrap 8: deze methode van node, de volgende is gebruikt voor het verkrijgen van de keten van node, zolang als het nodig is, de openbare functie getrootnode ():ikshape {terug. Ikinechain [0]; de openbare functie getlastnode (}):ikshape {terug. Ikinechain [1] ikinechain.length openbare functies;} getnode (- nummer): ikshape {terug.Ikinechain [en];}, stap 9: beperking, we hebben gezien hoe - - is in een reeks zei: - - in de index 0,...(1) een - index (2), n - index (n - 1), n - lange keten.We kunnen ons gemakkelijk regelingen in deze volgorde, de beperking van de, en.De vorm van de beperkingen zijn er twee soorten: de afstand tussen de knooppunten tussen de knooppunten, door vrijheid, de afstand tussen de knooppunten te worden erkend als een kind - beperkingen, z 'n vader.Met het oog op de verwijzing van gemak, kunnen we het bewaren van de waarde, de constraintdistance index vergelijkbaar, en de aandacht van de module. Geen vader, wortel - generator.Echter, de afstand moet worden geregistreerd in de aanvullende beperkingen van de wortel - en als het een ketting is na de uitbreiding, nieuwe aanvullende "kind" van deze wortel gebruik kunnen maken van de gegevens, ten tweede, de vader van de hoek van knooppunten in een bereik worden beperkt.Het begin en het einde van onze winkels van de werkingssfeer van de constraintrangeend constraintrangestart,,, -.De afbeelding toont een vader en twee in de blauwe knoop in de knoop.- de vermelding "zeker" slechts is toegestaan, omdat het in de hoek van dwang.We kunnen gebruik maken van een soortgelijke methode, bij de toepassing van deze waarden in de reeks.Nogmaals, vanuit het oogpunt van de beperkingen van de wortel - en zelfs niet in gebruik zijn, aangezien dezelfde redenen als de vorige.Trouwens, de beperkingen zijn niet van toepassing op de hoek van het laatste kind want we willen soepele controle, stap, 10: beperkingen: krijgen en worden de volgende methoden kan nuttig zijn als je van de beperkingen van de start -, maar in de toekomst zal veranderen. De waarde van de openbare functie, /* * /Operationele fase moet worden beperkt getdistance (- nummer): de hoeveelheid {terug. Constraintdistance [];} openbare functie setdistance (newdistance: nummer en - nummer: invaliditeit:) {dit. Constraintdistance [-] = newdistance openbare functies;} getanglestart (knooppunten): de hoeveelheid {terug. Constraintrangestart []; de openbare functie setanglestart (newanglestart}: nummer, - nummer: invaliditeit:) {het constraintrangestart [-] =.Newanglestart openbare functies;} getanglerange (knooppunten): de hoeveelheid {terug. Constraintrangeend [];} openbare functie setanglerange (newanglerange: nummer en - nummer: invaliditeit:) {dit. Constraintrangeend [-] = newanglerange;}, 11: de beperking van de duur van de maatregelen, het concept van de onder de Beperking van de duur van de demo - de berekening van de 12 stappen.,, de beperking van de lengte van de formule:,, in deze fase zullen wij in een beschikking ter beperking van de methode van de afstand tussen de knooppunten kijken.Wijst op de lijn.Je zult merken, maar het laatste kind deze beperkingen worden toegepast.Oké, commando, dit is echt.- de voltooiing van de vader moet niet alleen vanuit het oogpunt van de lengte, maar beperkt.Al deze behandeling van de methode voor de uitvoering van de vecwithinrange (,).最后一个孩子不需要约束的角度,因为我们需要最大弯曲的灵活性,私有函数updateparentposition():无效{为(var i:单位= ikinechain.length - 1;我>;0;我--){ ikinechain [我]。calcvec2parent();VAR向量:vector2d;//处理最后一个孩子如果(我= = ikinechain.length - 1){ var昂:数量= ikinechain [我]。getang2parent();VEC =新vector2d(0,0);血管内皮细胞。(这个定义。constraintdistance [ 1 ] ikinechain.length,Ang);}否则{ VEC =这。vecwithinrange(我);} ikinechain [我]。setvec2parent(VEC);ikinechain [我]。ikparent。x = x + ikinechain [我]。ikinechain [我]。getvec2parent()。X;ikinechain [我]。ikparent。Y = ikinechain [我]。Y + ikinechain [我]。getvec2parent()。Y;} },,的- 13: hoek beperkte concept van, ten eerste, we hebben berekend dat de huidige klem in de hoek tussen twee vectoren, vec1 en vec2.Als de hoek niet in beperkingen van de minimale of maximale, verdeling van de hoek.Zodra een hoek van de definitie van de berekening, kunnen we een vector is een vec1 beperkingen (overgangsbepalingen), samen met de afstand, de volgende animatie biedt een alternatief voor het visuele idee.,, stap 14: de hoek van dwang, vanuit het oogpunt van de uitvoering van de volgende formules beperkt.Privé - functie, vecwithinrange (CurrentNode: nummer): ///////vector2d {adequate vector var child2me:vector2d = ikinechain [CurrentNode]. Ikchild. Getvec2parent (); de VAR - me2parent:vector2d = ikinechain [CurrentNode]. Getvec2parent () beperking van het toepassingsgebied van de uitvoering; ///////Vanuit het oogpunt van reactieve currentang: hoeveelheid = child2me. Hoek (me2parent var currentstart); het bedrag van de constraintrangestart: [] =. CurrentNode; var currentend: hoeveelheid = de CurrentNode. Constraintrangeend []; var limitedang: hoeveelheid = geblokkeerd. Implementbound (currentstart, currentend, currentang); ///////child2me dat afstand beperkt. Setmagnitude (deze. Constraintdistance [CurrentNode]); child2me. Roterende (limitedang); terug naar de child2me}, stap 15: met de richting van deMisschien is het de moeite waard om een idee, vanuit het oogpunt van de wijzers van de klok mee en tegen de wijzers van de klok mee uit.Gevangen in de hoek tussen twee vectoren, zei vec1 en vec2, van een van deze twee de vermenigvuldiging van vector.De produktie zal draaien op korte vec2 vec1 hoek.Maar niet de richting van de concepten, want het antwoord is altijd positief.Dus, regelmatig output moet worden gewijzigd.In de hoek, ik vec1 en vec2 tussen de vector voor het bepalen van de huidige volgorde is het product van een positieve of negatieve draaien en vanuit het oogpunt van het ingeschreven merk.Ik heb er al op gewezen dat in de volgende lijnen in de richting van de functies van de kenmerken, vectorproduct (vec2:vector2d): de hoeveelheid {terug this.vec_x * * * * * * * * * * * * * * vec2 this.vec_y vec2. Y. X; de hoek van openbare functies) (vec2:vector2d): de Hoeveelheid {VAR hoek: = aantal wiskundige. "(dit normalise () dotproduct (.. vec2. Normalise ())); vec1:vector2d = het var. DUPLICATE (); als (vec1. Vectorproduct (vec2) < 0) {- * * * * * * * = 1;}, stap terug de hoek;}, 16: - module is de doos nodig voor hun eigen richting, ze ziet er prachtig uit.Anders zie je een als deze ketens.(de pijl.), de volgende functies van knooppunten in de goede richting, private functie updateorientation (): ongeldig {(VAR I: eenheid = 0; ik < ikinechain.length - 1; I + +) {VAR -: ikinechain [M] = aantal. Ikchild. Getvec2parent getangle (().); ikinechain [M] = geblokkeerd. Draaien. ();}}, stap 17: het laatste punt, nu, alles is geregeld, kunnen we de ketting gebruikt, animate ().Dit is een complexe functie, updateparentposition () (), en updateorientation, maar voordat dit gerealiseerd kan worden, moeten we alle - relatie.We bellen, updaterelationships ().Nogmaals, updaterelationships (), is een complexe functie, defineparent () (),,, definechild.Dit is een keer, als er in de keten van structurele veranderingen, zoals de toevoeging of schrapping van node is op de vlucht, stap in ikine, 18: de methode van essentieel belang, om je ikine klasse werk, dit zijn je moet rekening worden gehouden met verschillende methoden.Ik geregistreerd in een vorm van de input van de methode voor de parameters, de rol van de lastchild:ikshape ikine (), afstand van de fabrikant.Appendnode nodenext:ikshape (), [afstand: cijfers anglestart: aantal, angleend: aantal] - toegevoegd aan de ketting, dat de definitie van de gezamenlijke beperkingen.(de) updaterelationships familierechtelijke betrekkingen geen bijwerking van alle knooppunten.Animate () niet te berekenen van alle gemeenschappelijke standpunten in de keten.Elk beeld moet worden genoemd.Vanuit het oogpunt van de grootte, de aandacht van input niet.,, 19 stap: het creëren van een slang, laten we nu het creëren van een project in de FlashDevelop.In deze map zal je zien Main.as veranderen.Dit is wat je moet doen, de volgorde van de taken: ikshape of tot uitbreiding van het podium ikshape te kopiëren. Ikine en het te gebruiken om op het podium ikshape keten, bijgewerkt exemplaar in de keten. Alle knopen in een relatie, dat controle op de gebruikers, animatie.,, 20: vaststelling van voorwerpen, maatregelen voor de bouw van een ikshape getrokken.Het is een cyclus.Let op, als je wilt veranderen in een cirkel van de kaart van de toekomst, die opmerking 56 en 57 - opmerking.Je moet dit werk. Download mijn bron voor privé - functie), drawobjects ():void {(VAR I: eenheid = 0; ik < totalnodes; I + +) {VAR currentobj:ikshape = nieuwe ikshape (); ///////var currentobj: bal = nieuwe bal (); currentobj.name = & "B &" + Ik; addchild (currentobj);}}, 21: - keten, stap in ikine gestart voor de wijziging van het Main.as keten van privé - variabelen. Particuliere var currentchain:ikine; particuliere var LastNode:ikshape; particuliere var totalnodes: eenheid = 10; de situatie hier, alle - 40 - beperking van de afstand tussen de privé - functie, initchain (): {this.lastnode = het ongeldig. Getchildbyname (& "B &" + (totalnodes - 1)Als ikshape); currentchain = nieuwe ikine (LastNode, 40); (VAR I: eenheid = 2; ik < = totalnodes; I + +) (currentchain. Appendnode (deze. Getchildbyname (& "B &" + (totalnodes ik)) voor de ikshape, 40, radianof geblokkeerd. (30), radianof geblokkeerd. (30));} currentchain. Updaterelationships (); /slangen in het centrum van het podium.Currentchain. Getlastnode (.) X = stage.stagewidth /2; currentchain. Getlastnode (). Y = stage.stageheight /2}, 22: toevoeging van het toetsenbord, stap, een stap in de richting van de variabelen, in onze verklaring is om gebruik te maken van onze controle van het toetsenbord, de locomotief van de leadingvec: vector2d; particuliere var currentmagnitude: het aantal particuliere var currentangle = 0;: aantal = 0; particuliere increaseang: hoeveelheid = 5; var particuliere var increasemag: hoeveelheid = 1; particuliere var decreasemag: hoeveelheid = 0,8; particuliere var capmag: hoeveelheid = 10; particuliere var pressedup:. - = valse; particuliere var pressedleft: booleaanse = valse; particuliere var pressedright: booleaanse = vals, extra; in de fase van de hoofdkringloop en het toetsenbord.Ik heb benadrukt dat particuliere ondernemers, hun functie. E: gebeurtenissen = nul): ongeldig {removeEventListener (event.added_to_stage ervan); ///////input. Drawobjects (); dit. Initchain (); leadingvec = nieuwe vector2d (0, 0); - fase. AddEventListener (event.enter_frame, handleenterframe); addEventListener (fase. Keyboardevent.key_down, handlekeydown); - fase. AddEventListener (keyboardevent.key_up, handlekeyup);}, schrijf het publiek, private functie handleenterframe (E: gebeurtenissen) {zoals:. (pressedup = = waar) {currentmagnitude + = increasemag; currentmagnitude = wiskunde. Min (currentmagnitude, capmag} {*); of currentmagnitude = decreasemag;} als (pressedleft = = = = = = = = = = = = = radianof waar) {currentangle verstopping (increaseang);} als (pressedright = = waar) {currentangle + = geblokkeerd. Radianof (increaseang);} leadingvec. Opnieuw gedefinieerd (currentmagnitude, currentangle); var futurex: hoeveelheid = leadingvec. X + LastNode. X; var op: de hoeveelheid = leadingvec. Y + LastNode. Y; futurex = (0, stage.stagewidth implementbound. Futurex).,. In de toekomst = geblokkeerd. Implementbound (0, stage.stageheight, in de toekomst,); LastNode. X = futurex; LastNode. Y = de toekomst; lastnode.rotation = geblokkeerd. (leadingvec. Getangle ()); currentchain. Animate (); handlekeydown (e) privé - functie: mobiele): invaliditeit (= = {als je toetsenbord.) {pressedup = waar;} als (= = toetsenbord. Links) {} pressedleft = waar; anders als (vrouw = = toetsenbord){pressedright = echt privé - functie;}} handlekeyup (E: mobiele): invaliditeit ({als = = toetsenbord, pressedup = vals) (;) als (= = toetsenbord. Links) {} pressedleft = vals; anders als (vrouw = = toetsenbord. Rechts) {pressedright = vals;}} dat gebruik ik een slang in de fase van de vector2d voorbeelden om te bewegen.Ik ook de beperking van de vector binnen de grenzen van fase, dus niet bewegen.De behandelingen te beperken.,, stap 23: animatie.Een slang gezien, zoals CTRL animatie.Met de pijl van de beweging van de controle, en is tot de conclusie gekomen dat de les is, moet een analyse van de vector van kennis.De lezers willen vector een bekende ogen, Daniel sidhon op na te lezen.Hoop dat het je helpt te begrijpen en de uitvoering van het omgekeerde.Bedankt voor het lezen.Niet opgeven, aanbevelingen en opmerkingen, omdat ik altijd benieuwd naar het publiek.Dank je wel.
Het creëren van een omgekeerde beweging
Previous:Industrie nieuws: 31 weken 2011