xSequence Experiment

Intro

xSequence is an experiment with time and event based sequences. The event based feature is a result of adding onslideend support to all the X animation functions (this is the only event supported for now).

The current technique has an advantage in that it does not call eval - but this creates a disadvantage in that values in the action array are resolved when the array is initialized, not when the action is executed.

The current technique has another disadvantage in that function.apply requires JavaScript 1.3 (IE 5.5+). Currently this demo is working for me on WinXP with Opera 8.0, Firefox 1.0.2 and IE 6.0.

It makes extensive use of closure - do I need an onUnload listener for IE? Does it have circular refs?

Demo

Run Sequence 1 | Stop Sequence 1

Application Code

window.onload = function()
{
  var w = 200, h = 200, sl_time = 1000;
  var cw = xClientWidth(), ch = xClientHeight();
  var d1 = document.getElementById('d1');

/*
  A Sequence is an array of Action arrays.

  seq[0]       = first action
  seq[i][0]    = time to next action, or if -1 then wait for onslideend
  seq[i][1]    = function ref
  seq[i][2]    = array of args
  seq[i][2][0] = first arg
*/

  xs1 = new xSequence([
    [0, xMoveTo, [d1, -w, -h]], // executes immediately
    [0, xResizeTo, [d1, w, h]],
    [0, xShow, [d1]],
    [-1, xSlideTo, [d1, (cw-w)/2, (ch-h)/2, sl_time]],
    [-1, xEllipse, [d1, (cw-w)/4, (ch-h)/4, 0, 1000, 0, 360]],
    [-1, xSlideCornerTo, [d1, 'sw', (cw-w)/2, ch, sl_time/2]],
    [-1, xSlideCornerTo, [d1, 'nw', (cw-w)/2, 0, sl_time/2]],
    [-1, xSlideTo, [d1, 0, 0, sl_time]], // calls xSlideTo then waits for onslideend
    [2500, msg, [d1, 'Waiting for 5 seconds...']], // calls msg then pauses for 2.5 secs
    [2500, null, null], // pauses for 2.5 secs (a test for no fn and no args)
    [0, msg, [d1, '']],
    [-1, xSlideCornerTo, [d1, 'ne', cw, ch-h, sl_time]],
    [-1, xSlideTo, [d1, 0, 0, sl_time]],
    [-1, xSlideCornerTo, [d1, 'sw', cw-w, ch, sl_time]],
    [-1, xSlideTo, [d1, 0, 0, sl_time]],
    [-1, xSlideCornerTo, [d1, 'se', (cw-w)/2+w, (ch-h)/2+h, sl_time]],
    [-1, xSlideCornerTo, [d1, 'nw', (cw-w)/2, (ch-h)/2, sl_time]],
    [-1, xEllipse, [d1, (cw-w)/4, (ch-h)/4, 0, 1000, 180, 540]],
    [-1, xSlideCornerTo, [d1, 'nw', (cw-w)/2, 0, sl_time/2]],
    [-1, xSlideCornerTo, [d1, 'nw', (cw-w)/2, (ch-h)/2, sl_time/2]],
    [1500, msg, [d1, 'Woo Hoo!']],
    [0, msg, [d1, '']],
    [-1, xSlideTo, [d1, -w, -h, sl_time]],
    [2500, null, null]
  ]);
}

function msg(e, s)
{
  e.innerHTML = '<p>' + s + '</p>';
}

xSequence Code

View xSequence

Search

Cross-Browser.com

World Wide Web

Tech Support

Forum support is available at the X Library Support Forums.