Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 14:23 Der 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 :-)
Avatar billede rohaje Nybegynder
05. oktober 2004 - 15:08 #1
har ikke testet det men noget lign kunne gøre det:

objektliste = "instanceNavn,instanceNavn2,jegvedikkehvormangeobjekter";
objektArr = objektliste.split(",");
interval = 20;
ease = 100;
acc = 10;
maxSpeed = 4;
for (n=0; n<objektArr.length; n++) {
    navn = _roo[objektArr[n]];
    navn.ease = ease;
    navn.alf = 100;
    navn.teller=0;
    navn.tal=n*interval;
    // skal der lidt porno på kan du sætte intervallet ned
    interval*=0.99;//eller lign
    navn._alpha = 0;
    navn.onEnterFrame = komfrem;
}
function komfrem() {
    if (this.teller<this.tal) {
        teller++;
    } else {
        this.ease += (maxSpeed-this.ease)/acc;
        this._alpha += (this.alf-this._alpha)/ease;
        if (Math.round(this._alpha) == this.alf) {
            this.onEnterFrame = false;
        }
    }
}
Avatar billede rohaje Nybegynder
05. oktober 2004 - 15:11 #2
måske skulle du lige tilføje:

  if (Math.round(this._alpha) == this.alf) {
//denne linie her
            this._alpha=this.alf;
//
            this.onEnterFrame = false;
        }
    }
}
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 15:31 #3
Kan det passe at alle mine graphic's elementer skal konventeres til movie clips for at kunne få et instance name?
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 15:41 #4
For at holde det helt basalt.
Min scene kører med 25fps.

Hvis jeg har nedenstående kode:

this.background1._alpha = 0;
for (i = 0; i <= 100; i++) {
    this.background1._alpha += 1;
}


Hvad skal der så ændres så den er f.eks. 5 sekunder om at fade fra alpha 0 til alpha 100?
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 16:13 #5
Slet ingen.
Jeg er slet ikke sikker på ovenstående virker, men er der ingen der lige kan hjælpe mig?
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 16:13 #6
rohaje's eksempel er garanteret fint, men jeg skal lige have det basale med for at fatte :-)
Avatar billede rohaje Nybegynder
05. oktober 2004 - 16:16 #7
frame raten vil variere alt efter regnekraft men i princippet 25 gange i sc.

ja dine graphic's skal være movieclips

men dit eksempel virker ikke for den opdatere først _alpha efter loopet er gennemført,, du bliver nød til at lave et onEnterFrame loop
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 16:20 #8
Så jeg skal skrive?

Jeg vil gerne have alle koderne for de forskellige movie clips samlet i min frames actions.
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 16:36 #9
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.
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 19:14 #10
Ok, jeg prøver at omformulere mit spm da det ser ud til at være gået i stå :-)

Hvordan kan jeg skrive kode i min frames action, som fader movie clips frem?
Avatar billede rohaje Nybegynder
05. oktober 2004 - 20:33 #11
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
Avatar billede rohaje Nybegynder
05. oktober 2004 - 20:33 #12
har du prøvet det?
Avatar billede rohaje Nybegynder
05. oktober 2004 - 20:42 #13
//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;
        }
    }
}
Avatar billede rohaje Nybegynder
05. oktober 2004 - 20:42 #14
Det var en lidt simplere version med forklaring til,, håber du kan bruge det

mvh

Robert
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:00 #15
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);
        }
    }
}
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:02 #16
Nu har jeg dette:

objectList = "MC1,MC2,MC3,MC4,MC5,MC6,MC7,MC8,MC9,MC10,MC11,MC12,MC13,MC14,MC15,MC16,MC17";
objectArray = objectList.split(",");
delay = 50;
for (i=0; i<objectArray.length; i++) {
    mcName = _root[objectArray[i]];
    mcName.counter = 0;
    mcName.number = i*delay;
    mcName._alpha = 0;
    mcName.onEnterFrame = fadeIn;
}
function fadeIn() {
    if (this.counter<this.number) {
        counter++;
    } else {
        this._alpha += 10;
        if (this._alpha>=100) {
            this.onEnterFrame = false;
        }
    }
}

Det fader godt nok den første MC (MC1) ind fint, men går ikke videre til MC2, MC3 osv.?
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:09 #17
Yes sir! Det virker!

Takker mange gange... Laver du ikke et svar :-D
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:09 #18
prøv det nye eksempel

der mangler en this.
i linien

counter++;

så den bliver til

this.counter++;
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:11 #19
Når jeg tester så skriver den mit array ud i et output vindue efterhånden som mc'erne kommer frem.

Vil den også gøre det når jeg pakker filen endeligt?

Eller er det trace(this._name) som skal slettes?
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:12 #20
når du har numererede mc-navne behøver du ikke objectArray halløjet,, vidste bare ikke om du havde navngivet med alt muligt.

for (i=0; i<objeantal; i++) {
    mcName = _root["MC" +(n+1)];
    mcName.counter = 0;
    mcName.number = i*delay;
    mcName._alpha = 0;
    mcName.onEnterFrame = fadeIn;
}
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:13 #21
nej,, trace er kun når du tester i flash og er en måde at følge-med i koden på,, den er ikke til at unvære.
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:13 #22
undskyld det skal selvfølgelig være i og ikke n

  mcName = _root["MC" +(i+1)];
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:14 #23
du skal starte med at angive
objeantal=17
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:16 #24
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
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:21 #25
Kan man på en meget nem måde sørger for at MC7 kun fader ind til 75%?
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:23 #26
Er du sikker på at det første eksempel fungerer?

Jeg har prøvet dette:

objektliste = "MC1,MC2,MC3,MC4,MC5,MC6,MC7,MC8,MC9,MC10,MC11,MC12,MC13,MC14,MC15,MC16,MC17";
objektArr = objektliste.split(",");
interval = 20;
ease = 100;
acc = 10;
maxSpeed = 4;
for (n=0; n<objektArr.length; n++) {
    navn = _roo[objektArr[n]];
    navn.ease = ease;
    navn.alf = 100;
    navn.teller=0;
    navn.tal=n*interval;
    // skal der lidt porno på kan du sætte intervallet ned
    interval*=0.99;//eller lign
    navn._alpha = 0;
    navn.onEnterFrame = komfrem;
}
function komfrem() {
    if (this.teller<this.tal) {
        teller++;
    } else {
        this.ease += (maxSpeed-this.ease)/acc;
        this._alpha += (this.alf-this._alpha)/ease;
        if (Math.round(this._alpha) == this.alf) {
            this.onEnterFrame = false;
        }
    }
}

Der sker ingenting. Vil gerne have det lidt mere porno ;-)
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:26 #27
Ok, der manglede this. i teller++ og _roo skal være _root :-)
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:28 #28
nej der en fejl eller to som jeg lige kan se,, jeg retter det lige og smider det igen
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:30 #29
Det er som om dit forslag (det mere porno) ikke fader helt frem???
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:31 #30
prøv det her

objektliste = "MC1,MC2,MC3,MC4,MC5,MC6,MC7,MC8,MC9,MC10,MC11,MC12,MC13,MC14,MC15,MC16,MC17";
objektArr = objektliste.split(",");
interval = 10;
ease = 100;
acc = 10;
maxSpeed = 4;
for (n=0; n<objektArr.length; n++) {
    navn = _root[objektArr[n]];
    navn.ease = ease;
    navn.alf = 100;
    navn.teller=0;
    navn.tal=n*interval;
    // skal der lidt porno på kan du sætte intervallet ned
    interval*=0.99;//eller lign
    navn._alpha = 0;
    navn.onEnterFrame = komfrem;
}
function komfrem() {
    if (this.teller<this.tal) {
        this.teller++;
    } else {
        this.ease += (maxSpeed-this.ease)/acc;
        this._alpha += (this.alf-this._alpha)/this.ease;
        if (Math.round(this._alpha) == this.alf) {
            trace(this._name);
            this.onEnterFrame = false;
        }
    }
}
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:34 #31
Var der en nem måde hvorpå man fortæller nogen af MC'erne hvor meget de skal fade in (f.eks. kun 75%)?

P.S. Det er mit sidste spm i denne omgang ;-)
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:36 #32
man burde nok lige
if (Math.round(this._alpha) == this.alf) {
            trace(this._name);
// sette der her ind
this._alpha=this.alf;
//

            this.onEnterFrame = false;
        }
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:39 #33
Det er alf der bestemmer hvor alpha skal hen så set alf=75;

men det vil sætte alle alpha til 75


du kan lave en alfArray

alfArray=[70,100,75,40,100,,, osv

navn.alf=alfArray[n]
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:42 #34
Ok, laver du ikke et svar?

Det har været til rigtig meget hjælp!!! :-D
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:43 #35
ease = 100;
acc = 10;
maxSpeed = 4;
du kan stille lidt på dem her for at få det rigtigt

ease er udgangs hastigheden den sætter alpha til 1/100 af forskel mellem alf og alpha'en

ease gøres midre og mindre i hver frame , så hastigheden øges

til sidst miskes den lidt igen fordi 1/4 af forskellen , som er maxSpeed bliver mindre og mindre jo mindre forskellen er..
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:44 #36
God fornøjelse,, :)
Avatar billede wampiro-uha Nybegynder
05. oktober 2004 - 21:47 #37
TAK!
Avatar billede rohaje Nybegynder
05. oktober 2004 - 21:48 #38
tak, for point
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester