7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)
  • Q:
    Bijdrager
    Ward

    kleur movieclip in Flash

    Hoe laat je een movieclip van kleur veranderen met actionscript?

    ik heb nu:

    [code:1:15bfa45c99]function colorChange(redAmount, redAlpha, greenAmount, greenAlpha, blueAmount, blueAlpha, alphaAmount, alphaAlpha){

    bgColor = new Color(_root.PreloaderMC);
    bgColor.setTransform({ra:redAmount,rb:redAlpha,ga:greenAmount,gb:greenAlpha,ba:blueAmount, bb:blueAlpha,aa:alphaAmount,ab:alphaAlpha})

    }[/code:1:15bfa45c99]

    maar hoe krijg ik dit aan de gang zodat mijn movieclip vloeiend van kleur naar kleur gaat?

    Bijdrager
    freshface

    Zo gaat dat nooit werken.
    Reden: er wordt geen transitie gemaakt tussen de 2 waarden (huidige + nieuwe)
    Dus je moet de tussenliggende berekenen.

    Inactief
    Anoniem

    Kun je zoiets niet beter op de timeline in Flash tweaken met Properties -> Color -> Tint, een Motion tween tussen de kleuren en vervolgens dat omzetten naar een Movie clip?

    Bijdrager
    Ward

    Het betreft het geladen % van een preloader, dus dynamische tekst.
    De lengte van de kleurtransitie is afhankelijk van de downloadtijd van de hoofdfilm.

    Ik heb een script gevonden maar krijg het niet goed aan de gang:
    [code:1:5128b7f0fa]
    /*
    Darron Schall
    Sept. 8, 2003

    Takes in an integer in and splits it up into is red, green, and blue parts
    */
    function int_to_rgb(i) {
    var r = (i & 0xFF0000) >> 16;
    var g = (i & 0x00FF00) >> 8;
    var b = i & 0x0000FF;
    return {r:r, g:g, b:b};
    }

    /*
    Darron Schall
    Sept. 8, 2003

    Smoothly transitions a movie clip from one color to another
    over a certain duration.
    SIDE EFFECT: onEnterFrame is used to perform the loop,
    calling this function will overwrite any existing onEnterFrame
    function. A better alternative may be to make use of
    setInterval instead. */
    MovieClip.prototype.fadeFromTo = function(start_val, stop_val, duration) {
    /* We don’t need to save the stop_color, so just
    declare it as a local variable */
    var stop_color = int_to_rgb(stop_val);

    this.start_color = int_to_rgb(start_val);
    this.duration = duration;
    /* Delta is an object with 3 fields – each field specifies
    the amount of color shift from the start value to the stop value */
    this.delta = {
    r:(this.start_color.r-stop_color.r)/this.duration,
    g:(this.start_color.g-stop_color.g)/this.duration,
    b:(this.start_color.b-stop_color.b)/this.duration};

    /* Create a color object that refers to ourself, so we can change
    our own color. We create this object outside of the loop so it’s
    not continually created and destroyed*/
    this.colorObj = new Color(this);

    /* Start the ball rolling by changing our color initially,
    before the loop. */
    this.colorObj.setRGB(start_val);

    this.count = 1;
    this.onEnterFrame = function() {
    /* Construct an integer value from the 3 color parts.
    We always add from the start color so that error in rounding
    doesn’t get multiplied for each color change. Doing things this
    way makes the transition smoother and ensures that we
    end up on the right color as well. */
    var colorVal = ((this.start_color.r-this.count*this.delta.r) << 16)
    + ((this.start_color.g-this.count*this.delta.g) << 8)
    + (this.start_color.b-this.count*this.delta.b);
    // Update our color value
    this.colorObj.setRGB(colorVal);
    if (this.count++ == this.duration) {
    // Clean up after ourselves
    delete this.start_color;
    delete this.duration;
    delete this.delta;
    delete this.colorObj;
    delete this.count;
    delete this.onEnterFrame;
    }
    }
    };

    // Example usage:
    some_mc.fadeFromTo(0xFFCC33, 0x990099, 45);[/code:1:5128b7f0fa]

    Het wordt uitgelegd maar ik weet niet precies wat ik aan moet passen of in moet vullen om het te laten werken…

    Bijdrager
    LittleJohnny

    some_mc.fadeFromTo(“Oude kleur”, “nieuwe kleur”, “tijd dat het moet duren”);

    denk ik dan

    Bijdrager
    Ward

    yep, dat deed ik ook maar er zitten wat errors in het script betreffende } en { tekens die ik er niet goed uit krijg…

    Bijdrager
    Ward

    OK, script in een OnClipEvent(Load) gezet, nu geeft het geen errors maar werkt het nog steeds niet.
    Wie weet of er in het script zelf nog dingen ingevuld moeten worden of dat je alles met het laatste ‘example’-stukje kunt sturen?

7 berichten aan het bekijken - 1 tot 7 (van in totaal 7)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.