Toon posts:

[flash MX] faden snelheid optimaliseren

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hallo,
Ik ben bezig met een site die nogal veel gebruik maakt van 'faders' ik heb een alpha fade en een colorFade geschreven om dit te doen. Alleen het probleem is dat de movie er erg traag van wordt als ie aan het rekenen is(de muis reageert laat, gewone tweens gaan langzamer)
het is te bekijken op: http://www.c32.nl/werkmap/pieter/jacob/
dit is het script dat ik gebruik:
Flash ActionScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
function fade(mc, newAlpha, timer) {
    trace("alphafade");
    step = 3;
    oldAlpha = mc._alpha;
    oldAlpha = Math.round(oldAlpha);
    newAlpha = Math.round(newAlpha);
    if(oldAlpha > newAlpha){
        if((oldAplha-step) > newAlpha){
            oldAlpha -= step;
        } else {
            oldAlpha--;
        }
        alphaFlag = true;
    }
    if(oldAlpha < newAlpha){
        if((oldAlpha+step) < newAlpha){
            oldAlpha += step;
        } else {
            oldAlpha++;
        }
        alphaFlag = true;
    }
    if(alphaFlag != true){
       clearInterval(_root[timer]);
    } else {
        mc._alpha = oldAlpha;
        delete alphaFlag;
    }
}
function colorFade(mc, newLook, timer) {
    trace("colorFade");
    step = 3;
    tmpColor = new Color(mc);
    oldLook = tmpColor.getTransform();
    var colorFlag = false;
    for (t in oldLook) {
        oldLook[t] = Math.round(oldLook[t]);
        newLook[t] = Math.round(newLook[t]);
        if ((oldLook[t])>(newLook[t])) {
            if((oldLook[t]-step)>(newLook[t])) {
                oldLook[t] -= step;
            } else {
                oldlook[t]--;
            }
            colorFlag = true;
        }
        if ((oldLook[t])<(newLook[t])) {
            if ((oldLook[t]+step)<(newLook[t])) {
                oldLook[t] += step;
            } else {
                oldLook[t]++;
            }
            colorFlag = true;
        }
    }
    if(colorFlag != true) {
        clearInterval(_root[timer]);
    } else {
        var newColor = new Color(mc);
        newColor.setTransform(oldLook);
        delete colorFlag;
    }
}

en het script wordt op de volgende manier aangeroepen:
Flash ActionScript:
1
2
3
4
vragenBtn.onRollOver = function() {
    clearInterval(_root.colorFadeTimer);
    _root.colorFadeTimer = setInterval(colorFade, 10, _root.kleurvlak, vragenClr, "colorFadeTimer");
};

misschien is mijn script erg slordig geschreven waardoor hij het moeilijkt met alle variabelen maar ik ben net nieuw met Flash MX dus at weet ik niet...

/edit:
weet iemand welke fouten ik maak? of is dit gewoon normaal?

[ Voor 5% gewijzigd door Verwijderd op 11-04-2003 18:05 . Reden: vraag vergeten ]


  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
mooi - maar ik denk dat het puur flash mx traagheid is (nou ja traagheid - een transform die constant veranderd is HEEL erg zwaar en dat gecombineerd met een alpha - zeker met zo'n resolutie is heel intensief). 1 probleem zou wel kunnen zijn dat je misschien met 2 timers werkt ? dit zou zeggen dat voor elke 'frame' er meerdere worden berekent.

  • Roa
  • Registratie: December 2002
  • Laatst online: 03-07-2024

Roa

Mag ik vragen wat voor pc je hebt, bij mij heeft hij namelijk geen merkbaar verschil...

Research is what I'm doing when I don't know what I'm doing.


Verwijderd

Topicstarter
op m'n mac is hij heel erg traag en op de pc ook trager maar niet heel erg hinderlijk... maar ik wil het natuurlijk op elk platform er op z'n best uit laten zien en er dus de overbodige code uitfilteren of verbeteren...

  • GrimaceODespair
  • Registratie: December 2002
  • Laatst online: 23-08 10:32

GrimaceODespair

eens een tettenman, altijd ...

Je zou kunnen testen of zo'n gecombineerde overgang (transform + alpha) opmerkelijk sneller gaat als je'm hard-coded (design-time) opzet. Als ie even traag gaat, dan weet je iig dat het niet aan je AS ligt.

Ik denk ook dat zo'n kort stukje AS als je hier hebt, niet veel snelheidsvertraging zal opleveren. Dat hangt echter natuurlijk ook af van het interval dat je gebruikt, en daarom zou ik zeker eens daarmee spelen om te kijken wat het traagste interval is waarop je kunt tweenen (in AS dan) waarop de boel toch niet op stop-motion lijkt.

Dan nog een tip misschien: probeer array of member lookups (myObject[myIndex]) zoveel mogelijk te vermijden. Intern worden dan namelijk afaik telkens zowel myObject (in de huidige variabelenset) als myIndex (in myObject) opgezocht. Gebruik daarom bij het meervoudig benaderen van eenzelfde member liefst (tijdelijke) variabelen.

Wij onderbreken deze thread voor reclame:
http://kalders.be


Verwijderd

Loopt soepel, en ziet er allemaal goed uit!!! En ik merk niets van traagheid :D

  • hobbit_be
  • Registratie: November 2002
  • Laatst online: 04-07-2025
bij mij draait ie ook erg traag als ze alletwee tesamen gaan:

Dual 400Mhz Celeron (PII)..

ik zou zoals Grimace zegt het effect effe testen met allen de editor dus geen action-script. is zie daat een interval van 10ms dat is wel erg snel (100fps)...

Verwijderd

hobbit_be schreef op 12 April 2003 @ 13:05:
bij mij draait ie ook erg traag als ze alletwee tesamen gaan:

Dual 400Mhz Celeron (PII)..

ik zou zoals Grimace zegt het effect effe testen met allen de editor dus geen action-script. is zie daat een interval van 10ms dat is wel erg snel (100fps)...
Ik werk zelf altijd met een fps van ongeveer 30 in flash. Dit is vloeiend en kost niet al teveel rekenkracht.

Vind de gulden middeweg :)

Verwijderd

Topicstarter
ok, dan zal ik de interval iets lager zetten...

Verwijderd

Verwijderd schreef op 12 april 2003 @ 15:23:
[...]


Ik werk zelf altijd met een fps van ongeveer 30 in flash. Dit is vloeiend en kost niet al teveel rekenkracht.

Vind de gulden middeweg :)
De gulden middewegen zijn altijd :
21 FPS
31 FPS
59 FPS
115 FPS

Deze framerates garanderen dat de film even snel loopt op mac als pc. Raar afrondings bugje in de mac player.

Ik kies altijd 31.
Pagina: 1