Avatar billede bajerfar Nybegynder
19. oktober 2005 - 01:41 Der er 16 kommentarer og
1 løsning

Flash-movie æder cpu med hud og hår

Kan nogen fortælle mig, hvorfor hulen denne flash-film skal bruge 100% cpu for at køre?!
Filmen indeholder én onEnterFrame, som ikke burde forvolde nogen skade, og selvfølgelig en del _alpha-manipulation, men aligevel ..!

http://www.larsliin.dk/img/site.htm

Filmen indeholder endnu ikke preloader og er langt fra færdig.
Avatar billede bajerfar Nybegynder
19. oktober 2005 - 01:55 #1
.. Hmm! Har fjernet en del 'blur' og sat _alpha til 100 og kan nu se, at det har mere at sige end først antaget! Synes dog stadig, at det er voldsomt, at det er så krævende.
Avatar billede Six Nybegynder
19. oktober 2005 - 03:14 #2
Ja det virker da lidt ude i hampen. Jeg tror lige jeg følger med på denne tråd.
Avatar billede Six Nybegynder
19. oktober 2005 - 03:15 #3
#79207 : Disabling TextArea causes CPU usage to reach 100%

The title pretty much says it all. Setting the TextArea component's enabled property to false can cause CPU usage to go up to 100%.

kilde: http://weblogs.macromedia.com/flashteam/archives/2004/07/79207_disabling.cfm

Kan dette være grunden ?
Avatar billede _k Nybegynder
19. oktober 2005 - 09:40 #4
Det er med ret stor sandsynlighed dit snowflake-script der går bananas. Hvor mange snefnug skaber du? Og bliver de pænt deleted når de ikke længere er på skærmen? (og jo, alpha'ede snefnug er ikke ligefrem noget Flash elsker!).

Arbejder du med den nye Flash 8, burde du kunne smide et filter på dit enkelte fnug og lave det om til en bitmap i stedet for en vektor. Det gør en kæmpe forskel!
Avatar billede bajerfar Nybegynder
19. oktober 2005 - 12:08 #5
fjappe>> Jeg har ingen tekst-felter i min film, så jeg tror ikke dét er problemet.

Du har sikkert ret i, at det er sne-scriptet der volder de største problemer i denne sammenhæng. Jeg har forsøgt at fjerne blur og _alpha fra mine snefnug, og dette har klart en posivitv effekt, men cpu'en står stadig og arbejder med 70-80%, hvilket jeg stadig synes er voldsomt.
Jeg arbejder med Flash 8.0 og kunne derfor forsøge mig med et filter på sne-fnuggene, men der opstår et problem, når man duplikerer et movieklip, for filteret lægger sig kun på det 'oprindelige' MC og ikke på de duplikerede MC'er.

PS. har 35 snefnug.
Avatar billede kanding Nybegynder
19. oktober 2005 - 13:17 #6
Flash afvikles via en runtime compiler. De tager altid al tilgængelig cpu for at yde optimalt.
Det betyder at du sagtens kan have andre programmer kørende. Flash justerer sig efter det.
Avatar billede _k Nybegynder
19. oktober 2005 - 13:43 #7
Men kan du så ikke apply'e filteret på alle dine kopierede mc'er - altså når de ER blevet skabt?
Avatar billede bajerfar Nybegynder
19. oktober 2005 - 14:15 #8
hvordan gør man det?!
Avatar billede _k Nybegynder
19. oktober 2005 - 15:10 #9
Smid dit snowflake script, og jeg skal komme med et forslag ;)
Avatar billede bajerfar Nybegynder
19. oktober 2005 - 16:32 #10
Super! Dette script ligger på mit snefnug-mc:

onClipEvent (load) {
        var rad = Number(0);
        movieWidth = 350;
        movieHeight = 250;
        i = 1+Math.random()*2;
        k = -Math.PI+Math.random()*Math.PI;
        this._xscale = this._yscale=60+Math.random()*100;
        this._alpha = 75+Math.random()*100;
        this._x = -10+Math.random()*movieWidth;
        this._y = -10+Math.random()*movieHeight;
        this._rotation = random(360);
}
onClipEvent (enterFrame) {
        rad += (k/180)*Math.PI;
        this._x -= Math.cos(rad);
        this._y += i;
        if (this._y>=movieHeight) {
                this._y = -5;
        }
        if ((this._x>=moviewidth) || (this._x<=0)) {
                this._x = -10+Math.random()*movieWidth;
                this._y = -5;
        }
}

- Og dette ligger i timeline:

for (k=0; k<35; k++) {
  duplicateMovieClip(snow, "snow"+k, k);
}
Avatar billede _k Nybegynder
20. oktober 2005 - 15:59 #11
Så må det være noget i retning af (har ikke selv haft lejlighed til at teste):

import flash.filters.BlurFilter; // Indsættes øverst i scriptet på timeline-scriptet

var blurFilter:BlurFilter = new BlurFilter(2, 2, 1);
for(var k:Number=0; k<35; k++) {
  var mc:MovieClip = snow.duplicateMovieClip("snow"+k, k);
  mc.filters = new Array(blurFilter);
}
Avatar billede bajerfar Nybegynder
20. oktober 2005 - 17:24 #12
_k >> Det kører meget bedre, så det var lige hvad der skulle til! Tusind tak for tippet!
Læg et svar, så gi'r jeg lidt points!
Avatar billede _k Nybegynder
20. oktober 2005 - 20:07 #13
Kanon at det dúr :)
Avatar billede Six Nybegynder
20. oktober 2005 - 21:23 #14
bajerfar - smider du ikke lige det nye samlede script ? :D
Avatar billede bajerfar Nybegynder
20. oktober 2005 - 22:29 #15
Endu engang mange tak for hjælpen!

fjappe >> Scriptet ser nu således ud:

script på snefnug-MC:

onClipEvent (load) {
    var rad = Number(0);
    movieWidth = 350;
    movieHeight = 250;
    i = 1+Math.random()*2;
    k = -Math.PI+Math.random()*Math.PI;
    this._xscale = this._yscale=60+Math.random()*100;
    //this._alpha = 75+Math.random()*100;
    this._x = -10+Math.random()*movieWidth;
    this._y = -10+Math.random()*movieHeight;
    this._rotation = random(360)
}
onClipEvent (enterFrame) {
    rad += (k/180)*Math.PI;
    this._x -= Math.cos(rad);
    this._y += i;
    if (this._y>=movieHeight) {
        this._y = -5;
    }
    if ((this._x>=movieWidth) || (this._x<=0)) {
        this._x = -10+Math.random()*movieWidth;
        this._y = -5;
    }
}

- Og lidt kode i time-line:

for (k=0; k<35; k++) {
    duplicateMovieClip("snow", "snow"+k, k);
}

Hvis du påtænker at bruge koden, så skal du lige huske, at navngive dit snefnug-MC i properties!
Avatar billede Six Nybegynder
20. oktober 2005 - 22:32 #16
Hej bajerfar - takker :D

Det var mere af interesse da jeg selv er ved at lære mig noget actionscripting, så er sådan et script her jo meget interessant at gå i krig med :D
Avatar billede bajerfar Nybegynder
20. oktober 2005 - 22:34 #17
Glad for at kunne hjælpe:-)
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