diff options
Diffstat (limited to 'Master/texmf-dist/doc/latex/movie15/animation.js')
-rw-r--r-- | Master/texmf-dist/doc/latex/movie15/animation.js | 98 |
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); |