Avatar billede davidchristensen Praktikant
10. januar 2002 - 16:58 Der er 46 kommentarer og
1 løsning

Ændre RGB+Alpha værdi på movieklip

Så er jeg på banen igen..

Søger et script til at ændre på farven/alpha på et movieclip. (Faktisk er det graphic-instances i øjeblikket, men hvis det ikke kan være anderledes kan jeg jo konverterer dem til MCs\'.)

Det skulle helst være sådan, at farven ændrer sig over 10 frames, med en easing - fra den farve det uanset måtte have før til en ny farve.

Min plan er så at sætte det samme script på alle MC\'s, men med forskellige værdier - så uanset hvilket MC man kommer fra (hvilken farve moviclippet har til at starte med) vil det ændrer sig i en nydelig overgang til de nye værdier.

Råb op hvis jeg vrøvler.. :)

David
-
Avatar billede lingoman Nybegynder
10. januar 2002 - 17:17 #1
Man laver et color object og kan variere dets rgb værdier. Hvad er det du vil lave ? Lave en glidende overgang fra en RGB værdi til en anden?


Avatar billede lingoman Nybegynder
10. januar 2002 - 17:23 #2
mulighederne for overgangene er så mange at du må uddybe hvordan de skal styres, og hvilken farve det skal slutte med. Skal det ligge fast som en 10 frame overgang eller skal vi blot specificere at hver ændring skal ske i en bestemt størrelse ?
Avatar billede davidchristensen Praktikant
10. januar 2002 - 17:55 #3
Hey George :)

Æhm, jeg havde tænkt mig et script hvor jeg netop selv vil kunne deffinere antal frames, easing parameter, RGB-værdier og Alpha-værdi. Altså, så snart man kommer til dette movieclip.

Et..
OnEnterFrame change RGB/Alpha value to:
    R=206
    G=107
    B=168
Alpha=37

DuringFrames=10
      Easing=100

*G* Håber du forstår..

Jeg sidder nemlig og animere dether, men med fire knapper og et moviclip for hver knap, skal jeg animere 24 variationer - og det giver mig kryb. :) Derfor, så kunne det jo være praktisk, hvis man kunne lave dether via actionscripting, så uanset hvilket moviclip jeg kommer fra og uanset hvilken farve det har, så vil scriptet ændre farven til de nye værdier.

Mere forklaring..
Movieklippet ligger i frame 1,2,3 og 4. Clippet skal have hver sin farve i de pågældende frames. Hver frame er forsynet med en stop-kommando.

Går jeg fra frame 3 (som måske er blå) til frame 2 (som skal være rød) så vil farven ændre sig over 10 frames fra blå til rød.

David
-



Avatar billede lingoman Nybegynder
10. januar 2002 - 23:07 #4
Nu har jeg laved en funktion som tager movieClippets farve og gradvist ændrer det til farven man beder om

//MC action

// Så laver vi en funktion vi kalder hver gang vi vil sætte en ny targetColor
// hver af dine MC\'er kan have denne action
onClipEvent (load) {
    myColor = new Color(this);
    myColorTransform = {rb:255, bb:0, gb:0, ab:255};
    n = 0;
    function setNewTargetColor (newRed, newGreen, newBlue, newAlpha, numberOfSteps) {
        // RGB og alpha værdierne skal være mellem 0 og 255
        currentColor = myColor.getTransform();
        myColorTransform = currentColor;
        trace (\" current rb:\"+currentColor.rb+\" bb:\"+currentColor.bb+\" gb:\"+currentColor.gb+\" ab:\"+currentColor.ab);
        target_alpha = newAlpha;
        target_red = newRed;
        target_green = newGreen;
        target_blue = newBlue;
        alpha_step = (target_alpha>currentColor.ab) ? +1 : -1;
        red_step = (target_red>currentColor.rb) ? +1 : -1;
        green_step = (target_green>currentColor.gb) ? +1 : -1;
        blue_step = (target_blue>currentColor.bb) ? +1 : -1;
        changeColor = true;
    }
}
onClipEvent (enterFrame) {
    if (changeColor == true) {
        if (myColorTransform.ab != target_alpha) {
            myColorTransform.ab += alpha_step;
        }
        if (myColorTransform.rb != target_red) {
            myColorTransform.rb += red_step;
        }
        if (myColorTransform.gb != target_green) {
            myColorTransform.gb += green_step;
        }
        if (myColorTransform.bb != target_blue) {
            myColorTransform.bb += blue_step;
        }
        myColor.setTransform(myColorTransform);
    }
}



//knap eller frame action >> skift til rød=255,grøn=0,blå = 0, alpha = 50, antal trin 15 ( men sidst nævnte er ikke lavet endnu) 

this[\"myMovieClip\"].setNewTargetColor(255,0,0,50,15);

//kommandoens parameter er (rød,grøn,blå,alfa,trin)

Sender dig en .fla men har ikke tid til at tilføje trin og easing til funktionen idag

mvh geo


Avatar billede davidchristensen Praktikant
11. januar 2002 - 16:42 #5
Det er deher jeg skal ændre på, ikke?: myColorTransform = {rb:255, bb:0, gb:0, ab:255};

-og ab=alpha?

David :)
-
Avatar billede lingoman Nybegynder
11. januar 2002 - 16:50 #6
nej det er det ikke!

det er kun (arguments) i funktionen du skal ændre når du kalder den med

this[\"myMovieClip\"].setNewTargetColor(255,0,0,50,15);  // slutter med at være rød og alpha = 50

this[\"myMovieClip\"].setNewTargetColor(0,255,0,255,15);// slutter med at være grøn og alpha = 100%
Avatar billede davidchristensen Praktikant
11. januar 2002 - 16:57 #7
Ah.. :) Du skriver det jo også kun 2 gange hvordan det hænger sammen. Sorry, jeg er en ged noglegange :)

Easingfunktionen er ret vigtig.. Og når du siger antal trin, hvordan skal det forstås i forhold til antal frames?

Du skal nok få dig nogle flere point George. :)

David
-
Avatar billede davidchristensen Praktikant
11. januar 2002 - 17:00 #8
Så, nu er pointene ændret fordi du er en sveske, George.. :D

(Sveske er ment som et STORT! kompliment :)

David
-
Avatar billede lingoman Nybegynder
11. januar 2002 - 17:14 #9
*Host! Er det stadig lovligt at give så mange her i Flash kategorien?

Easing >> hvordan skal den funke ? som du kan se er der ikke mindre end 4 variabler (rød,grøn,blå og alpha) vi kan variere lige som det passer os. skal de alle skifte værdi i hvert trin, eller skal den ene variabel skifte indtil den når sit target, og derefter starte skift på næste variabel, osv ?

Antal trin >> Det kan vi gøre som antal frames så det udelukkende bliver din hovedfilm som bestemmer tempoet for ændringerene.
Avatar billede lingoman Nybegynder
15. januar 2002 - 22:17 #10
Har du en preference for hvordan din easing skal se ud når den aktiveres ? Så kunne jeg jo scripte actionen for dig...
Avatar billede davidchristensen Praktikant
19. januar 2002 - 18:51 #11
Hej Geo :)

Er du på Eksperten i aften, mon?

David
-
Avatar billede lingoman Nybegynder
21. januar 2002 - 00:33 #12
Nu er jeg :)
Avatar billede lingoman Nybegynder
03. februar 2002 - 16:22 #13
Du behøver kun at sige mig hvordan din easing funktion skal fungere. De matematiske aspekter kan du overlade til mig :) Men lad os genoptage spørgsmålet hvor den startede. Her!
Avatar billede davidchristensen Praktikant
03. februar 2002 - 16:29 #14
Hej igen Geo.. Dén easingparameter jeg oftest bruger er den der i Flash hedder 100.. Men jeg har jo så fundet ud af, at man åbenbart kan lave denne parameter på forskellig måde; æhm, og jeg véd næsten ikke hvilken metode der er bedst. ? (Een der er nogenlunde til at gennemskue kunne være fjong, dvs. en hvor selve easing-formlen er synlig, så jeg kan se hvordan man egentlig easer. På den anden side ville det nemmeste vel være at refererer til Flash egen easingparam., ik'? :)

David
-
Avatar billede lingoman Nybegynder
03. februar 2002 - 16:37 #15
Kan du hurtigt bikse en fla sammen med den manuelle form for easing du ønsker. hvis jeg kan se den. kan jeg også lave den med actionScript.
geo@lingoman.dk
Avatar billede lingoman Nybegynder
03. februar 2002 - 16:57 #16
Er du her endnu ?
Avatar billede davidchristensen Praktikant
03. februar 2002 - 17:12 #17
Jep, jeg her endnu..

Nu sad jeg så lige og nørdede med "GoTo NextFrame" i Flash 5. Det ser ud til at den stopper når man går til næste frame..? Den skulle jo fortsætte indtil den når en stopkommando.. Men jeg har ikke muligheden for at give NextFrame en Play-parameter..?

David
-
Avatar billede lingoman Nybegynder
03. februar 2002 - 17:23 #18
Nej, det har man ikke!

nextFrame() kommandoen gør det samme som

gotoAndStop(_currentFrame + 1);

Jeg kan se at du endnu ikke har anskaffet dig Colin Moocks bog (fy!)

filerne er modtaget..Tak! giv mig lige en halv time da jeg netop har fået tilsendt en haste rettelse fra en kunde, så skal jeg nok vende tilbage igen
Avatar billede davidchristensen Praktikant
03. februar 2002 - 17:47 #19
Jeg er ved at spare op til Colin Moocks bog.. Havde jeg dog bare lidt flere penge end dem jeg alligevel ikke har, så kan du tro jeg havde købt den :)
Avatar billede davidchristensen Praktikant
03. februar 2002 - 18:58 #20
Så, nu må jeg hjem og ha' noget at spise.. Kommer ik' mere på i aften, desværre. Snakkes ved.

David
-
Avatar billede lingoman Nybegynder
03. februar 2002 - 19:01 #21
Sidder stadig med hasteopgaven... melder tilbage når jeg er færdig
Avatar billede davidchristensen Praktikant
10. februar 2002 - 21:23 #22
Hej Geo.

Jeg har snart brug for at finde ud af at kunne styre antallet af frames, som farveskiftet skal forløbe over. (Har noget med 10 frames imellem start- og slutfarve i tankerne..? :)

David
Avatar billede lingoman Nybegynder
10. februar 2002 - 21:42 #23
Jeg havde helt glemt det :( sorry...
Avatar billede davidchristensen Praktikant
12. februar 2002 - 15:24 #24
Det' helt okay.. :) Men det er faktisk det sidste jeg mangler for at kunne komme videre med min hjemmeside.. Vil være helt fantastisk ellevild og glad, hvis du kunne indsætte en parameter, så jeg kan sætte hastigheden lidt op :D (Á la 10 frames..?)

Der er os' flere point til dig end de 100 der ligger her og venter, hvis du er interessert.. *S*

Desuden, så har jeg været på jagt efter dén bog, men den enten udsolgt eller os' har boghandleren den ik'.. Jeg må vente i et par uge endnu ifølge Arnold Busck.. *suk*

David ;)
-
Avatar billede lingoman Nybegynder
12. februar 2002 - 15:35 #25
Point tallet er i forvejen rigeligt. Jeg må vel se at få taget mig sammen..
Avatar billede davidchristensen Praktikant
12. februar 2002 - 15:42 #26
Kanon! :)

Dit script virker ellers fuldstændig som det skal, det går bare alt for langsomt.. (Og så var der jo os' noget med en tweening af farveskiftet, altså at det starter rimeligt hurtigt og forløber derefter mere og mere langsomt..?)

Nu må du sige til hvis jeg stiller for stor krav..! :)
Avatar billede lingoman Nybegynder
12. februar 2002 - 16:02 #27
Det er kun rimelige krav du stiller, jeg laver det nu
Avatar billede lingoman Nybegynder
12. februar 2002 - 19:28 #28
Så fik jeg lavet det :))
I stedet for antal frames er den lavet så den accepterer antal tweening sekunder

Er du der endnu ?
Avatar billede davidchristensen Praktikant
13. februar 2002 - 18:20 #29
Ja, nu er jeg her igen..

Antal tweening sekunder? Vil du være sød lige at uddybe..? :)

David
-
Avatar billede lingoman Nybegynder
13. februar 2002 - 19:01 #30
Ja gerne!
Nu kan du specificere r, g, b, alpha og antal sekunder den skal bruge for at nå til farven.

Den er derfor ligeglad med din framerate

Hvis jeg fks sender kommandoen

this["myMovieClip"].setNewTargetColor(255,0,0,20,2);
vil den skifte fra nuværende farve til
rød 255
grøn = 0
blå = 0
alpha = 20
på 2 sekunder

hvis min hovedfilm bruger 12 fps ville dette medføre 24 mellestadier (i princippet).
I praksis vil den bruge omring 20 mellemstadier fordi udregningerne hugger lidt processortid:)

Klik på actionen som jeg har sat på knappen og afprøv nogle forskelige indstillinger.
Sender filen nu!
Avatar billede lingoman Nybegynder
13. februar 2002 - 19:08 #31
You've got mail ..
Avatar billede lingoman Nybegynder
13. februar 2002 - 19:19 #32
ups, den fil jeg sendte dig har en bug.. jeg tester lige videre
Avatar billede lingoman Nybegynder
13. februar 2002 - 19:33 #33
Nej det var ikke en fejl fra min side. Det må være en bug i Flash.
setTransform ser ud til at kunne påvirke alpha KUN hvis alpha < 100% er valgt i movieClippet.
Hvis man fks sætter den til 99% i farve paletten virker alle ændringer herefter.
Avatar billede lingoman Nybegynder
13. februar 2002 - 19:46 #34
ny fil sendt!
Avatar billede davidchristensen Praktikant
13. februar 2002 - 21:33 #35
Hey. Tak! *S*

Men jeg har så lige et sidste spørgsmål.. Det første script du lavede var skruet sådan sammen, at det skulle sættes på en frame og ikke på en knap som det er nu.. Jeg kunne rigtigt godt tænke mig at bibeholde det på en frame.. Men sætter jeg det ind som en frameaction, så virker det lissom ik'..? Skal jeg tilføje noget for at sætte det på en frame? :)

David
-
Avatar billede lingoman Nybegynder
13. februar 2002 - 21:36 #36
Det skulle da meget gerne virke. Jeg laver lige filen om så den skifter til nogle tilfældige farver.
Avatar billede davidchristensen Praktikant
13. februar 2002 - 21:39 #37
Undskyld, det er mig der ik' kalder MC'ene det de skal hedde.. :)

Det virker lige præcis som det skal! Det er da ellers et rimeligt omfattende script du har lavet dér.. Tak, Geo! :D

Nu kan jeg vist endelig få lavet min hjemmeside færdig og supercool..

David
-
Avatar billede lingoman Nybegynder
13. februar 2002 - 21:56 #38
Vent lige et øjeblik inden du smutter fra mig igen;)

Jeg har lavet det sådan at den nu standser _root hvergang den tweener og starter igen når den er færdig.
På den måde behøver du ikke tælle frames før du introducerer den næste farve.

Du får version 6 nu

mvh geo
Avatar billede lingoman Nybegynder
14. februar 2002 - 22:08 #39
Tak for point :)
Blev du tilfreds?
Avatar billede davidchristensen Praktikant
15. februar 2002 - 07:07 #40
Ja, ret tilfreds.. Men der er noget med den Alpha jeg ikke helt fatter..?

Jeg har endnu ikke kunne gøre et MC helt usynligt, men kun ændre en lillesmule på opaciteten.. Er der noget jeg gør forkert? Jeg har ellers sat alpha til 99% som du skriver..

Iøvrigt, version 6 dur' ikke helt. Den er ligeglad med stopkommandoer, og fortsætter bare med at ændre farve selvom man vil ha' den til at stoppe. :)
Avatar billede davidchristensen Praktikant
15. februar 2002 - 08:47 #41
Hej Geo..

Jeg kan altså ikke få Alpha-parameteren til at fungere..

Når jeg nu sidder og kigger, er der så ikke en lille fejl?:

}
    function colorEase () {
        if (changeColor == true) {
            myColorTransform = myColor.getTransform();
            if (duration>getTimer()-startTime) {
                step++;
                currentTime = getTimer()-startTime;
                if (myColorTransform.ab != target_alpha) {
                    nextStep = Math.floor(nextEase(currentTime, begin_alpha, alpha_change, duration));
                    myColorTransform.ab = nextStep;

                }
                if (myColorTransform.rb != target_red) {
                    nextStep = Math.floor(nextEase(currentTime, begin_red, red_change, duration));
                    myColorTransform.rb = nextStep;
                }
                if (myColorTransform.gb != target_green) {
                    nextStep = Math.floor(nextEase(currentTime, begin_green, green_change, duration));
                    myColorTransform.gb = nextStep;
                }
                if (myColorTransform.bb != target_blue) {
                    nextStep = Math.floor(nextEase(currentTime, begin_blue, blue_change, duration));
                    myColorTransform.bb = nextStep;
                }
                myColor.setTransform(myColorTransform);
            } else {
                myColorTransform.ab = target_alpha;
                myColorTransform.rb = target_red;
                myColorTransform.gb = target_green;
                myColorTransform.bb = target_blue;
                myColor.setTransform(myColorTransform);
                trace ("total steps in colorEase is "+step);
                changeColor = false;
            }
        }
    }
}

Æh, nu er det gået helt galt her i formateringen.. Men jeg syns' jeg kan se, at dér hvor alpha er deffineret, der mangler der lissom en tuborg ovenover..?
Avatar billede lingoman Nybegynder
15. februar 2002 - 08:47 #42
Ja, man skal fodre kommandoen negative værdier
alle værdierne mellem -255 og +255 kan bruges som argumenter.

Jeg laver en ny med procent værdier for RGB og Alpha.

mht til at stoppe kan du fjerne play() og stop() kommandoerne i color funktionerne.

mvh geo
Avatar billede lingoman Nybegynder
15. februar 2002 - 08:52 #43
hvor mangler der noget ??
Avatar billede davidchristensen Praktikant
15. februar 2002 - 08:52 #44
Hej, nej lad endelig vær med at lave mere nu.. Det er mig der er et æggehovede! Tak! Det virker fuldstændig med en negativ værdi.. *SS*

David
-
Avatar billede lingoman Nybegynder
15. februar 2002 - 08:56 #45
OK, men sig til hvis den ikke opfører sig orden'ligt ;)
Avatar billede davidchristensen Praktikant
15. februar 2002 - 08:59 #46
Jep. Har siddet hele natten og har ikke kunne finde ud af hvorfor mit MC altid startede med at være knald-lyserødt istedet for mørkeblåt som jeg havde sat det til at være i den pågældende frame - men så fant jeg ud af at startværdien jo ligger i det script som MC har på sig - og David blev igen lidt klogere.. :)

Du skal ha' mange tak for hjælpen!!
Avatar billede lingoman Nybegynder
15. februar 2002 - 09:02 #47
hehehe den var go' ;)
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