bygge en isometriske kort redaktør med as3isolib

, opbygge et isometriske kort redaktør med as3isolib,,,,, 1,,,,,,,,, 16,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning,   vil jeg   indføre   dig til begrebet isometriske skabelse af indhold og grundlaget for udformningen af det, anvendelse af open source - bibliotek as3isolib.vi vil bruge disse evner til at skabe en enkel plan redaktør, der passer til isometriske spil.,,, endelige resultat forpremiere, lad os tage et kig på det endelige resultat, vi arbejder hen imod:,,, og omvendt er blevet mast lidt til at passe i den side, tryk her for at se det store størrelse.,, trin 1: hvad betyder "isometriske", for det første, er det vigtigt at vide, hvad vi mener med, isometriske,.isometriske er en   græske   udtryk, der betyder,   under samme måling:   alle målinger skal omfang, uanset hvor meget tæt på eller langt i den afstand, de er fra det synspunkt.så i   matematik, isometriske projektion er en form for projektion, som   bevarer   afstand langs objekter. hvis du er i et isometriske   synspunkt, og de vil have en 3d synspunkt (f.eks. når et kamera tager et billede af dig, hvor ligegyldigt. du vil blive vist i samme omfang i henhold til kamera.det er i modsætning til et reelt perspektiv, hvor du vil blive reduceret, når du er langt væk fra kameraet.,, as3isolib tager sig af alle de underliggende matematik involveret i udformningen af dine scener og synspunkter, så du skal ikke bekymre dig om det.,, trin 2: hvad har de på?de er baseret på, er et begreb, der anvendes til grafiske indhold, der anvender fliser som en fundmental element.selve begrebet er lidt gammel - - det blev brugt i gamle numre af tekniske årsager, - - men det betyder ikke, at de på spil er nu død. disse dage 3d destruktion er, men disse 3d spil kan være fliser baseret (og andre).det er hvor isometriske spil, kom ind.fliser er normalt rektangulært, men der er også square fliser, trekantet fliser og endog sekskantede fliser (som i en civilisation titler.,, trin 3: rektangulære kort mod isometriske kort, rektangulære fliser er den nemmeste at arbejde med, men det meste af tiden, når de arbejder i rektangel jord, du bruger square..du kan bruge andre dimensioner, naturligvis, men square, synes at være en favorit.det synspunkt, at lege med kvadratiske fliser normalt er top - down - eller ovenover.det betyder bare, at alle dine billeder skal anvendes, som om du er kigger ned på objektet.nogle gange kan du give din leg lidt vinklede perspektiv, så du ser mest ned, men du kan se nogle af foran eller bagved. et andet synspunkt for firkantede fliser er "side scroller" mener, at når du ser verden fra dens side.det var meget populær blandt ældre aktion spil som super mario brothers og den oprindelige 2d duke "nukem".i en rektangulær kort, bevæger sig langs x - akse: bevæger sig mod øst, og bevæger sig langs x - akse: bevæger sig sydpå.i en isometriske tilemap, afhængigt af, hvilken type, bevæger sig langs x - aksen kan betyde, at man bevæger sig mod sydøst, og bevæger sig med y - aksen, kan betyde, at man bevæger sig mod sydvest.   i isometriske fliser, vi bruger stadig rektangulære områder kommer til at indeholde de fliser; dette er ikke ændret.hvad vil du gøre dem.,, (redaktionel note: en god guide til forskellige typer overslag kan blive fundet her.), trin 4:   isometriske kort former, der er tre typer isometriske tilemaps: glide, forskudt og diamant.hver har sine egne særheder, sine egne metoder til at gøre sin egen måde at repræsentere en tilemap og sin egen metode til at navigere.jeg vil præsentere dem   kort   i dette skridt.,, glide kort:,   glide tilemap sandsynligvis er den nemmeste at gøre, at navigere og interagere med.det har desværre begrænset   anvendelser.det er hovedsagelig anvendes til at rulle ind spil.   normalt et objektglas kort har en horisontal x - akse og et diagonalt y - aksen, selv om det er muligt at have en lodret y   akse og et diagonalt x - akse.fliserne er blitted i vandrette rækker fra top til bund.,, forskudt kort:,   forskudt kort virker perfekt igen baseret strategi spil.det er også meget nyttigt ved simulering af en rundt i verden; det er bedst egnet til kort at nå rundt om (flytter fra en fordel til den anden).hver ny række af kortet er skiftevis over halvdelen af en flise i venstre eller højre, hvilket resulterer i en zigzag - fliser.x - aksen er normalt horisontale (stigende til east), og y - aksen er det sydøstlige og sydvestlige.forskudt kort er den mest uregelmæssige af tre.fliserne er blitted i vandrette rækker, fra top til bund.,, diamond kort: denne type kort er meget populær i realtid strategi spil.disse kort er mindst krænkende, glide kort har "stykke" top og bund, der fordeles kort har "stykke" kanter, så diamant kort er   bedste.   i diamant - kort, kun krav om, at både den x - y - aksen er   og diagonal, så du kan øge x - aksen eller y - akse, som passer dig ligesom x - aksen stigende til sydvest - og y - aksen i sydøst.,, tid til at kode, det er nok sammenhæng... tid til at begynde at udvikle!,, løntrin 5:   downloade as3isolib, det første skridt er at downloade as3isolib (actionscript 3 isometriske bibliotek), som er en åben kilde bibliotek for at skabe isometriske planlagte indhold.et eksempel på et spil, der er skabt med det   imperier og allierede fra   zynga., det indeholder nogle aktiver, som   primitive   former (kvadratisk eller rektangulær form, ubearbejdet, terninger, osv.), og nogle virksomheder for at lette oprettelsen af din isometriske indhold.det er også gratis og kan anvendes i alle kommercielle arbejde, men du kan   donere   til det, hvis du ønsker det. lad os nu at downloade det fra   her.efter at downloade det pakker alt ud   zip dossier til en ny mappe og hedder det  , redaktør,., til enhver tid, mens de anvender as3isolib du kan henvise til sin dokumentation i denne forbindelse, trin 6: oprettelse af den scene, tænd - og skabe en ny actionscript 3,0 rammelåneaftale. nu er vi nødt til at importere psd fil til niveau redaktør grænseflade, som jeg har skabt (det er læren kilde - filer), eller du kan ændre den grænseflade, hvad føler du ser godt ud.så klik på fil > import > import til fase udvælger psd fil, og markere "fase størrelse til samme størrelse som   photoshop   lærred" mulighed. nu har vi den rå billeder til vores redaktør.vi er nødt til at skabe vores dokument, klasse i, som vi vil gennemføre vores redaktør: i   egenskaber   panel i offentliggøre afsnit finder du en klasse område; skrive cdoc og klik på blyant knap.gem den actionscript fil, der forekommer, og navnet på det cdoc.,, skridt: at gøre de knapper, lad os gøre vores tre knapper i bunden panel; højre klik på knap baggrund image og udvælge konvertere til symbol, kan lide, hvad du ser i billedet, så omdøbe den knap til, btnclear, indsættes følgende tekst   i den op, ned og slog, vinduesrammer og type i det klare alt.i de ramte lande og indsæt den image som i skærmbillede.,, så gentag dette trin til at gøre de resterende to knapper.,, trin 8: oprettelse af tekniske vurderingsorganer, nu vil vi skabe de tre tabletter: en af dem vil være til soild farver,   en anden for   sten, og den sidste en til græs. drage en sort gradient rektangel, right-click på og vælge konvertere til symbol, navn til regning og vælge den type til en film magasin.nu mark eksport til actionscript mulighed, så i klasse område skrive ctab, som vil klassen navn for denne regning film magasin., double click på regningen film magasin og indsætte tekst i det derinde, skriv navn.denne tekst vil blive ændret med navnet på det tekniske vurderingsorgan, således at dette, omdanne denne tekst til dynamisk tekst med det navn, txt, ligesom på billedet nedenfor.,, trin 9:   gennemførelse af   vores tab, nu har vi en film magasin for vores regning, er vi nødt til at instantiate tre kopier af det og dem, så lad os gøre det i vores dokument, klasse, pakke (import flash.events.mouseevent; import flash.text.textfield; import flash.display.movieclip; offentlige klasse ctab udvider movieclip {offentlige var txt: textfield; offentlige funktion ctab (navn: serie) (txt = this.txt som textfield; txt.text = navn; addeventlistener (mouseevent.roll_over, onrollover, falsk, 0, sande); addeventlistener (mouseevent.roll_out, onrollout, falske, 0, sand).} beskyttede funktion onrollover e: mouseevent): ugyldig (this.alpha = 0, 9;} beskyttede funktion onrollout e: mouseevent): ugyldig (this.alpha = 1}}}, pakke (import flash.display.movieclip; import flash.events.event; import flash.events.mouseevent; offentlige klasse cdoc udvider movieclip (//instantiating de tekniske vurderingsorganer private var fast: ctab; private var sten: ctab; private var græs: ctab; offentlig funktion cdoc() {addeventlistener (event.added_to_stage, onaddedtostage, falske, 0, sande)} beskyttede funktion onaddedtostage e: begivenhed): ugyldig (//oprettelse af tekniske vurderingsorganer fast = nye ctab ("fast"); fast. y = 469; fast. addeventlistener (mouseevent.click, onsolidclick,falsk, 0, sande); addchild (fast); mursten = nye ctab ("sten"); mursten. y = 494 og mursten. addeventlistener (mouseevent.click, onbricksclick, falske, 0, sande); addchild (mursten); græs = nye ctab ("græs"); græs. y = 521. græs. addeventlistener (mouseevent.click, ongrassclick, falske, 0, sande); addchild (græs)} beskyttede funktion onsolidclick e: mouseevent): ugyldig (//vil blive gennemført senere} beskyttede funktion onbricksclick e: mouseevent): ugyldig (//vil blive gennemført senere} beskyttede funktion ongrassclick e: mouseevent): ugyldig (//vil blive gennemført senere}}}, gå 10: at skabe isometrisk afbildning, lad os lære om en af de vigtigste ting, -n as3isolib: isometrisk afbildning, som tjener som et kamera, der viser isometriske objekter.det er en masse nyttige funktioner, som lukker og zoomer og fokusere på et punkt eller en genstand.det giver også mulighed for at skjule /magasin genstande uden for unionens grænser, og lad os ændre sin baggrund og forgrund indhold. vi vil skabe to synspunkter i vores plan redaktør, den første er vores   viewport  , som vil have et net i det og også genstand for vores   niveau, den anden opfattelse er for genstande browser, der vil have en masse objekttyper, der kan anvendes i forbindelse med udviklingen af plan. nu vil vi tilføje følgende kode i vores cdoc klasse... sørg for at se den nummerering, eller bare se på kilden filer af tutor. //tilføje denne linje før konstruktøren private var viewport: isoview;, viewport = nye isoview(); viewport. setsize (800, 600); viewport. centeronpt (nye pt (- 100, 100, 0), falske); addchildat (viewport, 0); viewport. addeventlistener (mouseevent.mouse_down, onstartpan, falske, 0, sande); viewport. addeventlistener (mouseevent.mouse_wheel, onzoom, falske, 0, sande); i første linje, vi har lavet vores isoview og hedder det, viewport, derefter i anden linje, vi satte sin størrelse til 800x600px.skal vi placerer det på et punkt eller en genstand, så vi skabte et nyt punkt fra den indbyggede, as3isolib.geom, pakke og gav det en x - og y - værdier i 3d isometriske rum, som vi vil drøfte i næste trin). nu er vi nødt til at vise vores viewport, så vi tilføjede den til - liste over dokumentet som et barn, og at gøre det i bunden af vores grænseflade til at sørge for, at det ikke kommer til at overlappe andre element, tilføjede vi det på indeks 0.så vi tilføjede to tilfælde lyttere på vores viewport, en for - og den anden til zoomer (som igen vil jeg forklare senere.,, trin 11:   kartesiske   vs.   isometriske rummet, koordinatsystem anvendes i flash kaldes  , kartesiansk koordinere  , system.  , de kartesiansk koordinatsystem der er gitter baseret (bestående af mange lige store imaginære pladser), med en vandret akse, kaldet  , x - aksen  , og en lodret akse, kaldet  , y, som i den øverste venstre hjørne af nedenstående billede. den isometriske rum er lidt anderledes; hver af de tre akser, anføres samme størrelse   og vinkler mellem to af dem er 120 grader.as3isolib er en måde til at omdanne et punkt fra kartesiske koordinater til isometriske (og omvendt) ved at  , isomath. screentoiso (punkt: pt) til at omdanne en vej, og  , isomath. isotoscreen (punkt: pt), omregner de andre.,, trin 12: at skabe den scene, er det meget enkelt at skabe isometriske scene, som vil holde vores ting.(disse ting vil blive overtaget fra isodisplayobject   (eks. isobox, isorectangle, isosprite osv.), som er   basen klasse, at alle primitive og komplekse isometriske display objekter er at udvide.), vil vi   instantiate   en ny isoscene og så tilføje vores scene til viewport vises, //tilføje dette. før dennes private var scene: isoscene;, scene = nye isoscene(); viewport. addscene ("), trin 13:   oprettelsen af nettet, for at tilføje et net i viewport, vi skal blot instantiate en ny isogrid så vi kan fastsætte sine bredde og længde på 10 for at give os en 10x10 net.vi kan også fastlægge sin celle størrelse til, hvad vi vil (jeg tog 30).det sidste og meget vigtige skridt er at tilføje nettet til gerningsstedet. //tilføje dette, før dennes private var net: isogrid; - = nye isogrid(); net. setgridsize (10, 10, 1); grid.cellsize = 30 scene. addchild (net), punkt 14: at gøre den scene, vi er nødt til at tilføje en begivenhed til at lytte til, at den scene, og det er meget simpelt, bare tilføje til at lytte og i sin krop til, render(), funktion på stedet. //tilføje denne kode i onaddedtostage lytter addeventlistener (event.enter_frame, onrender, falske, 0, sande), privat funktion onrender e: begivenhed): ugyldig (scene. render();}, gå 15: gennemførelse af den nedadvendte panel knapper i dette skridt vil vi tilføje lyttere   for klik begivenheder på nedadvendte panel knapper, men først wbehovet for at få adgang til dem, som vi kan gøre med den funktion, getchildbyname(),., den første begivenhed kontaktperson for, klart, knap, vil vi fjerne alle   børn   i stedet, og så har vi brug for at tilføje det.i, der er egnet til skærmen, knap, vi vil sætte den nuværende zoom af viewport til 1, som nulstilles til dets misligholdelse, så vil vi se dig til dets misligholdelse   holdning   med, panto(), funktion.den endelige knap er, hvor vi vil vise /skjule oprindelsen af nettet, så vi vil vende den skærm; hvis det er vist, at vi vil skjule det, og omvendt. det. getchildbyname ("btnclear"). addeventlistener (mouseevent.click, onbtnclearclick, falske, 0, sand). getchildbyname ("btnfit"). addeventlistener (mouseevent.click, onbtnfitclick, falske, 0, sand). getchildbyname ("btnshow"). addeventlistener (mouseevent.click, onbtnshowclick, falske, 0, sande), beskyttede funktion onbtnclearclick e: mouseevent): ugyldig (scene. removeallchildren(); scene. addchild (grid)} beskyttet funktion onbtnfitclick e: mouseevent): ugyldig (viewport.currentzoom = 1; viewport. panto (- 100, 100);} beskyttede funktion onbtnshowclick e: mouseevent ugyldig (hvis (g):rid. showorigin) grid.showorigin = falske; andre grid.showorigin = sandt.}, trin 16: viewport - 1, da vi skabte vores viewport vi tilføjet en begivenhed til at lytte til mouse_down begivenhed.i dette tilfælde lytter vi vil håndtere starten af panorering. vi vil først skabe et punkt og hedder det, panpt, som en global punkt at bruge det på forskellige steder, da det vil klare fastlæggelse af mus i hvert billede.vi giver den x - og y - positioner i mus (jeg vil forklare, hvorfor der i det næste trin)., så fjerner vi de mus ned begivenhed til at lytte og tilføje to nye omstændigheder lyttere: en for den faktiske håndtering af - og andre, når vi ikke vores panorering. private var panpt: pt; private funktion onstartpan e: mouseevent): ugyldig (panpt = nye pt (stage.mousex, fase. mousey); viewport. removeeventlistener (mouseevent.mouse_down, onstartpan); viewport. addeventlistener (mouseevent.mouse_move, onpan, falske, 0, sande); viewport. addeventlistener (mouseevent.mouse_up, onstoppan, falske, 0, sande)), skridt 17:   viewport - 2, denne begivenhed til at lytte, kaldes når musen bevæger sig, og hvad det betyder, er meget enkel: det dele den viewport i henhold tilx - og y - positioner i mus er oprindelige holdning at panorere, minus dens aktuelle positioner, til at beregne forskellen i stedet fra sidste frist.så sætter vi den x - og y - at den nuværende mus holdninger. privat funktion onpan e: mouseevent): ugyldig (viewport. panby (panpt. x - stage.mousex, panpt. y - fase. mousey); panpt. x = stage.mousex; panpt. y = stage.mousey;}, gå 18:   viewport - 3, når vi stopper - er vi nødt til at fjerne den, onpan, og onstoppan tilfælde lyttere, som vi ikke behøver dem mere, så at tilføje, onstartpan, begivenhed til at lytte til at lade brugerne pan viewport igen. privat funktion onstoppan e: mouseevent): ugyldig (viewport. removeeventlistener (mouseevent.mouse_move, onpan); viewport. removeeventlistener (mouseevent.mouse_up, onstoppan); viewport. addeventlistener (mouseevent.mouse_down, onstartpan, falske, 0, sande)}, skridt 19:   viewport zooming, vi tilføjede, onzoom, mouse_wheel begivenhed til at lytte   tidligere, så nu vil vi gennemføre den. det er meget enkelt: at vide, hvis musen bevæger sig op eller ned, vi er nødt til at kontrollere   ejendom   af mus begivenhed (e), som kaldes "delta. hvis det er større end 0, så bør vi zoome ind, ellers bør vi zoome ud.for at gøre dette har vi   tilvækst eller dekrement   zoom - værdi.det sidste skridt er at fastsætte viewport er, currentzoom, ejendomsret til vores zoom værdi. private var zoomvalue: antal = 1; private funktion onzoom e: mouseevent): ugyldig (hvis (e.delta > 0) zoomvalue + = 0,10; hvis (e.delta < 0) zoomvalue - = 0,10; viewport.currentzoom = zoomvalue;}, huske på, at vi ikke havde nogen   grænse   kontrol i zoom værdier eller lukker, hvilket betyder, at du kan zoome eller pan lyset for enden af scenen.det er meget nemt at tilføje dem, men det vil jeg overlade til dig. gå 20:   skabe objekter panel, efter at vores viewport og lægge sin   funktioner, er vi nødt til at skabe de genstande, som vi kan se vores panel i genstande og overføre dem til den viewport. vi starter med at skabe en ny isometriske scene, ved navn, objectscene, at holde vores ting.så skaber vi et nyt isometrisk afbildning at gøre ting i stedet, og dens størrelse 215x468px, som passer til objekter panel.nu må vi tilpasse det, så vi placerer det på grund af 40x80px.endelig vil vi tilføje, objectscene, til, objectview ved, addscene(), funktion og tilføje objectview til visning af vores dokument. //tilføje denne kode i onaddedtostage lytter objectscene = nye isoscene(); objectview = nye isoview(); objectview. setsize (215, 468); objectview. centeronpt (ny pt (40, 80, 0), falske); objectview. addscene (objectscene); addchild (objectview), gå 21:   skabe solide farvede genstande, nu er vi nødt til at skabe en solid farvede genstande til fast regning, så vil vi tilføje et klik med musen, beskyttede funktion onsolidclick tilfælde til at lytte. e: mouseevent): ugyldig (objectscene. removeallchildren(); var p: pt = nye pt (0, 0), var solidcolors: array = [0xd15415, 0xff6600, 0xffcc00, 0x66ff00, 0xff6699, 0x6699ff, 0x99ff00, 0xff0066]; (var - jeg: int = 0. jeg < 8; jeg + +) (hvis (i%, 2 = = 0) (p.x = 0, p.y + = 50} var mål: isorectangle = nye isorectangle(); mål nr. setsize (30, 30, 0); obj.fill = nye solidcolorfill (solidcolors [i] 1); isomath. screentoiso (p); mål til (p.x, p.y, 0); isomath. isotoscreen (p). p.x + = 80; mål nr. addeventlistener (mouseevent.roll_over, onrolloverhandler, falske, 0, sande); mål nr. addeventlistener (mouseevent.roll_out, onrollouthandler, falske, 0, sande); mål nr. addeventlistener (mouseevent.click, onobjclick, falske, 0, sande); objectscene. addchild (mål); objectscene. render();}}, vi først fjerne alle børnene fra, objectscene, to fjerne alle genstande, hvis vi faktisk bedt om en regning.   anden  , vi er nødt til at fremsætte en bemærkning til   butik   x - og y - positioner af genstande, så laver vi en række faste farver og en farve hex værdier i den.efter at vi vil få en sløjfe, som vi vil skabe, vores otte genstande og vise dem i et kvadratnet.så vi skaber hver isometriske rektangel, ved hjælp af en indbygget as3isolib   isometriske primitive form, og dens størrelse 30x30px og udfylde sin farve med en farve (også bygget i as3isolib), med en værdi fra vores system, med en alpha 1. nu er vi nødt til at ændre vores værdier bliver i isometriske koordinater så vi bruger de førnævnte, screentoiso(), funktion, så vores mål for den nye holdning, og at nulstille vores punkt være i skærm koordinater - - det gør det let for os at   tilpasse   vores genstande i et kvadratnet med vores   bekendt   skærm (kartesiske koordinater,) mens vi flytter vores objekter med, hvad der passer dem bedste (isometriske koordinater). så vi   forøgelse   x - værdi af 80 og tilføje tre tilfælde lyttere: de første to vil handle den roll_over begivenheder, for at protestere, når rullede rundt, og den tredje vil håndtere klik begivenheder.endelig tilføjer vi genstand til gerningsstedet og gjort alt.,, skridt 22:   at brick objekter, dette skridt er meget lig den   tidligere  , bortset fra, at vi ændrer array - indholdet til vores mursten, som vi vil skabe, og import i vores næste skridt, beskyttede funktion onbricksclick e: mouseevent): ugyldig (objectscene. removeallchildren(); var p: pt = nye pt (- 20 - 10) var sten: array = [bricks1, bricks2, bricks3, bricks4, bricks5, bricks6, bricks7, bricks8]; (var - jeg: int = 0. jeg < 7; jeg + +) (hvis (i%, 2 = = 0) (p.x = - 30; p.y + = 50} var sprite: isosprite = nye isosprite(); isomath. screentoiso (p), sprite. til (p.x, p.y, 0); isomath. isotoscreen (p). p.x + = 80; sprite.sprites = [mursten [i]] sprite. addeventlistener (mouseevent.roll_over, onrolloverhandler, falske, 0, sande); sprite. addeventlistener (mouseevent.roll_out, onrollouthandler, falske, 0, sande); sprite. addeventlistener (mouseevent.click, onobjclick, falske, 0, sande); objectscene. addchild (sprite); objectscene. render();), den anden forskel fra tidligere skridt er, at vi har skabt en isometriske sprite genstand, hvis vi kan   helt   ændring for at være, hvad vi vil, og vi tilføjede vores mursten til det ved en henvisning til, sprite.sprites, der er et system af ånder. nu kan du skabe græsset objekter, ligesom vi gjorde med den sten, du har brug for at bare skift, mursten, system til, græs, array.,, gå 23: at skabe konsistens aktiver, vil vi gøre vores strukturaktiver, så begynder en ny flash - dokument og importere vores aktiver fra et billede eller fra en psd fil.fra fil klik, import > import   til fase, så vælger at importere de lag, som bitmap billede med redigerbar lag styles. skal vi nu til at omdanne alle bitmap til en film, klip af lige klikke på den, og at omdanne til symbol, så skriver sit navn som i sten og græs arrays (, brick1,, brick2, osv.), mark, eksport til runtime deling, valg og type, textures.swf, url - område.endelig kommer til at indgive > offentliggøre indstillinger, og mark swc mulighed i, offentliggør afdeling, så klik offentliggøre.nu har vi en swc, der indeholder alle vores værdier, som vi kan importere i vores leveleditor anvendes.,,, skridt 24: import tekstur aktiver, er det meget enkelt at importere vores swc fil.fra menuen klik, actionscript indstillinger, og fra, bibliotek vej, tab og flash - knap, som findes i billedet nedenfor, og kigge på vores swc.,, det er det!nu er vores aktiver er læsset, gå 25: genstande "mus rulle funktioner, er vi nødt til at håndtere mus begivenheder for vores objekter... husk   i skridt, 18. og 19. vi har tilføjet tre tilfælde   lyttere   for hver genstand.vi vil gennemføre den roll_over begivenhed lyttere i denne enkle skridt. jeg vil gerne have vores ting at have en glød virkning, når vi ruller over det, så har vi brug for at få adgang til objekter, selv.for det as3isolib har en indbygget begivenhed type ringede, proxyevent, som vi kan bruge til at få adgang til tilfælde objekt ved hjælp af via e.target.vi skal sætte det som, isodisplayobject, (som er basisklasse for enhver isometriske display genstand), for at gøre denne begivenhed til at lytte, så generelle som muligt, og så tilføje en glød filtreres ved hjælp af flash er indbygget filtre. den første parameter i den, glowfilter, konstruktøren er dens farve; den anden er en alpha, som vi vil bare sat til 1; vi vil forlade blurx og blury værdier på deres misligholdelse, 6, som vi behøver ikke udviskes, og endelig vil vi sætte kvaliteten - 64. i ruller ud fører, vil vi bare nulstil filtre, privat funktion onrolloverhandler e: proxyevent): ugyldig (var glød: glowfilter = nye glowfilter (0xc24704, 1, 6, 64); (e.target som isodisplayobject). container.filters = [-]} privat funktion onrollouthandler e: proxyevent): tomrum {(e.target som isodisplayobject). container.filters = []}, gå 26: klare klik på de ting, den tredje begivenhed til at lytte til vores ting er det klik begivenhed.hvad vil der ske, når man klikker på ethvert objekt?vi er nødt til at lave en kopi af det i viewport og tilføje en drag og smid   facilitet   til det, for at gøre det let for os at flytte til et sted i stedet. det er meget let at gøre det.vi vil først skabe et objekt af typen, isodisplayobject, og give det vores mål, at vi sammen, ligesom vi har gjort før. nu er vi nødt til at klone klikkede genstand; det er let, som as3isolib har bygget i metode, clone(),, som tilhører, isodisplayobject, klasse, der returnerer et kopi af de klonede objekt med dets   - dimensionel   og stil egenskaber.dette vil fungere perfekt for isometriske rektangel genstande (, som vi har skabt i farve regning), men med nisser "- sagen (mursten og græs), er, at vi også må kopi ånderne system for hver genstand, så laver vi en simpel kontrol for at se, om det er af en type, isosprite, og hvis dens ånder   ejendom   ikke er nul, så vil vi fastsætte målet er nisser,   ejendom   svarer til den klikkede objekt er nisser,., - - så vil vi flytte vores genstande opad (på z - aksen) 50 for at undgå overlapning med nettet.endelig vil vi tilføje tre tilfælde lyttere for vores skabt formål: to af dem for væltekontrol /ud - - og den sidste til at håndtere hiv og smid (som vi vil dække i de næste skridt, så tilføje vores objekt til vores scene, og gøre det. og beskyttet funktion onobjclick e: proxyevent): ugyldig (var - mål: isodisplayobject = e.target som isodisplayobject; mål = mål. clone(); hvis (mål er isosprite & & (mål som isosprite). nisser!= null) {(mål som isosprite). ånder = (e.target som isosprite). ånder.} mål til (0, 0, 50); mål nr. addeventlistener (mouseevent.roll_over, onrolloverhandler, falske, 0, sande); mål nr. addeventlistener (mouseevent.roll_out, onrollouthandler, falske, 0, sand). mål. addeventlistener (mouseevent.mouse_down, onpickup, falske, 0, sande); scene. addchild (mål); scene. render();}, skridt 27: drag og - 1, der er endnu et tilfælde til at lytte til, onpickup, som er en mouse_down begivenhed til at håndtere starten på slæb.vi vil begynde med at skabe en privat variable ringede, dragobject,, der vil være af typen, isodisplayobject, til anvendelse i   reference   til vores slæbte genstand, som den fremgår af dens navn.vi vil også skabe et punkt til at håndtere den holdning, den har trukket objekt. i pickup 'en handler vi vil tildele trukket imod vores, dragobject, variable, så at indhente de nuværende isometriske punkt af mus, vi bruger, viewport. localtoiso() metode.dette punkt vil være nyttig i beregningen af afstanden mellem de slæbte genstand og de nuværende mus holdning, det vil også stoppe slæbte ting fra mig til mus holdning. endelig skal vi fjerne denne begivenhed til at lytte, når vores genstand opsuges, vi ønsker ikke at tage det op igen!i stedet vil vi tilføje,   to tilfælde lyttere for falder: en til slæbte genstand og en anden til viewport.endelig kan man spørge, hvor den faktiske flytte sker. svaret er, at det, der sker i, onmoveobject, kontaktperson, som vi vil dække i den næste og sidste trin. private var dragobject: isodisplayobject; private var dragpt: pt; private funktion onpickup e: proxyevent): ugyldig (dragobject = e.target som isodisplayobject; dragpt = viewport. localtoiso (nye pt (stage.mousex, fase. mousey)); dragpt. x - = dragobject. x; dragpt. y - = dragobject. y. dragobject. removeeventlistener (mouseevent.mouse_down, onpickup); dragobject. addeventlistener (mouseevent.mouse_up, ondrop, falske, 0, sande); viewport. addeventlistener (mouseevent.mouse_up, ondrop, falske, 0, sand).viewport. addeventlistener (mouseevent.mouse_move, onmoveobject, falske, 0, sande)}, skridt 28: drag og smider 2, de to sidste begivenhed lyttere for vores plan redaktør, ondrop, - - som bare   fjerner   alle lyttere for slæbte formål og viewport,  , for når et objekt er tabte disse. lyttere vil være nytteløse, - - hvor vi skal tilføje, onpickup, lytter til formål at gøre med trak, og at der igen. for at gøre det muligt for   faktiske   flytning af en genstand, tager vi et punkt, som svarer til mus holdning i   isometriske   rummet og vores mål i henhold til udligning mellem mus er oprindelige holdning og dens nuværende holdning, privat funktion ondrop e: omstændigheder ugyldig (dragobj):ect. removeeventlistener (mouseevent.mouse_up, ondrop); viewport. removeeventlistener (mouseevent.mouse_up, ondrop); viewport. removeeventlistener (mouseevent.mouse_move, onmoveobject); dragobject. addeventlistener (mouseevent.mouse_down, onpickup, falske, 0, sande)} privat funktion onmoveobject e: mouseevent): ugyldig (var - pt: pt = viewport. localtoiso (ny pt (stage.mousex, fase. mousey)); dragobject. til (pt. x - dragpt. x, pt. - dragpt. y, dragobject. z)}, konklusion i denne forelæsning, vi  , der er omfattet   resten af open source - bibliotek as3isolib og skabe isometriske indhold med det isometriske kvadratisk eller rektangulær form, ubearbejdet og nisser.vi har også  , der er omfattet  , hvordan man laver scener, kameraer og net, og   en masse nyttige emner som panorering, zoomer ind, - - og falder. nu kan du begynde at skabe din isometriske flash - projektet med as3isolib.pas på min næste forelæsning, om at lave et spil med as3isolib.jeg håber, du har det sjovt.,

Step 1
Types of isometric map
Step 6
Step 7
Step 8
Step 11
Step 23
Step 23
Step 22
Step 21



Previous:
Next Page: