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.js98
1 files changed, 98 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/latex/movie15/animation.js b/Master/texmf-dist/doc/latex/movie15/animation.js
new file mode 100644
index 00000000000..7c870a1b498
--- /dev/null
+++ b/Master/texmf-dist/doc/latex/movie15/animation.js
@@ -0,0 +1,98 @@
+///////////////////////////////////////////////////////////////////////
+//
+// 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.
+//
+///////////////////////////////////////////////////////////////////////
+
+///////////////////////////////////////////////////////
+// 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;
+scene.activateAnimation(myAnim);
+
+//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
+);
+
+//menu handler to control speed
+menuEventHandler = new MenuEventHandler();
+menuEventHandler.onEvent = function(e) {
+ if (e.menuItemName == "faster") {
+ myAnim.speed *= 1.25;
+ }
+ else if (e.menuItemName == "slower") {
+ myAnim.speed /= 1.25;
+ }
+ else if (e.menuItemName == "default") {
+ myAnim.speed = rate;
+ }
+};
+runtime.addEventHandler(menuEventHandler);
+
+//key handler to control speed
+keyEventHandler = new KeyEventHandler();
+keyEventHandler.onKeyDown = true;
+keyEventHandler.onEvent = function(e) {
+ switch(e.characterCode) {
+ case 30: //key up
+ myAnim.speed *= 1.05;
+ break;
+
+ case 31: //key down
+ myAnim.speed /= 1.05;
+ break;
+
+ case 4: //key home
+ myAnim.speed = rate;
+ break;
+ }
+};
+runtime.addEventHandler(keyEventHandler);
+
+//run the animation using a TimeEventHandler
+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;
+ }
+ }
+};
+runtime.addEventHandler(myTimer);