05. oktober 2004 - 14:23Der er
37 kommentarer og 1 løsning
Fade objecter ind, skiftevis.
Jeg har en masse objecter i min scene. Er det muligt med ActionScript at lade dem fade ind, en efter en (altså langsomt tælle AlphaBlending op el. lign).
Skal være sådan så først fader boks1 ind, så boks2 osv.
Og det må gerne være sådan så lige inden boks2 er fadet ind (f.eks. 5 frames før) så fader boks2 ind (altså med forsinkelse).
Jeg kan sagtens lave det manuelt, men hvis man kan lave noget kode ville det være nemmere og mere overskueligt og nemmere at rette i :-)
Jeg kan vist godt få det til at virke hvis jeg i movieclipets action skriver onClipEvent(onEnterFrame) {....
Men jeg vil gerne have koden for dette samlet ude i min frames actions, således at jeg har en oversigt over alle mine movieclips og hvornår de fader ind osv.
mit eksempel giver koden til movie_clip'sne fra et cnetralt script,, scriptet skal bare ligge i den frame hvor tingende skal ske,, i en frame,, hvis du syndes at det er for indviklet tager vi den igen lidt simplere
//er en liste over mc -instance navne der skal fade ind listen er i række følge objektliste = "instanceNavn,instanceNavn2,jegvedikkehvormangeobjekter"; //her laves listen om til en Array objektArr = objektliste.split(","); // dette er forsinkelsen mellem mc'erne når de fader ind; interval = 20; //her er et loop der giver onEnterframe aktion til mc'ne for (n=0; n<objektArr.length; n++) { navn = _root[objektArr[n]]; // teller starter fra 0 navn.teller=0; //her får mc, det tal de skal vente inden de fader ind navn.tal=n*interval; //her sættes mc'ernes alpha til 0 navn._alpha = 0; // her får mc'erne en onEnterFrame function navn.onEnterFrame = komfrem; } // her er funktionen mc'erne får tildelt function komfrem() { //først venter de til det bliver deres tur if (this.teller<this.tal) { teller++; } else { //så fader de ind this._alpha ++; // når de er fadet ind slettes onEnterFrame så den ikke bruger unødige resurser if (this._alpha >= 100) { this.onEnterFrame = false; } } }
der var en lille fejl,,, man skal ikke scripte her i tekstvinduet på eksperten det går galt hver gang:
//er en liste over mc -instance navne der skal fade ind listen er i række følge objektliste = "instanceNavn,instanceNavn2,jegvedikkehvormangeobjekter"; //her laves listen om til en Array objektArr = objektliste.split(","); // dette er forsinkelsen mellem mc'erne når de fader ind; interval = 10; //her er et loop der giver onEnterframe aktion til mc'ne for (n=0; n<objektArr.length; n++) { navn = _root[objektArr[n]]; // teller starter fra 0 navn.teller = 0; //her får mc, det tal de skal vente inden de fader ind navn.tal = n*interval; //her sættes mc'ernes alpha til 0 navn._alpha = 0; // her får mc'erne en onEnterFrame function navn.onEnterFrame = komfrem; } // her er funktionen mc'erne får tildelt function komfrem() { //først venter de til det bliver deres tur if (this.teller<this.tal) { this.teller++; } else { //så fader de ind this._alpha++; // når de er fadet ind slettes onEnterFrame så den ikke bruger unødige resurser if (this._alpha>=100) { this.onEnterFrame = false; trace(this._name); } } }
Denne fade ind er helt liniær og lidt kedelig at se på, det første eksempel er lavet med en easein og easeout effect,, hvis du har mod på det skulle du kigge lidt på det,, det giver tingende en bedre feel
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.