Avatar billede paask Nybegynder
12. marts 2002 - 13:37 Der er 12 kommentarer og
2 løsninger

Farven er sort!?

Jeg har et mystisk farve spørgsmål.

Jeg vil lave en ganske enkel effekt, men forstår ikke hvad der går galt. Planen er, at ved rollOver på en knap ændrer et movieclip farve, ved rollOut ryger det tilbage til sin oprindelige farve, og ved press på knappen forbliver clippets farve den nye.

Til at begynde med har jeg lavet et textbook eksempel af Colin Moock, hvor jeg begynder med at definere en function som

function combineRGB (red, green, blue) {
var RGB = (red<<16) | (green<<8) |blue;
return RGB;
}

Denne function benytter jeg så til at sammensætte den ønskede farve. For nemheds skyld kommer hele min opbygning her...

På selve knappen har jeg denne simple action:

on (rollOver) {
farve = true;
}
on(rollOut){
farve = false;
}
on (release) {
pressed = true;
}

Jeg styrer så actions på selve clippet hvori knappen ligger således:

onClipEvent (load) {
    myClip = new Color (_root.minMovie);
    myColor = myClip.getRGB();
}
onClipEvent (enterFrame) {
if(!pressed){
    if(farve){
    myClip.setRGB(combineRGB(255, 255, 255));
    } else {
    myClip.setRGB(myColor);
    }
} else {
    myClip.setRGB(combineRGB(255, 255, 255));
}
}

Dvs. ved rollOver skulle minMovie skifte farve til hvid og ellers have sin oprindelige farve. Det er her alt mystisk går igang...

Hvis minMovie bare har sin normale farve, så er den sort fra start. Hvis jeg tinter minMovie til en anden farve, så fungerer rollOver- og Out helt efter planen. Men uanset hvilke værdier for RGB jeg indsætter i funktionen combineRGB så skiftes der farve til sort!?

Dvs. det hele fungerer efter hensigten, bortset fra jeg er nødt til at tinte min movie, samt at combineRGB funktionen kun returnerer sort farve.

Hvis jeg indsætter værdier i combineRGB manuelt, dvs. uden om funktionen men blot benytter RGB variablen, så virker alt igen efter hensigten.

Det er egenligt ikke så meget en alternativ løsning jeg er ude efter, det bør nok kunne klares, men jeg vil meget gerne kunne se grunden til min fejl i dette script!?

Håber der er nogen med vise ord :0)

mvh
paask
Avatar billede lingoman Nybegynder
12. marts 2002 - 18:13 #1
hej paask,

Det er her den er gal..

var RGB = (red<<16) | (green<<8) |blue;

Leftshift "<<" gør at værdien fordobles

red << 1 betyder det samme som 2*red

red << 2 betyder  2*2*red

red << 16 betyder 2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*2*red

derfor ender du med at red og green saturerer hvis de ikke er lig nul( de får den aller højeste værdi de kan opnå.) som vil ligne sort uanset hvad du har af værdi for blue.

mvh geo
Avatar billede paask Nybegynder
12. marts 2002 - 18:43 #2
Hej Geo.

Det kan jeg godt følge dig i, men jeg har taget eksemplet direkte fra AS - Definitive Guide - s.438 hvor Moock indsætter værdier i præcist denne function!? Derfor regnede jeg med det ville virke, men det gør det jo ikke...

Jeg tror dog stadig tanken med left shift er god nok, for hvis jeg skriver det som følgende:

var RGB = (201<<16) | (160<<8) |21;

farve = new Color(_root.mitClip);

farve.setRGB(RGB);

Så virker det fint nok og mitClip ændrer farve?! Jeg ved ikke lige hvordan jeg skal gribe det an?!
Avatar billede lingoman Nybegynder
12. marts 2002 - 19:17 #3
Nu kan jeg godt se hvad Colin laver...

Jeg tror at dit movieClip har arvet den sorte farve ?
Prøv at indsætte en trace() for at se hvilken farve MC'et har umiddelbart efter load

onClipEvent (load) {
    myClip = new Color (_root.minMovie);
    myColor = myClip.getRGB();
trace ("myColor" + mycolor);
}
Avatar billede paask Nybegynder
12. marts 2002 - 19:30 #4
Farven er ikke sort fra start, den har en anden (gul) farve. Jeg har tintet den til en anden (grøn), tracet myColor og får 5439300... hvis jeg omdanner det til hex - med toString(16) eksemplet side 435 - får jeg så 52ff44 som output. Det er den rigtige farvekode for det grønne...

Det er ret strange det her, for det ser ud som om hans eksempel slet ikke virker?! Har du forsøgt med funktionen?
Avatar billede lingoman Nybegynder
12. marts 2002 - 19:46 #5
Nej, det har jeg desværre ikke. Der er ikke installeret Flash på dennne computer, men jeg vil afprøve det når jeg er hjemme og vende tilbage hvis jeg finder ud af noget.
mvh geo
Avatar billede paask Nybegynder
12. marts 2002 - 19:48 #6
Okay, men tak for hjælpen indtil videre Geo.

Jeg læser lige lidt op på det, og alt andet lige skriver han det er bedre at benytte get- og setTransform på color objektet når man relaterer til den oprindelige farve. Så jeg tror jeg benytter det istedet. Men det ER bare underligt funktionen ikke virker...

Det vil være great hvis du kan gennemskue fejlen på et andet tidspunkt - tak for nu :0)
Avatar billede paask Nybegynder
13. marts 2002 - 01:10 #7
Hej igen Geo :0)

Nu gør det mig egenligt ikke så meget længere. Jeg benyttede som sagt transform istedet, og det virker fint nu. Det irriterede mig bare grænseløst tidligere, fordi jeg havde forsøgt så mange muligheder.

Men ellers tak for hjælpen, hvis du stadig finder løsningen vil jeg da være meget glad for at høre det! Så jeg lader spørgsmålet stå åbent for muligheder :0)
Avatar billede paask Nybegynder
14. marts 2002 - 10:36 #8
Hej Geo.

Jeg vil egenligt gerne lukke dette spørgsmål nu. Du skal stadig have nogle point for din hjælp. Jeg tager dog nogle igen selv, er det ok?
Avatar billede paask Nybegynder
14. marts 2002 - 17:10 #9
Well, håber det er :0)
Avatar billede lingoman Nybegynder
14. marts 2002 - 17:14 #10
Tak paask, men jeg vil helt ikke have point for noget som du selv løste.
Sender pointsne din vej igen :)
Avatar billede lingoman Nybegynder
14. marts 2002 - 17:16 #11
Du har point til gode her
http://www.eksperten.dk/spm/185104
mvh geo
Avatar billede paask Nybegynder
14. marts 2002 - 17:20 #12
Det var skam mest fordi du brugte tid på at hjælpe mig. Det bør da få noget positiv respons uanset. Men okay - tak alligevel :0)
Avatar billede lingoman Nybegynder
14. marts 2002 - 17:22 #13
Hvis det skulle ske en anden gang ville jeg være meget tilfreds med en 0-point accept (c:
Avatar billede paask Nybegynder
14. marts 2002 - 17:23 #14
Okay det er en deal ;0)
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