Mega Code Archive

 
Categories / JavaScript DHTML / Smartclient
 

SmartClient animation programming

<!-- Isomorphic SmartClient Copyright(c) 1998 and beyond Isomorphic Software, Inc. "SmartClient" is a trademark of Isomorphic Software, Inc. All rights reserved. Open Source License SmartClient source code, located under the source/ directory, and the resulting assembled modules  in isomorphic/system/modules/, as well as JavaScript and CSS files under the isomorphic/skins directory are  licensed under the terms of the GNU Lesser General Public License, version 3.  The text of the LGPLv3 license is available online at http://www.gnu.org/licenses/lgpl-3.0.html If your project precludes the use of this license, or if you'd like to support SmartClient LGPL,  we encourage you to buy a commercial license. Icon Experience Collection Selected 16x16 icons within the isomorphic/skins directory are part of the Icon Experience collection  (http://www.iconexperience.com) and may be freely used with any SmartClient components without charge,  but may not be used as part of screen designs separate from SmartClient components without a purchase  of a license from Icon Experience. We are working to replace these icons as soon as possible. All other media found under the isomorphic/skins directory may be used under the LGPLv3. Commercial Licenses A number of commercial licenses are available for purchase. Please see http://smartclient.com/license. Warranty Disclaimer This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even  the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General  Public License for more details. Copyright 2001 and beyond Isomorphic Software, Inc. Last revised July 20, 2008.  --> <!-- The following code is revised from SmartClient demo code(SmartClient_70rc2_LGPL.zip).--> <HTML> <HEAD> <TITLE>SmartClient animation programming</TITLE>     <SCRIPT>var isomorphicDir = "isomorphic/"</SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_Core.js></SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_Foundation.js></SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_Containers.js></SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_Grids.js></SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_Forms.js></SCRIPT>     <SCRIPT SRC=isomorphic/system/modules/ISC_DataBinding.js></SCRIPT>   <SCRIPT SRC=isomorphic/skins/SmartClient/load_skin.js></SCRIPT> </HEAD><BODY bgcolor=tan><SCRIPT> // // SmartClient animation programming // // Demonstrates the following public methods for component animations: // //      animateMove (left, top, callback, time, acceleration) //      animateResize (width, height, callback, time, acceleration) //      animateRect (left, top, width, height, callback, time, acceleration) //      animateFade (opacity, callback, time, acceleration) //      animateShow (slideIn, callback, time, acceleration) //      animateHide (slideOut, callback, time, acceleration) //      animateScroll (scrollLeft, scrollTop, callback, time, acceleration) // // // interval 20ms = 50fps isc.Animation.interval = 20; Canvas.create({     ID:"dest",     overflow:"hidden",     align:"center",     showEdges:true,     edgeSize:5,     edgeImage:"[SKIN]/rounded/frame/FFFFFF/5.png",     backgroundColor:"#FFFFA0",     canDragReposition:true,     dragRepositionStop:"this.sendToBack()",     canDragResize:true,     dragResizeStop:"this.sendToBack()",     dragAppearance:"target",     contents:"<b>Destination</b> (drag to move or resize)",     left:400, top:200, width:200, height:200 }) Canvas.create({     ID:"anim",     overflow:"hidden",     border:"1px solid black",     backgroundColor:"#A0FFA0",     canDragReposition:true,     canDragResize:true,     dragAppearance:"target",     smoothFade:true,     contents:"1<br>2<br>3<br><b>Animated Object</b> (drag to move or resize)<br>3<br>2<br>1",     left:100, top:250, width:100, height:100 }) var numberStackHTML = "0"; for (i=1; i<100; i++) numberStackHTML += "<br>"+i; HTMLPane.create({     ID:"scroller",     showEdges:true,     edgeSize:5,     edgeImage:"[SKIN]/rounded/frame/FFFFFF/5.png",     backgroundColor:"#D0D0FF",     canDragReposition:true,     canDragResize:true,     dragAppearance:"target",     contents:numberStackHTML,     left:640, top:10, width:100, height:160 }) Slider.create({     ID:"timeSlider",     left:20, top:0, width:550,     vertical:false,     value:1000,     minValue:250,     maxValue:4000,     numValues:16,     title:"Duration (ms)",     animateThumb:true,     animateThumbInit:true }) Button.create({     left:260, top:150,     title:"<b>Reset</b>",     click: function () {         anim.setRect(100,250,100,100);         anim.setOpacity(100);         anim.scrollTo(0,0);         anim.show();         dest.setRect(400,200,200,200);         scroller.setRect(640,10,100,160);         scroller.scrollTo(0,0);     } }) Button.create({     left:20, top:80,     title:"Move",     click: function () {anim.animateMove(         dest.getLeft(),         dest.getTop(),         null,         timeSlider.getValue()     )} }) Button.create({     left:20, top:110,     title:"Resize",     click: function () {anim.animateResize(         dest.getWidth(),         dest.getHeight(),         null,         timeSlider.getValue()     )} }) Button.create({     left:140, top:80,     title:"Move &amp; Resize",     click: function () {anim.animateRect(         dest.getLeft(),         dest.getTop(),         dest.getWidth(),         dest.getHeight(),         null,         timeSlider.getValue()     )} }) Button.create({     left:140, top:110,     title:"Move, Resize",     click: function () {anim.animateMove(         dest.getLeft(),         dest.getTop(),         "anim.animateResize(dest.getWidth(),dest.getHeight(),null,timeSlider.getValue())",         timeSlider.getValue()     )} }) Button.create({     left:260, top:80,     title:"Fade out", //    click: function () {anim.animateFade(0, null, timeSlider.getValue())}     click: function () {anim.animateHide("fade", null, timeSlider.getValue())} }) Button.create({     left:260, top:110,     title:"Fade in", //    click: function () {anim.animateFade(100, null, timeSlider.getValue())}     click: function () {anim.animateShow("fade", null, timeSlider.getValue())}     }) Button.create({     left:380, top:80,     title:"Slide out",     click: function () {anim.animateHide("slide", null, timeSlider.getValue())} }) Button.create({     left:380, top:110,     title:"Slide in",     click: function () {anim.animateShow("slide", null, timeSlider.getValue())} }) Button.create({     left:500, top:80,     title:"Wipe out",     click: function () {anim.animateHide("wipe", null, timeSlider.getValue())} }) Button.create({     left:500, top:110,     title:"Wipe in",     click: function () {anim.animateShow("wipe", null, timeSlider.getValue())} }) Button.create({     left:760, top:50,     title:"Scroll top",     click: function () {scroller.animateScroll(0, 0, null, timeSlider.getValue())} }) Button.create({     left:760, top:80,     title:"Scroll middle",     click: function () {scroller.animateScroll(0, (scroller.getScrollHeight()-scroller.getHeight())/2, null, timeSlider.getValue())} }) Button.create({     left:760, top:110,     title:"Scroll end",     click: function () {scroller.animateScroll(0, scroller.getScrollBottom(), null, timeSlider.getValue())} }) FormLayout.create({     left:150, top:550, width:300, backgroundColor:"white", border:"1px solid black",     titlePrefix:"<b>", titleSuffix:"</b>",     items:[         {name:"Acceleration", type:"radioGroup",              valueMap:["smoothStart", "smoothEnd", "smoothStartEnd", "none", "custom"],             defaultValue:"smoothEnd",             change:function (form, item, value, oldValue) {                 if (value == "custom") {                     // custom acceleration function                     isc.Canvas.addProperties({                         animateAcceleration:function(ratio) { return Math.pow(ratio, 6) }                     });                 } else {                     // built-in acceleration functions                     isc.Canvas.addProperties({animateAcceleration:value})                 }             }         }     ] }) </SCRIPT></BODY></HTML>