summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/movie15/animation.js
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/doc/latex/movie15/animation.js')
-rw-r--r--Master/texmf-dist/doc/latex/movie15/animation.js100
1 files changed, 51 insertions, 49 deletions
diff --git a/Master/texmf-dist/doc/latex/movie15/animation.js b/Master/texmf-dist/doc/latex/movie15/animation.js
index 7c870a1b498..99829252365 100644
--- a/Master/texmf-dist/doc/latex/movie15/animation.js
+++ b/Master/texmf-dist/doc/latex/movie15/animation.js
@@ -1,52 +1,63 @@
-///////////////////////////////////////////////////////////////////////
+/////////////////////////////////////////////////////////////////
//
// animation.js
//
// JavaScript for use with `3Djscript' option of \includemovie
//
-// * Activates animation embedded in the u3d file.
-// * Arrow keys `Down', `Up' can be used for speeding up and slowing
-// down a running animation, key `Home' for reverting to the default
-// speed.
+// 888888888888888888888888888888888888888888888888888888888888
+// * 88 Set includemovie-option `repeat=0', to take effect !!! 88
+// 888888888888888888888888888888888888888888888888888888888888
//
-///////////////////////////////////////////////////////////////////////
-
-///////////////////////////////////////////////////////
-// adjustable parameters
-///////////////////////////////////////////////////////
-var rate = 1; // 1 --> use original speed as default
-var palindrome = true; // true --> play forth and back
-///////////////////////////////////////////////////////
+// * Activates keyframe animation embedded in the u3d file.
+// * Arrow keys `Down', `Up' can be used for speeding up and
+// slowing down a running animation, key `Home' for reverting
+// to the default speed.
+//
+// * Adjustable parameters:
+var rate = 1; // 1 --> use original speed as default
+var palindrome = true; // true --> play forth and back
+//
+/////////////////////////////////////////////////////////////////
//get the first animation in the scene
var myAnim = scene.animations.getByIndex(0);
-rate = Math.abs(rate);
-myAnim.speed = rate;
-myAnim.forward = true;
+myAnim.wallTime = 0;
+myAnim.speed = 1;
+myAnim.myLength = myAnim.endTime - myAnim.startTime;
scene.activateAnimation(myAnim);
+//method to set animation speed
+myAnim.setSpeed = function (speed) {
+ speed = Math.abs(speed);
+ this.wallTime /= speed/this.speed; //correct the walltime
+ this.speed = speed;
+};
+
+//method to change animation speed by a factor
+myAnim.changeSpeed = function (mult) {
+ this.wallTime /= mult; //correct the walltime
+ this.speed *= mult;
+};
+
+//set default speed
+myAnim.setSpeed(rate);
+
//menu items
-runtime.addCustomMenuItem(
- "faster", "Faster (Key Up)", "default", 0
-);
-runtime.addCustomMenuItem(
- "slower", "Slower (Key Down)", "default", 0
-);
-runtime.addCustomMenuItem(
- "default", "Default Speed (Key Home)", "default", 0
-);
+runtime.addCustomMenuItem("faster", "Faster (Key Up)", "default", 0);
+runtime.addCustomMenuItem("slower", "Slower (Key Down)", "default", 0);
+runtime.addCustomMenuItem("default", "Default Speed (Key Home)", "default", 0);
//menu handler to control speed
menuEventHandler = new MenuEventHandler();
menuEventHandler.onEvent = function(e) {
if (e.menuItemName == "faster") {
- myAnim.speed *= 1.25;
+ myAnim.changeSpeed(1.25);
}
else if (e.menuItemName == "slower") {
- myAnim.speed /= 1.25;
+ myAnim.changeSpeed(1/1.25);
}
else if (e.menuItemName == "default") {
- myAnim.speed = rate;
+ myAnim.setSpeed(rate);
}
};
runtime.addEventHandler(menuEventHandler);
@@ -57,15 +68,15 @@ keyEventHandler.onKeyDown = true;
keyEventHandler.onEvent = function(e) {
switch(e.characterCode) {
case 30: //key up
- myAnim.speed *= 1.05;
+ myAnim.changeSpeed(1.05);
break;
case 31: //key down
- myAnim.speed /= 1.05;
+ myAnim.changeSpeed(1/1.05);
break;
case 4: //key home
- myAnim.speed = rate;
+ myAnim.setSpeed(rate);
break;
}
};
@@ -75,24 +86,15 @@ runtime.addEventHandler(keyEventHandler);
myTimer = new TimeEventHandler();
myTimer.onTimeChange = true;
myTimer.onEvent = function(e) {
- if (myAnim.forward) {
- myAnim.currentTime += e.deltaTime * myAnim.speed;
- if (myAnim.currentTime > myAnim.endTime) {
- if (palindrome == true) {
- myAnim.currentTime = myAnim.endTime;
- myAnim.forward = false;
- }
- else {
- myAnim.currentTime = myAnim.startTime;
- }
- }
- }
- else {
- myAnim.currentTime -= e.deltaTime * myAnim.speed;
- if (myAnim.currentTime < myAnim.startTime) {
- myAnim.currentTime = myAnim.startTime;
- myAnim.forward = true;
- }
+ myAnim.wallTime += e.deltaTime;
+ if (palindrome == true) {
+ myAnim.currentTime =
+ myAnim.startTime
+ + myAnim.myLength/2
+ * (1 - Math.cos(Math.PI * myAnim.speed/myAnim.myLength * myAnim.wallTime));
+ } else {
+ myAnim.currentTime = myAnim.startTime
+ + (myAnim.speed * myAnim.wallTime % myAnim.myLength);
}
};
runtime.addEventHandler(myTimer);