Actualizările de conținut în Flash pot fi dificile și consumatoare de timp din cauza numeroaselor etape implicate. Citirea pur și simplu a conținutului dintr-un fișier XML înseamnă că importarea de noi active și recompilarea SWF nu mai este necesară. Acest tutorial va acoperi încărcarea dinamică a imaginilor dintr-un fișier XML și tratarea neconcordanțelor în dimensiunile imaginilor utilizând biblioteca de animație GreenSock Tween Max.
Să aruncăm o privire la o captură de ecran a prezentării finale pe care o vom strădui:
Imaginile și exemplele de interfață sunt furnizate utilizând Flash CS4 și Actionscript 2, dar alte versiuni ale Flash încă din versiunea 8 ar trebui să poată urma fără probleme. Acest tutorial presupune cel puțin o cunoaștere activă a Actionscript, deoarece nu voi explica fiecare linie, însă chiar dacă pur și simplu copiați și inserați, ar trebui să puteți reuși acest lucru.
Cu un proiect de acest tip, este important să păstrați totul organizat, astfel încât Flash să poată găsi lucrurile așa cum le are nevoie. Deci, creați un folder de proiect pe computerul dvs. unde puteți plasa TOATE fișierele legate de acest proiect.
Găsiți imagini pentru prezentarea dvs. Am folosit mai multe imagini de la http://www.sxc.hu (sxc_hu_410471_5588.jpg, sxc_hu_1151936_79441078.jpg, sxc_hu_1152040_85122875.jpg, sxc_hu_1154131_54136948.jpg).
Creați un dosar cu "active" în dosarul proiectului. Deschideți editorul de imagini preferat și redimensionați-vă fotografiile, astfel încât toate acestea să aibă o dimensiune similară. Am redimensionat imaginile, astfel încât cea mai lungă parte (înălțime sau lățime) este de 700px și permite software-ului de editare a imaginii să mențină proporția imaginii.
Deoarece activele externe nu beneficiază de un preloader Flash, acest lucru ar fi un moment excelent pentru optimizarea imaginilor pentru descărcări rapide. Flash poate încărca fișiere png, jpeg sau gif, astfel încât imaginile finale să fie într-unul din aceste formate și să le salveze în dosarul de materiale pe care tocmai l-ați creat.
Redimensionați-vă scena pentru a fi puțin mai mare decât imaginile pe care le-ați creat în Pasul 2. Scopul este să vă asigurați că imaginile afișate vreodată nu sunt eliminate în prezentarea finală. Am folosit 800px x 800px pentru a da imaginilor de 700px 50px de spațiu pe toate laturile. Acum este, de asemenea, un moment bun pentru a schimba rata de cadre la 30fps pentru tranziții frumoase și alegeți o culoare de fundal la alegerea dvs..
Redenumiți "stratul 1" în "fundal". Creați un strat nou și numiți-l "conținut". Creați încă un strat și numiți-l "script" și este o idee bună să închideți acest strat. Orice plasați pe stratul de fundal se va afișa în spatele prezentării. Dacă vă uitați la exemplu, textul se află în acest strat.
Utilizați obiectul desen pentru a crea un pătrat alb pe scenă. Selectați pătratul și convertiți-l la un simbol (F8). Asigurați-vă că punctul de înregistrare este în colțul din stânga sus și apelați clipul "shell". Dați clipului un nume de instanță a "shell_mc".
În interiorul "shell_mc" selectați caseta albă și convertiți-l la un simbol (F8). Din nou, asigurați-vă că înregistrarea este în partea stângă sus și denumiți clipul "fundal". Dați noului filmClip un nume de instanță a "background_mc". În cele din urmă, denumiți stratul "fundal" și blocați-l.
În interiorul "shell_mc" creați un nou strat numit "text". Utilizați instrumentul de text pentru a crea textul static care spune "încărcarea imaginii". Mutați textul la x: 20 și y: 20 astfel încât să se termine sub imagine.
Creați un alt strat nou în interiorul "shell_mc" numit "imagini". Creați un film golClip numit "pics", apoi trageți-l din bibliotecă în stratul nou creat "imagini". Mutați clipul la x: 10 și y: 10 și dați-i un nume de instanță pentru "pics_mc".
În interiorul "shell_mc" creați un strat de mai sus "imagini și nume" mască ". Faceți un nou pătrat, convertiți-l într-un filmClip numit "mască" și dați-i un nume de instanță "mask_mc". Deplasați clipul la x: 10 și y: 10.
Faceți clic dreapta pe stratul "mască" și selectați Mască. Asigurați-vă că pictogramele stratului "mască" și "imagine" se modifică pentru a arăta ca exemplu.
În interiorul "shell_mc" creați un strat deasupra "mască" și denumiți-l "cadru". În paleta de unelte, selectați o culoare cursă și o altă culoare de umplere, apoi creați un pătrat pe stratul "cadru". Selectați zona de umplere și ștergeți-o, lăsând doar marginea. Faceți dublu clic pe margine pentru ao selecta și ao converti la un filmClip numit "frontieră". Dați filmulClip și numele instanței "border_mc" și plasați-l la x: 10 și y: 10.
Reveniți la linia de timp a rădăcinii și selectați "shell_mc". Accesați panoul proprietăți și răsuciți săgeata Filtrelor. Faceți clic pe pictograma mică a paginii și selectați umbră. Acest lucru va aduce o adâncime mică.
Am terminat cu Flash pentru moment și trebuie să creați un fișier XML pentru a urmări imaginile noastre. Deschideți editorul de text preferat (aproape orice poate edita codul HTML) și creați un fișier nou. Salvați fișierul în dosarul proiectului ca content.xml. Acum trebuie să adăugăm o structură fișierului, astfel încât Flash să înțeleagă cum să folosească informațiile, putem face acest lucru cu următorul cod:
Acum trebuie să adăugăm căi spre toate imaginile din prezentare (astfel Flash va "găsi" imaginile). În interiorul
Salvați fișierul și închideți editorul de text.
Vom folosi o bibliotecă tweening pentru a ne anima tranzițiile între imagini, deschideți astfel browserul dvs., accesați http://blog.greensock.com/tweenmaxas2/ și faceți clic pe butonul "descărcați AS2" din partea de sus. Deschideți fișierul zip pe care l-ați descărcat, apoi copiați dosarul "gs" și conținutul acestuia în folderul proiectului.
Este timpul să vă întoarceți la fișierul dvs. Flash și să începeți să scrieți ceva Actionscript. Selectează primul cadru din stratul "script" și deschideți Panoul de acțiuni (Fereastră> Acțiuni). Următorii pași vă solicită să editați conținutul ferestrei Acțiuni, de aceea, de acum încolo voi face referire la aceasta ca la "script". Pe măsură ce treceți prin pașii de mai jos, veți vedea tot scriptul creat până la acel punct, cu cele mai noi adăugiri evidențiate.
Primul lucru pe care trebuie să-l facem este includerea clasei tween pe care am descărcat-o astfel încât să se compileze la crearea swf-ului. Adăugați în scriptul dvs. următorul cod:
import gs. *; import gs.easing. *;
(Linii suplimentare: 3-15)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; photos_xml.onLoad = function (succes) if (succes) // ----------- incarcare de succes altceva // ----------- problemă de încărcare, verificare cale urmărire ("Eroare la încărcarea fotografiilor_xml"); photos_xml.load (xmlPath);
Acest lucru creează un nou obiect XML care vizează fișierul nostru "content.xml". Deoarece fișierele XML nu se încarcă instantaneu, este important să verificați încărcarea completă. Facem acest lucru cu callback-ul onLoad care așteaptă încărcarea fișierului xml și apoi efectuează o acțiune.
Mai întâi trebuie să creăm un matrice numită "imageList". Odată ce fișierul xml este încărcat, vom aloca datele matricei, astfel încât să fie mai ușor de accesat mai târziu.
(Linii suplimentare: 7,10)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); photos_xml.load (xmlPath);
Creați un obiect de încărcător imagine utilizând clasa movieClipLoader și utilizați apelurile înapoi pentru a iniția comenzi atunci când filmul începe / termină încărcarea.
(Linii suplimentare: 17-27)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void photos_xml.load (xmlPath);
După obiectul încărcătorului, avem nevoie de o funcție pentru a determina imaginile corecte. De asemenea, trebuie să adăugăm o variabilă pentru a urmări imaginea curentă. În interiorul funcției "loadImage", "loadURL" este setat la atributul XML pentru calea imaginii. Definiți un nou filmClip (targetClip) pentru un container pentru a încărca imaginea și pentru a seta acel container să aibă opacitate zero cu proprietatea _alpha.
Ultimul pas în funcție este de a încărca imaginea în container (imageLoader.loadClip). De asemenea, dorim să executați comanda "loadImage" imediat ce XML-ul a terminat cu succes încărcarea.
(Linii suplimentare: 11,18,31-38)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void loadImage () var loadURL = imageList [currentImage] .attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip ("pic" + currentImage, shell_mc.pics_mc.getNextHighestDepth ()); targetClip._alpha = 0; // încărcați noua imagine imageLoader.loadClip (loadURL, targetClip); photos_xml.load (xmlPath);
Construiți o funcție de temporizare care va apela funcția "loadImage" la fiecare 5000 milisecunde (5 secunde). Inițiați cronometrul atunci când are imaginea terminat încărcare, prin plasarea apelului în apelul onLoadComplete.
(Linii suplimentare: 29, 32-34)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția loadImage () var loadURL = imagineList [actualImage] .attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip ("pic" + currentImage, shell_mc.pics_mc.getNextHighestDepth ()); targetClip._alpha = 0; imageLoader.loadClip (loadURL, targetClip); photos_xml.load (xmlPath);
Trebuie să redimensionăm "background_mc", "border_mc" și "mask_mc" ca dimensiune a imaginii încărcate. Biblioteca TweenMax / TweenLite este destul de ușor de utilizat. Sintaxa este TweenLite.to (clip destinație, timp în secunde, proprietăți: valoare, tip de ușurință); De asemenea, dorim ca imaginea să se estompeze după ce a fost încărcată, astfel încât setați _alpha to tween la 100% în cadrul onLoadComplete.
(Linii suplimentare: 25-27,31)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția removePrevious () if (prevImg! = undefined) removeMovieClip (prevImg); // incrementați imaginea curentă dacă (currentImage < imageList.length -1) currentImage = currentImage + 1; else currentImage = 0; function loadImage() var loadURL = imageList[currentImage].attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip("pic"+currentImage,shell_mc.pics_mc.getNextHighestDepth()); targetClip._alpha = 0; imageLoader.loadClip(loadURL,targetClip); photos_xml.load(xmlPath);
Mai întâi găsiți centrul scenei împărțind înălțimea treptei cu 2 și lățimea treptei cu 2. Apoi, deoarece punctul de înregistrare al carcasei se află în partea stângă sus, deplasați clema în stânga centrului scenei cu jumătate lățimea cochiliei și până la jumătatea înălțimii cochiliei (variabilele clipXTarg și clipYtarg calculează numerele pentru fiecare imagine nouă). Este important să utilizați funcția Math.round () astfel încât numărul final să nu conțină o zecimală - aceasta forțează poziția finală la un pixel complet.
(Linii suplimentare: 28-30)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția loadImage () var loadURL = imagineList [actualImage] .attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip ("pic" + currentImage, shell_mc.pics_mc.getNextHighestDepth ()); targetClip._alpha = 0; imageLoader.loadClip (loadURL, targetClip); photos_xml.load (xmlPath);
Trebuie să găsim imaginea încărcată anterior pentru a fi eliminată. Evident, dacă imaginea curentă este una unde în mijlocul listei, atunci imaginea anterioară este una mai mică decât numărul curentImage. Cu toate acestea, dacă imaginea curentă este egală cu zero, atunci imaginea anterioară (presupunând că prezentarea de diapozitive a străbătut fiecare imagine) ar fi ultima imagine din matrice sau imageList.length - 1. Luați numărul imaginii anterioare și formați calea filmului coajă anterioară a imaginii.
(Linii suplimentare: 32-37)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); dacă (actualImage == 0) var prevImgNum = imageList.length -1; altfel var prevImgNum = currentImage - 1; var prevImg = shell_mc.pics_mc ["pic" + prevImgNum]; loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția loadImage () var loadURL = imagineList [actualImage] .attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip ("pic" + currentImage, shell_mc.pics_mc.getNextHighestDepth ()); targetClip._alpha = 0; imageLoader.loadClip (loadURL, targetClip); photos_xml.load (xmlPath);
Apoi vrem să decolorăm imaginea anterioară și atunci când ajunge la zero _alpha trebuie să scoatem clipul din stadiu în întregime. Modul onComplete: removePrevious așteaptă până când se termină decolorarea și apoi apelează un "removePrevious". Ca măsură de siguranță, este întotdeauna o idee bună să vă asigurați că clipul pe care încercăm să-l eliminăm de fapt. Prin urmare, utilizați o declarație "if" pentru a verifica dacă clipul nu este nedefinit (Cuvântul lui Flash pentru nu există).
(Linii suplimentare: 38,50-54)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); dacă (actualImage == 0) var prevImgNum = imageList.length -1; altfel var prevImgNum = currentImage - 1; var prevImg = shell_mc.pics_mc ["pic" + prevImgNum]; TweenLite.to (prevImg, 0.25, autoAlpha: 0, onComplete: removePrevious); loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția removePrevious () if (prevImg! = undefined) removeMovieClip (prevImg); funcția loadImage () var loadURL = imageList [actualImage] .attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip ("pic" + currentImage, shell_mc.pics_mc.getNextHighestDepth ()); targetClip._alpha = 0; imageLoader.loadClip (loadURL, targetClip); photos_xml.load (xmlPath);
Acum trebuie să creștem valoarea curentă, astfel încât atunci când cronometrul să se finalizeze, Flash știe ce imagine să se încarce în continuare. La fel ca imaginea precedentă, dacă imaginea curentă este un număr, cu excepția ultimei imagini din listă, pur și simplu adăugăm unul la numărul curent. Cu toate acestea, dacă imaginea curentă este ultimul element din listă, atunci imaginea "următoare" va începe lista cu prima imagine din listă (poziția zero în matrice).
(Linii suplimentare: 55-59)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); dacă (actualImage == 0) var prevImgNum = imageList.length -1; altfel var prevImgNum = currentImage - 1; var prevImg = shell_mc.pics_mc ["pic" + prevImgNum]; TweenLite.to (prevImg, 0.25, autoAlpha: 0, onComplete: removePrevious); loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția removePrevious () if (prevImg! = undefined) removeMovieClip (prevImg); dacă (actualImage < imageList.length -1) currentImage = currentImage + 1; else currentImage = 0; function loadImage() var loadURL = imageList[currentImage].attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip("pic"+currentImage,shell_mc.pics_mc.getNextHighestDepth()); targetClip._alpha = 0; imageLoader.loadClip(loadURL,targetClip); photos_xml.load(xmlPath);
Cele mai multe funcții Actionscript apar aproape instantaneu, însă încărcarea imaginilor necesită o anumită perioadă de timp. Acest timp depinde de viteza de conectare la rețea și dimensiunea imaginii și, prin urmare, poate dura câteva secunde. Trebuie să scoatem cronometrul până când imaginea sa terminat de încărcat, astfel încât expunerea de diapozitive să fie o durată consistentă după încărcarea imaginii. O linie simplă de cod (clearInterval) elimină intervalul de 5 secunde până când este resetat de către setInterval care rulează din nou.
(Linie suplimentară: 66)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); dacă (actualImage == 0) var prevImgNum = imageList.length -1; altfel var prevImgNum = currentImage - 1; var prevImg = shell_mc.pics_mc ["pic" + prevImgNum]; TweenLite.to (prevImg, 0.25, autoAlpha: 0, onComplete: removePrevious); loadListener.onLoadComplete = funcția (target_mc: MovieClip): Void TweenLite.to (target_mc, 0.25, autoAlpha: 100, delay: 0.25); setTimer (); funcția setTimer () timer = setInterval (loadImage, 5000); funcția removePrevious () if (prevImg! = undefined) removeMovieClip (prevImg); dacă (actualImage < imageList.length -1) currentImage = currentImage + 1; else currentImage = 0; function loadImage() var loadURL = imageList[currentImage].attributes.imgurl; var targetClip = shell_mc.pics_mc.createEmptyMovieClip("pic"+currentImage,shell_mc.pics_mc.getNextHighestDepth()); targetClip._alpha = 0; clearInterval(timer); imageLoader.loadClip(loadURL,targetClip); photos_xml.load(xmlPath);
În cele din urmă, trebuie să oprim cronologia. Funcția prestabilită a funcției Flash este de a reda temporal linia temporală, cu excepția cazului în care se specifică altceva În cazul în care există doar un cadru pe cronologie, Flash va continua să încerce să ruleze același cod de peste și peste din nou, rezultând în aceeași imagine încercând să încărcați în mod repetat.
(Linie suplimentară: 72)
import gs. *; import gs.easing. *; var xmlPath = "content.xml"; var photos_xml = nou XML (); photos_xml.ignoreWhite = true; var imageList: Array = Array nou (); photos_xml.onLoad = funcție (succes) if (succes) // ----------- încărcare succes imageList = photos_xml.firstChild.childNodes; loadImage (); altceva // ----------- problemă de încărcare, verificați urmărirea căii ("Eroare la încărcarea fotografiilor_xml"); var actualImage: Număr = 0; var imagineLoader: MovieClipLoader = nouClipClipLoader (); var loadListener: Object = obiect nou (); imageLoader.addListener (loadListener); loadListener.onLoadInit = funcția (target_mc: MovieClip, httpStatus: Number): Void TweenLite.to (shell_mc.background_mc, 0.25, _width: target_mc._width + 20, _height: target_mc._height + 20, ease: Quad.easeOut ); TweenLite.to (shell_mc.border_mc, 0.25, _width: target_mc._width, _height: target_mc._height, ease: Quad.easeOut); TweenLite.to (shell_mc.mask_mc, 0,25, _width: target_mc._width, _height: target_mc._height, usurinta: Quad.easeOut); var clipXTarg = Math.round ((Stage.width / 2)) - ((target_mc._width + 20) / 2)); var clipYTarg = Math.round ((Stage.height / 2)) - ((target_mc._height + 20) / 2)); TweenLite.to (shell_mc, 0.25, _x: clipXTarg, _y: clipYTarg, usurinta: Quad.easeOut); dacă (actualImage == 0) var prevImgNum = imageList.length -1; altfel var prevImgNum = currentImage - 1; var prevImg = shell_mc.pics_mc ["pic" + pr