Bezier Path Animation : Bezier : Ajax Layer JAVASCRIPT DHTML TUTORIALS


JAVASCRIPT DHTML TUTORIALS » Ajax Layer » Bezier »

 

Bezier Path Animation




http://dynapi.sourceforge.net/
GNU LESSER GENERAL PUBLIC LICENSE
Version 2.1, February 1999
<html>
<head>
<title>DynAPI Examples - Bezier Path Animation</title>
<script language="JavaScript" src="./dynapisrc/dynapi.js"></script>
<script language="Javascript">
dynapi.library.setPath('./dynapisrc/');
dynapi.library.include('dynapi.api');
dynapi.library.include('dynapi.debug');
dynapi.library.include('dynapi.fx.Thread');
dynapi.library.include('dynapi.fx.Bezier');
</script>
<script language="Javascript">

var path;

var dots = [];
var cps = [];

function drawBezier() {
  clearPage();

  var controlPoints = eval(document.b.cp.value);
  var steps = parseInt(document.b.steps.value);

  // the path includes starting and ending points
  // results in total of steps+1 points along path
  path = Bezier(controlPoints, steps);

  for (var i=0;i<controlPoints.length/2;i++) {
    var x = controlPoints[i*2];
    var y = controlPoints[i*2+1];
    var color = 'red';
    if (i==|| i==controlPoints.length/2-1color = 'yellow'
    if (!cps[i]) cps[i= dynapi.document.addChild(new DynLayer('',x-2,y-2,5,5,color));
    else {
      cps[i].setLocation(x-2,y-2);
      cps[i].setBgColor(color);
    }
    cps[i].setVisible(true);
  }

  for (var i=0;i<path.length/2;i++) {
    var x = path[i*2];
    var y = path[i*2+1];
    if (!dots[i]) dots[i= dynapi.document.addChild(new DynLayer('',x,y,2,2,'black'));
    else {
      dots[i].setLocation(x-2,y-2);
    }
    dots[i].setVisible(true);
  }
}

var playblock = dynapi.document.addChild(new DynLayer('',0,0,15,15,'red'));
playblock.setVisible(false);
var pathanim = new Thread(playblock);
pathanim.loop = true;

function startAnim() {
  if (path) {
    playblock.setVisible(true);

    var speed = parseInt(document.b.speed.value);
    pathanim.sleep(speed);
    pathanim.play(path);
  }
}
function stopAnim() {
  playblock.setVisible(false);
  pathanim.stop();
}

function clearPage() {
  for (var i=0;i<dynapi.document.children.length;i++) {
    var c = dynapi.document.children[i];
    if (c!=playblockc.setVisible(false);
  }
}

function setCP(cp) {
  document.b.cp.value = cp;
  drawBezier();
  startAnim();
}

var t="drawBezier();nstartAnim();nthis.watch('playblock.getX()');n"
+"this.watch('playblock.getY()');n"
+"this.switchMode('watch');";
dynapi.debug.setEvaluate(t);


</script>
</head>
<body bgcolor="#999999">

<form name=b>
Control Points: <input type=text name="cp" value="[200,150, 200,400, 250,100, 500,300]" size=50>
try these <input type=button value="1" onclick="setCP('[200,150, 200,150, 200,150, 400,150, 400,150, 400,150]');">
<input type=button value="2" onclick="setCP('[200,150, 200,150, 400,300]');">
<input type=button value="3" onclick="setCP('[200,200, 400,200, 400,400, 200,400, 200,200]');">
<input type=button value="4" onclick="setCP('[200,200, 200,300, 300,100, 500,200, 300,400, 500,300]');">
<br>
Steps: <input type=text name="steps" value="25" size=4><br>
Speed: <input type=text name="speed" value="40" size=4>ms<br>
<input type=button value="Draw" onclick="drawBezier()"><br>
<input type=button value="Clear Page" onclick="clearPage()"><br>
<input type=button value="Start Animation" onclick="startAnim()"><br>
<input type=button value="Stop Animation" onclick="stopAnim()"><br>
</form>

</body>
</html>

           
       

Download : Download nav_dynapi.zip nav_dynapi.zip


-

Leave a Comment / Note


 
Verification is used to prevent unwanted posts (spam). .

Follow Navioo On Twitter

JAVASCRIPT DHTML TUTORIALS

 Navioo Ajax Layer
» Bezier