Avatar billede -42- Nybegynder
10. december 2003 - 10:58 Der er 11 kommentarer og
1 løsning

Hvordan laver jeg en vifte?

Jeg har et rundt billed, som jeg skal have en maske ind over...

Denne maske skal virke som en lagkagebid  der bliver større og større... fra 0 til 360 grader.

Jeg har lavet to versioner:

Den første består af en halvcirkel med en maske som er en halvcirkel... Halvcirkel masken ligget spejlvendt af halvcirklen, så de tilsammen danner en cirkel. Jeg rotere så maske halvcirklen 180 grader ind over den anden, så jeg får en halv vifte...

Jeg laver så et mc med to halve vifter hinnanden som så tilsammen danner en hel.

Den bruger jeg så som maske....

...Det virker bare ikke!!!


Så har jeg lavet en anden løsning, som virker!
Den består af 4 kvarte der i rigtig rækkefølge bare er et shapetween fra en streg til en kvart cirkel...

Den virker bare ikke når jeg publicere den som flash 5!

Er der nogen der har en god ide til en anden måde at gøre det på
Avatar billede pyroman Nybegynder
10. december 2003 - 16:49 #1
Jeps!!!! -hvis du bruger flash MX:

Du laver et tomt mc som du smider i mask-layeret og i første frame i dette fyrer du denne kode ind:

degree = 90;
radius = 100;
rad = Math.PI/180;
this.beginFill("0xFF0000", 100);
this.moveTo(0,0);
this.lineTo(radius, 0);
for(i=1;i<=degree;i++){
    anchorX = Math.cos(rad*i)*radius;
    anchorY = Math.sin(rad*i)*radius;
    this.lineTo(anchorX, anchorY);
}
this.moveTo(0,0);
this.endFill();

"degree" er vinklen i grader og "radius" siger sig selv...
Avatar billede -42- Nybegynder
10. december 2003 - 16:55 #2
Tæt på ...
Den skal bare tegnes op fra 0 til 360 grader over tid, således, at den slår sig ud som en vifte...

Og så skal det kunne publiceres i version 5
Avatar billede -42- Nybegynder
10. december 2003 - 16:56 #3
Man tak indtil videre :-)

Håber du kan finde ud af det sidste også
Avatar billede pyroman Nybegynder
10. december 2003 - 17:26 #4
Nårh!! Den er lidt mere besværlig og kræver lidt fikserier med grafik:

1. Lav et nyt mc med navnet "cirkelbue"
2. I dette tegner du en cirkel med radius på 100 (bredde på 200).
3. I et lag over denne cirkel laver du en 100 lang streg der går fra (0,0) (midten af cirklen) til (100,0).
4. Kopier denne streg.
5. Gå op i transform og roter stregen præcis 1 grad (den skråner meget lidt nedad).
6. Paste den originale streg ind igen, hvor den var før (0,0)
7. De to streger klippes ud og sættes ind på samme position i laget med cirklen.
8. Det skulle nu være muligt at markere alt andet af cirklen end den lille cirkelbue som de to streger danner og så slette det.
9. Du har en cirkelbue med en vinkel på en grad - fantastisk...

Nu til programmeringen...

1. vælg din cirkelbue og eksporter den til actionscript med samme navn.
2. Lav et nyt tomt mc.
3. I 1. frame i dette mc (interval er tid i millisekunder):

n = 0;
interval = 100;
startTime = getTimer();

4. I 2. frame:

if(getTimer >= startTime+interval and n < 360){
  attachMovie("cirkelbue", "deg"+n, n+1);
  this["deg"+n]._rotation = n;
  n++;
  startTime = getTimer();
}

5. I 3. frame:

gotoAndPlay(2);

6. Smid dette mc ind i dit mask-layer
Avatar billede -42- Nybegynder
10. december 2003 - 17:57 #5
Det ser rigtigt ud!

Køre det i ver 5?
Avatar billede pyroman Nybegynder
10. december 2003 - 18:01 #6
Jep - fandt mit gamle flash 5 frem og tjekkede det engang - det kører skam fint...
Avatar billede -42- Nybegynder
10. december 2003 - 18:02 #7
NICE! Jeg prøver lige!
Avatar billede -42- Nybegynder
10. december 2003 - 18:06 #8
Jeg kan sgu ikke få det til at virke...

Kan du ikke sende mig din fla på tp@cbc.dk
Avatar billede pyroman Nybegynder
10. december 2003 - 18:21 #9
Hmm - havde ikke tjekket om det virkede i et mask-layer og det gør det ikke!! måske var det ikke lavet i flash 5. Prøver lige at finde ud af det...
Avatar billede pyroman Nybegynder
10. december 2003 - 18:28 #10
Jeg tror altså ikke det kan laves på denne måde alligevel da Flash 5 ikke understøtter scriptede Movieclips i mask-layers, men fortvivl ikke der er en anden løsning. Skal lige bikse den sammen...
Avatar billede -42- Nybegynder
10. december 2003 - 18:30 #11
SUPER!!
Avatar billede pyroman Nybegynder
10. december 2003 - 19:55 #12
Du kan bruge dette script istedet for det andet:
frame1:

n = 0;
interval = 100;
startTime = getTimer();
for(i=0;i<360;i++){
  attachMovie("bue", "bue"+i, i+1);
  this["bue"+i]._rotation = i;
}

frame2:
if(getTimer() >= startTime+interval && n < 360){
    removeMovieClip("bue"+n);
    n++;
    startTime = getTimer();
}

Dette movieclip laver først en hel cirkel for så langsomt at slette den... For at få en effekt som et mask-layer skal du lave en firkant, der fylder hele stage'n ud og med et hul hvor cirklen lige kan være i, sådan at man istedet for et mask layer ser igennem et direkte hul...
Løsningen er desværre ikke så god i alle tilfælde....

Der er dog en sidste løsning: frame-by-frame... opbyg en cirkel af cirkelbuer frame efter frame... slavemåden...
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