bygge en dynamisk flash galleri med en kontrol

, bygge en dynamisk flash galleri med en kontrol,,,,, andel,,,,,,,,,,,,,,, det cyber - mandag envato tuts + kurser vil blive reduceret til $3.- og' t miss.,, i denne forelæsning, vil vi skabe et galleri, som udviser alle image filer i et bestemt register.våbnet er brugt til at gennemse let gennem billeder.,,,, trin 1, har oprettet et nyt syn as3 dokument og en blank actionscript fil.vi skal skabe de vigtigste klasse første; navn "galleri" og redde det som "galleri.".nedenfor er koden til at etablere den første klasse:, pakke (offentlige klasse galleri {offentlige funktion gallery(): ugyldig (}), flash - kan vi nu stille det som udgangspunkt i klasse ved navn i input kasse under offentliggøre indstillinger af dokumentet.du kan prøve en "spor ('hello verden)" i tilhørerlogen funktion for at teste, om det virker.,, trin 2, inden vi fortsætter med de vigtigste klasse, - - er det bedst at begynde med den skyder.koden er let at forstå og kunne kaste lidt lys over, hvordan tingene foregår i as3., skabe to nye movieclips: en slæde og klare for ål.de slider eller seekeren behøver ikke at blive eksporteret til actionscript, som vi behøver kun at anvende visse funktioner til håndtaget.sæt den klasse, de behandler som "klare".nu kan vi skabe en ny klasse, som hedder "klare", og hvis reddede i det samme register, flash automatisk vil bruge denne klasse for at håndtere.giv en omgang navn, såsom "skyder" og "thehandle".,, trin 3, som er den fulde kode for den klare, som jeg vil forklare i trin.det bør blive reddet "klare" i det samme register som din. rammelåneaftale. på denne måde, flash vil udføre den kode, når et tilfælde med en klasse navn "klare" anvendes, pakke (import flash.display.movieclip; import flash.events.mouseevent; import flash.events.event; offentlige klasse klare udvider movieclip {offentlige var gotox: antal = x; private var en: movieclip = movieclip (moderstof). en privat var mousepos: antal = 0, offentlig funktion handle(): ugyldig (buttonmode = sandt. addeventlistener (mouseevent.mouse_down, movehandle) fase. addeventlistener (mouseevent.mouse_up, stophandle)} privat funktion movehandle (_e: mouseevent): ugyldig (mousepos = mousex; fase.ddeventlistener (mouseevent.mouse_move, followhandle)} privat funktion stophandle (_e: mouseevent): ugyldig (fase. removeeventlistener (mouseevent.mouse_move, followhandle)} privat funktion followhandle (_e: mouseevent): ugyldig (var - newpos: antal = stage.mousex - mousepos, var orgx: antal = x; hvis (newpos < slider. x) gotox = slider. x; andre, hvis (newpos > (slider. x + slider. bredde) - bredde) gotox = (slider. x + slider. bredde) - bredde; andre gotox = newpos; x = gotox; hvis (gotox!= orgx) dispatchevent (nye tilfælde ("glider" sande)}}}, i de første linjer, skaber vi et par variabler til at holde oplysninger vi kan bruge i hver funktion i denne klasse.de slider variabel indeholder en henvisning til den instans, kaldet "skyder" på moderselskabet.vi har brug for det korrekt at beregne x holdning, som de håndterer skal flyttes.i den pågældende vi "buttonmode" rigtigt, så en hånd markør dukker op, når der svæver over den klare.desuden er vi tilføje to eventlisteners at lytte til mus begivenheder. offentlige klasse klare udvider movieclip {offentlige var gotox: antal = x; private var en: movieclip = movieclip (moderstof). en privat var mousepos: antal = 0, offentlig funktion handle(): ugyldig (buttonmode = sandt. addeventlistener (mouseevent.mouse_down, movehandle); stadie. addeventlistener (mouseevent.mouse_up, stophandle)}, når en mus ned begivenhed indtræffer, en ekstra til at lytte til.denne person bliver aktiv, så længe de slæber bevægelighed ikke bliver stoppet, og kalder det "followhandle" funktion.det er fjernet igen, når det klik med musen er slut. privat funktion movehandle (_e: mouseevent): ugyldig (mousepos = mousex; stadie. addeventlistener (mouseevent.mouse_move, followhandle)} privat funktion stophandle (_e: mouseevent): ugyldig (fase. removeeventlistener (mouseevent.mouse_move, followhandle)} denne funktion faktisk bevæger sig den klare omkring.variablen "newpos" butikker, den nye situation for de klare burde flytte.men hvis denne holdning er længere end det yderste venstre eller højre af ål, den holdning, bør fastsættes til den størst mulige værdi.hvis håndtaget er flyttet, sender vi en ny skik begivenhed "glider", som vi senere kan bruge til at bevæge sig rundt i billeder, privat funktion followhandle (_e: mouseevent): ugyldig (var - newpos: antal = stage.mousex - mousepos, var orgx: antal = x; hvis (newpos < slider. x) gotox = slider. x; andre, hvis (newpos > (slider. x + slider. bredde) - bredde) gotox = (slider. x + slider. bredde) - bredde; andre gotox = newpos; x = gotox; hvis (gotox!= orgx) dispatchevent (nye tilfælde ("glider" sande)}, trin 4, hvis alt går godt, indtil nu, du skal have en god funktionelle slider som en under.tilføje en dynamisk textfield under det, der har billede nummer.giv det et tilfælde navn som "counttxt", så vi kan tage fat på det senere i actionscript.fordi der ikke er noget at vise endnu jeg fyldte det med teksten "-", som også viser, mens manuskriptet belastninger, det første billede,.,, løntrin 5, så vil vi skabe folkesundhedsprogrammet backend manuskript.- kan ikke læse indholdet af et lokalt register, så vi skal videregive oplysninger fra php at flash.vi bruger xml - da det er nemt at produktionen med folkesundhedsprogrammet og lettere at læse igen i as3. følgende er på den backend kode, gem det som "backend. folkesundhedsprogrammet".den kode loops gennem registret "img" og skriver en linje af xml - for hver sag.inden trykningen, vi har brug for til at filtrere det. "" og "..." vejvisere.som registret indeholder kun billeder er der ingen yderligere kontrol nødvendig. < xml > <?php $od = opendir ('img "), mens ($filnavn = readdir ($e) hvis ($filnavn!= "." & & $filnavn!= "..."), echo "< img >".$filnavn. "< /img > \\ n "?> < /xml > det vil for eksempel: produktion, < xml > < img > file1 jpg < /img > < img > file2 jpg < /img > < img > file3 jpg < /img > < /xml >,, trin 6, før vi lægger dette til flash, lad os skabe en klasse for at holde vores billeder individuelt.på samme måde, som vi har skabt klare klasse vi nu kan skabe en img - klasse.begynd med at skabe en movieclip om størrelsen vil du have dine billeder op.giv det en margen på et par pixels og redde nogle rum nederst i beskrivelsen tekst.tilføje en dynamisk tekst inden for beskrivelse og give det et tilfælde af "descr".sørg for, at registrering af den movieclip i midten, så vi kan nemt omfang det senere.eksport til actionscript under klasse navn "img".nu foreligger fra f.eks. den fase, som vi kalder det direkte fra biblioteket.,, trin 7, vi lader oplysningerne på den fil, vender tilbage til vores flash - projektet ved hjælp af actionscript.åbne galleriet klasse igen.følgende kode tilføjer to funktioner til vores projekt.det første, det skaber "imagesclip", en tom movieclip, hvor vi gemmer den faktiske billeder senere.ved "addchild" her tilføjer movieclip på scenen.noget ekstra til imagesclip senere vil også stå på scenen.faktisk byrde xml - data, skaber vi en "urlloader".denne klasse kan hente resultater og har en funktion, når resultaterne er i., pakke (import flash.display.movieclip; import flash.events.event; import flash.net.urlloader; import flash.net.urlrequest; offentlige klasse galleri udvider movieclip (private var backend: string = http: //////////////////////localhost... backend. php; private var xmlloader: urlloader = ny urlloader; private var xdata: xml, offentlige var billeder: array = nye array(); offentlige var imagesclip: movieclip = nye movieclip; offentlig funktion gallery(): ugyldig (imagesclip. y = 180; addchild (imagesclip); xmlloader. belastning (nye urlrequest (backend + "?"+ nye date(). valueof())); xmlloader. addeventlistener (event.complete, loadimages)} privat funktion loadimages (_e: begivenhed): ugyldig (xdata = nye xml (_e.target.data), var jeg: antal = 0; for hver (var - img: xml - i xdata.img) (billeder [i] = nye img(). jeg + +; imagesclip. addchild (billeder [i]);}}}}, her bruger vi den belastning, som funktion af de urlloader klasse.for at forhindre, at kravene til de resultater, vi kan tilføje en enkelt dato for afslutningen af url.den eventlistener kontrol, når de urlloader er færdig, og så løber loadimages funktion. xmlloader. belastning (nye urlrequest (backend + "?"+ nye date(). valueof())); xmlloader. addeventlistener (event.complete, loadimages); den næste funktion loops gennem alle, < img > tilfælde i xml.for hver af disse skaber det en ny instans img - klasse.vi lægger det til den imagesclip (dette er bare for afprøvning, som vi senere vil kun de aktive billeder til at blive udstillet.), privat funktion loadimages (_e: begivenhed): ugyldig (xdata = nye xml (_e.target.data), var jeg: antal = 0; for hver (var - img: xml - i xdata.img) {billeder [i] = nye img(); jeg +; imagesclip. addchild (billeder [i]);}}, trin 8 for at give vores img tilfælde flere funktioner, skabe en img - klasse og redde det som "img.".på samme måde for lastning af xml - vi kan laste billedet sig og vise det i img movieclip.- ikke bør forekomme i konstruktør eller alle billeder ville forsøge at belastning på samme tid, vil vi skabe en særskilt funktion. det her, offentlige klasse img udvider movieclip {offentlige var id: antal; private var src: string; private var imageloader: lad = nye loader(); private var vigtigste: galleriet. private var orgwidth: antal = 0, private var orgheight: antal = 0, konstruktøren, sætter vi en henvisning til de vigtigste galleri klasse, så vi kan senere adgang elementer på scenen eller offentlige variabler og funktioner i de vigtigste klasse.snoren "belastning" vil indeholde vejen til det billede, som php tilbage, redder vi det til en variabel, så vi kan få adgang til det senere, offentlige funktion img (belastning: string, m: galleriet): ugyldig (orgwidth = bredde; orgheight = højde, main = m src = belastning). "loadimage" funktion belastninger image og når du er færdig, dvs. "displayimage" funktion. offentlige funktion loadimage(): ugyldig (imageloader. belastning (nye urlrequest (img /"(src)); imageloader. contentloaderinfo. addeventlistener (event.complete, displayimage)}, displayimage funktion kontrol billederne array - vi skabte og last det næste billede.det fastsætter udjævning til rigtigt på den platform (uden udjævning er fastsat til falske på dynamisk ladt billeder).når du begynder at skære eller roterende et billede, det er vigtigt at fastsætte udjævning, så billedet er fortsat dets kvalitet.som registrering af img movieclip er i midten, er vi nødt til at beregne den x - og y - holdning, hvor for det billede af sig selv.i mit eksempel, jeg har brugt en fortegnelse over billeder med samme bredde og højde.hvis bredde og højde af ladt image er variabel, dette er stedet at resize den direkte.lige før, at det som barn sætter vi den beskrivelse tekst "src", som er navnet på det billede, privat funktion displayimage (_e: begivenhed): ugyldig (hvis (vigtigste. billeder [id + 1].= null & &!vigtigste. billeder [id + 1]. forældre) vigtigste. billeder [id + 1]. loadimage(); bitmap (imageloader.content). udjævning = sandt. imageloader. x = main.spacebetween/2 - (orgwidth /2); imageloader. y = main.spacebetween/2 - (orgheight /2); descr.text = src, addchild (imageloader);}}, trin 9, efter de ændringer, vi foretog til img - klasse, vi har brug for at ajourføre de tilfælde kaldes i loadimages funktion i tilhørerlogen klasse.nu er vi nødt til at vedtage to argumenter, når kalder nye img(). den første er den vej, navnet på det billede, som skal læsses, får vi det fra xml.den anden er en henvisning til de vigtigste galleri klasse. vi kan bruge "det", som viser, at vi er i øjeblikket i klassen.i stedet for at tilføje de billeder med addchild til imagesclip beholder, vil vi skabe en ny funktion "til".denne funktion vil finde ud af, hvilke billeder på skærmen.det argument, som vi skal vedtage, er de id - nummer for det image, det samme antal som indeks nøgle i billeder system.når billederne er lastet for første gang, vi sætter fokus på det første billede, som de id - nummeret er nul, privat funktion loadimages (_e: begivenhed): ugyldig (xdata = nye xml (_e.target.data), var jeg: antal = 0; for hver (var - img: xml - i xdata.img) (billeder [i] = nye img (img, denne); billeder [i]. x = 200 * i billeder [i]. id = jeg; jeg + +) til (0)}, gå 10, for at bruge den til funktion, er vi nødt til at erklære en variabel "imagestoshow" først.dette vil sætte størrelsen af de billeder, vi vil have på én gang på skærmen.for at bestemme, i hvilken retning bruger er nedad, vi kontrollere, om det image, vi skal havde en større eller mindre grad end den sidste. privat funktion til (imgid: antal) ugyldig (var - retning: antal; hvis (orgimgid!= imgid) (hvis (imgid > orgimgid) retning = 1; anden retning = - 1; den næste "for loop" loops alle billeder, der er nødvendige på skærmen.for eksempel: hvis vi sætter imagestoshow til 5, vil det loop - 2 - 2.det betyder, at hvis vi vedtager den værdi af jeg img - klasse, vi kan bestemme, hvor det skal placeres på skærmen (- 2, er langt tilbage, 0 - center og 2 det yderste højre).derfor kan vi omfanget af de billeder, større, mere centralt de er placeret i. der er en yderligere kontrol med, så vi kan ikke aktivere ikke - eksisterende billeder (den stopper ved den første og sidste).for hvert af de aktive billeder, vi kører "makeactive" - funktion, som vi vil skabe senere. for (var - jeg: antal = - matematik. etage (imagestoshow /2); jeg < = matematik. etage (imagestoshow /2); jeg + +) (hvis (imgid + - < images.length & & imgid + jeg > = 0) billeder [imgid + i). makeactive (i retning);}, lige efter at de billeder, vi har brug for på skærmen, vi ser dem som ikke burde være der mere og få dem væk fra scenen.da alle billeder, tilføjes i imagesclip beholder vi nemt kan loop gennem alle børn i den movieclip.hvis deres id ligger ikke inden for dem, der skal være aktiv, løber vi den "deactive". for (var - j: antal = 0; j < imagesclip.numchildren; j + +) (var - fliser: img = imagesclip. getchildat (j) som img; hvis (tile.id < imgid - matematik. sal (imagestoshow /2)



Previous:
Next Page: