rolig, flydende tastatur bevægelse i as3 med input - klasse

, rolig, flydende tastatur bevægelse i as3 med input - klasse,,,,, 3,,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, der er en masse lege derude med jerky, urealistisk bevægelser, og der kan kun en ting til dit produkt: det utiltalende, at publikum.men jævn bevægelse ikke er svært at nå, - - lad os komme i gang!,,,, endelige resultat forpremiere, lad os tage et kig på det endelige resultat, vi arbejder hen imod:,, trin 1: oprettelse af det miljø, det er en straight - forward forelæsning, så oprettelsen vil også være ligetil., skabe en ny actionscript 3,0 flash - projektet.den fase, størrelse og farve betyder ikke, hvad du er komfortabelt. jeg bruger flashdevelop til kodning, men også dette kunne ske i nogen som redaktør, som flash - pro - (eller en tekst, redaktør, måske blok;)).så, skabe en klasse fil, sørg for at din kode ser ret meget som min, se nedenfor.jeg ringede til min "transport".(hvis du bruger flash pro, tjek denne vejledning til at skabe et klasse.), pakke (import flash.display.sprite; offentlige klassekamp udvider sprite {offentlige funktion movement(): ugyldig (}), når du er færdig, sørg for at din klasse er knyttet til flash - projekt, som den vigtigste klasse., 2. trin: skabe plads og variabler, så når du har forbundet den bevægelse, klasse, for at deres dokument, definere de variabler, som jeg gjorde under, pakke (import flash.display.sprite; import flash.events.event; offentlige klassekamp udvider sprite (//den genstand, der vil flytte private var firkantet: sprite; //den maksimale hastighed, private var _max: = 10; //de variabler, der skal anvendes til at flytteden firkantede private var dx: antal = 0, private var dy: antal = 0, offentlig funktion movement(): ugyldig (//lytte til føjet til fase begivenhed addeventlistener (event.added_to_stage, lokalitet)} privat funktion lokalitet (e: begivenhed): ugyldig (removeeventlistener (event.added_to_stage, lokalitet); //skaber en ny sprite og træk i en firkantet square = nye sprite(); square. grafik. beginfill (0x333333); square. grafik. drawrect (0, 0, 30, 30); square. x = stage.stagewidth /2 - square.width /2. pladsen. y = stage.stageheight /2 - square.height /2; addchild (.)}), det er det eneste, vi kan gøre for at skabe et objekt.du kan bruge din egen genstand, men denne enkle bevægelser forelæsning, jeg brugte denne enkle square.,, trin 3: indførelse af input.as klasse, hej gutter, det er input.as klasse; input.as klasse, det er dem, jeg fortalte dig om, - - at dem!:), så hvad er denne klasse, må man spørge sig selv.det er din nøgle til håndtering af job til dig.det er en til at lytte til enter_frame begivenheder - med lav prioritet - og en nøgle til at lytte, som fylder nogle private ordbøger.også det anvender en anden klasse for centrale koder.du kan kigge ind og se, hvordan arbejder. note: input.as klasse tilhører ikke mig.det blev skabt af matthew bush, der bar box2d blinke. //eksempel på input.as klasse anvendelse //du altid at nulstille det som det med scenen parameter input. påbegynd (tidspunkt); //efter starter, du kan bruge kd(), kp() eller ku() metoder, som //tilbage en boolean - værdi hvis betingelserne er opfyldt.//disse metoder acceptere flere argumenter, //så et tilfælde du kan anvende flere nøgler.//. det gør det meget lettere at give adgang til din app.//f.eks. se nedenfor, som jeg bruger en opfordring til påvisning af op pil eller w for op.input. kd ("op", "w"), trin 4: import af klasserne, så nu er du bekendt med input.as klasse, vi bliver nødt til at importere det i vores bevægelse, klasse og aktivere den, pakke (import flash.display.sprite; import flash.events.event; import input, offentlige klassekamp udvider sprite (//den genstand, der vil flytte private var firkantet: sprite; //den maksimale hastighed, private var _max: antal = 10; //de variabler, der skal anvendes til at flytte square private var dx: antal = 0, private var dy: antal = 0, offentlig funktion movement(): ugyldig (/hør til føjet til fase begivenhed addeventlistener (event.added_to_stage, lokalitet)} privat funktion lokalitet (e: begivenhed): ugyldig (removeeventlistener (event.added_to_stage, lokalitet); //skaber en ny ånd og trække i en firkantet square = nye sprite(); square. grafik. beginfill (0x333333); square. grafik. drawrect (0, 0, 30, 30); square. x = stage.stagewidth /2 - square.width /2. pladsen. y = stage.stageheight /2 - square.height /2; addchild (.); //nulstille input.as klasse med kontaktperson på scenen input. påbegynd (tidspunkt); //tilføje genopfriske loop addeventlistener (event.enter_frame, genopfrisk)} privat funktion genopfriske e: begivenhed): ugyldig (}), trin 5: håndtering vigtige input, bruger jeg en enter_frame-based loop til påvisning af de vigtigste råmaterialer; nedenfor, er det, refresh(), metode, som er kontaktperson f- salve til denne begivenhed. privat funktion genopfriske e: begivenhed): ugyldig (//vigtigste kontaktperson, hvis (input. kd ("a", "venstre") (//til venstre} hvis (input. kd ("d", "ikke") (//til den rigtige} hvis (!input. kd ("a", "venstre", "d", "ikke") (//, hvis der ikke er nogen venstre /højre pressede} hvis (input. kd ("w", "") (//videre} hvis (input. kd ("s". "ned") (//ned} hvis (!input. kd ("w", "op", "s", "ned") (//, hvis der ikke er nogen op /ned aktion), trin 6: forklarer beregninger - håndtering af hastighed, det er ret ligetil.at påvise, om en af nøglerne er presset, og handle i overensstemmelse hermed. jeg bruger den ternære operatør, en masse: værdi = tilstand?rigtigt: falsk,,, det er dybest set en hvis erklæring, som er blevet sammentrængt til en enkelt linje. for hver centrale påvisning, jeg anvender denne metode, hvis værdi er større end _max, så sæt det lige, _max,; ellers tilvækst eller dekrement, at særlige værdi, som det er hensigtsmæssigt.denne vej, er det holdes inden for visse grænser.simpelt, ikke?du kan studere, under de betingelser:, privat funktion genopfriske e: begivenhed): ugyldig (//vigtigste kontaktperson, hvis (input. kd ("a", "venstre") (//til venstre dx = dx < 0, 5 - _max?_max * - 1: dx - 0, 5;} hvis (input. kd ("d", "ikke") (//højre dx = dx > _max - 0, 5?_max: dx + 0, 5;} hvis (!input. kd ("a", "venstre", "d", "ikke") (//, hvis der ikke er nogen venstre /højre presset, hvis (dx > 0, 5) {dx = dx < 0, 5?0: dx - 0, 5;} andre {dx = dx > - 0, 5?0: dx + 0, 5;}} hvis (input. kd ("w", "") (//videre undersøgelse = dy < 0, 5 - _max?_max * - 1: dy - 0, 5;} hvis (input. kd ("s", "ned") (//- dy = dy > _max - 0, 5?_max: dy + 0, 5;} hvis (!input. kd ("w", "op", "s", "ned") (//, hvis der ikke er nogen op /ned til handling, hvis (dy > 0, 5) (dy = dy < 0, 5?0: dy - 0, 5;} andre (dy = dy > - 0, 5?0: dy + 0, 5;}} //efter at anvende disse til objekt square. x + = dx; square. y + = dy.}, hvis du ikke er bekendt med den ternære operatør, tag et stykke papir og en pen og skrive et par af dem, i hvis... andet format og det er en stor øvelse for at tage fat på det, der foregår. husk på, jeg manipulerer, brugte, og tør, variabler, og kun de faktiske x - og y - værdier ved udgangen.dette hjælper os gøre forslaget væske; det er ikke fis, som vi ændrer deres værdier, direkte i funktion... nu prøve det!se, hvor godt det går?,, trin 7: håndtering grænse kollisioner, okay.det er rigtigt, at fluidly - men ud af scenen!jeg tilføjede kollision påvisning under betingelser, privat funktion genopfriske e: begivenhed): ugyldig (//vigtigste kontaktperson, hvis (input. kd ("a", "venstre") (//til venstre dx = dx < 0, 5 - _max?_max * - 1: dx - 0, 5;} hvis (input. kd ("d", "ikke") (//højre dx = dx > _max - 0, 5?_max: dx + 0, 5;} hvis (!input. kd ("a", "venstre", "d", "ikke") (//, hvis der ikke er nogen venstre /højre presset, hvis (dx > 0, 5) {dx = dx < 0, 5?0: dx - 0, 5;} andre {dx = dx > - 0, 5?0: dx + 0, 5;}} hvis (input. kd ("w", "") (//videre undersøgelse = dy < 0, 5 - _max?_max * - 1: dy - 0, 5;} hvis (input. kd ("s", "ned") (//- dy = dy > _max - 0, 5?_max: dy + 0, 5;} hvis (!input. kd ("w", "op", "s", "ned") (//, hvis der ikke er nogen op /ned til handling, hvis (dy > 0, 5) (dy = dy < 0, 5?0: dy - 0, 5;} andre (dy = dy > - 0, 5?0: dy + 0, 5;}} //grænse påvisning, hvis (square. x - dx < 0



Previous:
Next Page: