In case anyone has run into the need to have an onComplete style
handler for effects.js I have made a successful addition to the source
code.

Step 1:
In the main effect.js code skip to about line 100, it should look like
this:

DefaultOptions: {
    duration:   1.0,   // seconds
    fps:        100,   // 100= assume 66fps max.
    sync:       false, // true for combining
    from:       0.0,
    to:         1.0,
    delay:      0.0,
    queue:      'parallel',
    complete:   0,
  },

You are adding 'complete: 0,' to the defaults, this will allow you to
run a subsequent function once the effect has completed. (This is the
first step of three).

Step 2:
Register the function within the Effect you would like to extend the
onComplete handler to. I needed this for the Effect.Fade and
Effect.Appear functions.

Example: Effect.Fade (starts around line 535)

Effect.Fade = function(element) {
  element = $(element);
  var oldOpacity = element.getInlineOpacity();
  var options = Object.extend({
    from: element.getOpacity() || 1.0,
    to:   0.0,
    afterFinishInternal: function(effect) {
         if(effect.options.complete != 0){
             effect.options.complete();
         }
      if (effect.options.to!=0) return;
      effect.element.hide().setStyle({opacity: oldOpacity});
    }
  }, arguments[1] || { });
  return new Effect.Opacity(element,options);
};

*on the afterFinishInternal you know that the effect has finished, so
you then ask whether or not the option for complete (onComplete) was
issued and piped into the function, if so you allow Javascript to read
the string as a function and you are golden.

Step 3: Using the onComplete (complete) option in your code.

example:
function fadeObj(obj,func){
Effect.Fade($(obj),{duration:1,complete:func});
}

function setInStone(){
 alert('onComplete handler working for effects.js');
}

usage:
fadeObj('fadediv',setInStone);

I hope this helps anyone else who ran into the same issue. I wanted to
simulate the functionality of the caurina Tweener methods from
actionscript 3, or the complete handler from the SPRY lib in the more
useful effect.js.

Cheers,
Scott Haines
Newfront Creative
http://www.newfrontcreative.com




--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Prototype & script.aculo.us" group.
To post to this group, send email to prototype-scriptaculous@googlegroups.com
To unsubscribe from this group, send email to 
prototype-scriptaculous+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/prototype-scriptaculous?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to