Ext.data.JsonP.Ext_util_Animate({"alternateClassNames":[],"aliases":{},"enum":null,"parentMixins":[],"tagname":"class","subclasses":[],"extends":"Ext.Base","uses":[],"html":"
Hierarchy
Ext.BaseExt.util.AnimateRequires
Mixed into
Files
This animation class is a mixin.
\n\nExt.util.Animate provides an API for the creation of animated transitions of properties and styles.\nThis class is used as a mixin and currently applied to Ext.Element, Ext.CompositeElement,\nExt.draw.Sprite, Ext.draw.CompositeSprite, and Ext.Component. Note that Components\nhave a limited subset of what attributes can be animated such as top, left, x, y, height, width, and\nopacity (color, paddings, and margins can not be animated).
\n\nAll animations require three things - easing
, duration
, and to
(the final end value for each property)\nyou wish to animate. Easing and duration are defaulted values specified below.\nEasing describes how the intermediate values used during a transition will be calculated.\nEasing allows for a transition to change speed over its duration.\nYou may use the defaults for easing and duration, but you must always set a\nto property which is the end value for all animations.
Popular element 'to' configurations are:
\n\nPopular sprite 'to' configurations are:
\n\nThe default duration for animations is 250 (which is a 1/4 of a second). Duration is denoted in\nmilliseconds. Therefore 1 second is 1000, 1 minute would be 60000, and so on. The default easing curve\nused for all animations is 'ease'. Popular easing functions are included and can be found in Easing.
\n\nFor example, a simple animation to fade out an element with a default easing and duration:
\n\nvar p1 = Ext.get('myElementId');\n\np1.animate({\n to: {\n opacity: 0\n }\n});\n
\n\nTo make this animation fade out in a tenth of a second:
\n\nvar p1 = Ext.get('myElementId');\n\np1.animate({\n duration: 100,\n to: {\n opacity: 0\n }\n});\n
\n\nBy default all animations are added to a queue which allows for animation via a chain-style API.\nFor example, the following code will queue 4 animations which occur sequentially (one right after the other):
\n\np1.animate({\n to: {\n x: 500\n }\n}).animate({\n to: {\n y: 150\n }\n}).animate({\n to: {\n backgroundColor: '#f00' //red\n }\n}).animate({\n to: {\n opacity: 0\n }\n});\n
\n\nYou can change this behavior by calling the syncFx method and all\nsubsequent animations for the specified target will be run concurrently (at the same time).
\n\np1.syncFx(); //this will make all animations run at the same time\n\np1.animate({\n to: {\n x: 500\n }\n}).animate({\n to: {\n y: 150\n }\n}).animate({\n to: {\n backgroundColor: '#f00' //red\n }\n}).animate({\n to: {\n opacity: 0\n }\n});\n
\n\nThis works the same as:
\n\np1.animate({\n to: {\n x: 500,\n y: 150,\n backgroundColor: '#f00' //red\n opacity: 0\n }\n});\n
\n\nThe stopAnimation method can be used to stop any\ncurrently running animations and clear any queued animations.
\n\nYou can also set up complex animations with keyframes which follow the\nCSS3 Animation configuration pattern. Note rotation, translation, and scaling can only be done for sprites.\nThe previous example can be written with the following syntax:
\n\np1.animate({\n duration: 1000, //one second total\n keyframes: {\n 25: { //from 0 to 250ms (25%)\n x: 0\n },\n 50: { //from 250ms to 500ms (50%)\n y: 0\n },\n 75: { //from 500ms to 750ms (75%)\n backgroundColor: '#f00' //red\n },\n 100: { //from 750ms to 1sec\n opacity: 0\n }\n }\n});\n
\n\nEach animation you create has events for beforeanimate,\nafteranimate, and lastframe.\nKeyframed animations adds an additional keyframe event which\nfires for each keyframe in your animation.
\n\nAll animations support the listeners configuration to attact functions to these events.
\n\nstartAnimate: function() {\n var p1 = Ext.get('myElementId');\n p1.animate({\n duration: 100,\n to: {\n opacity: 0\n },\n listeners: {\n beforeanimate: function() {\n // Execute my custom method before the animation\n this.myBeforeAnimateFn();\n },\n afteranimate: function() {\n // Execute my custom method after the animation\n this.myAfterAnimateFn();\n },\n scope: this\n });\n},\nmyBeforeAnimateFn: function() {\n // My custom logic\n},\nmyAfterAnimateFn: function() {\n // My custom logic\n}\n
\n\nDue to the fact that animations run asynchronously, you can determine if an animation is currently\nrunning on any target by using the getActiveAnimation\nmethod. This method will return false if there are no active animations or return the currently\nrunning Ext.fx.Anim instance.
\n\nIn this example, we're going to wait for the current animation to finish, then stop any other\nqueued animations before we fade our element's opacity to 0:
\n\nvar curAnim = p1.getActiveAnimation();\nif (curAnim) {\n curAnim.on('afteranimate', function() {\n p1.stopAnimation();\n p1.animate({\n to: {\n opacity: 0\n }\n });\n });\n}\n
\nGet the reference to the current class from which this object was instantiated. Unlike statics,\nthis.self
is scope-dependent and it's meant to be used for dynamic inheritance. See statics\nfor a detailed comparison
Ext.define('My.Cat', {\n statics: {\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n alert(this.self.speciesName); // dependent on 'this'\n },\n\n clone: function() {\n return new this.self();\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat'\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\n
\nPerforms custom animation on this object.
\n\nThis method is applicable to both the Component class and the Sprite\nclass. It performs animated transitions of certain properties of this object over a specified timeline.
\n\nWhen animating a Component, the following properties may be specified in from
, to
, and keyframe
objects:
x
- The Component's page X position in pixels.
y
- The Component's page Y position in pixels
left
- The Component's left
value in pixels.
top
- The Component's top
value in pixels.
width
- The Component's width
value in pixels.
height
- The Component's height
value in pixels.
dynamic
- Specify as true to update the Component's layout (if it is a Container) at every frame of the animation.\nUse sparingly as laying out on every intermediate size change is an expensive operation.
For example, to animate a Window to a new size, ensuring that its internal layout and any shadow is correct:
\n\nmyWindow = Ext.create('Ext.window.Window', {\n title: 'Test Component animation',\n width: 500,\n height: 300,\n layout: {\n type: 'hbox',\n align: 'stretch'\n },\n items: [{\n title: 'Left: 33%',\n margins: '5 0 5 5',\n flex: 1\n }, {\n title: 'Left: 66%',\n margins: '5 5 5 5',\n flex: 2\n }]\n});\nmyWindow.show();\nmyWindow.header.el.on('click', function() {\n myWindow.animate({\n to: {\n width: (myWindow.getWidth() == 500) ? 700 : 500,\n height: (myWindow.getHeight() == 300) ? 400 : 300\n }\n });\n});\n
\n\nFor performance reasons, by default, the internal layout is only updated when the Window reaches its final \"to\"
\nsize. If dynamic updating of the Window's child Components is required, then configure the animation with\ndynamic: true
and the two child items will maintain their proportions during the animation.
Configuration for Ext.fx.Anim.\nNote that the to config is required.
\n\nthis
\n\nCall the original method that was previously overridden with override
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callOverridden();\n\n alert(\"Meeeeoooowwww\");\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\n This method has been deprecated
\nas of 4.1. Use callParent instead.
\n\nThe arguments, either an array or the arguments
object\nfrom the current method, for example: this.callOverridden(arguments)
Returns the result of calling the overridden method
\nCall the \"parent\" method of the current method. That is the method previously\noverridden by derivation or by an override (see Ext.define).
\n\n Ext.define('My.Base', {\n constructor: function (x) {\n this.x = x;\n },\n\n statics: {\n method: function (x) {\n return x;\n }\n }\n });\n\n Ext.define('My.Derived', {\n extend: 'My.Base',\n\n constructor: function () {\n this.callParent([21]);\n }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x); // alerts 21\n
\n\nThis can be used with an override as follows:
\n\n Ext.define('My.DerivedOverride', {\n override: 'My.Derived',\n\n constructor: function (x) {\n this.callParent([x*2]); // calls original My.Derived constructor\n }\n });\n\n var obj = new My.Derived();\n\n alert(obj.x); // now alerts 42\n
\n\nThis also works with static methods.
\n\n Ext.define('My.Derived2', {\n extend: 'My.Base',\n\n statics: {\n method: function (x) {\n return this.callParent([x*2]); // calls My.Base.method\n }\n }\n });\n\n alert(My.Base.method(10); // alerts 10\n alert(My.Derived2.method(10); // alerts 20\n
\n\nLastly, it also works with overridden static methods.
\n\n Ext.define('My.Derived2Override', {\n override: 'My.Derived2',\n\n statics: {\n method: function (x) {\n return this.callParent([x*2]); // calls My.Derived2.method\n }\n }\n });\n\n alert(My.Derived2.method(10); // now alerts 40\n
\n\nTo override a method and replace it and also call the superclass method, use\ncallSuper. This is often done to patch a method to fix a bug.
\nThe arguments, either an array or the arguments
object\nfrom the current method, for example: this.callParent(arguments)
Returns the result of calling the parent method
\nThis method is used by an override to call the superclass method but bypass any\noverridden method. This is often done to \"patch\" a method that contains a bug\nbut for whatever reason cannot be fixed directly.
\n\nConsider:
\n\n Ext.define('Ext.some.Class', {\n method: function () {\n console.log('Good');\n }\n });\n\n Ext.define('Ext.some.DerivedClass', {\n method: function () {\n console.log('Bad');\n\n // ... logic but with a bug ...\n\n this.callParent();\n }\n });\n
\n\nTo patch the bug in DerivedClass.method
, the typical solution is to create an\noverride:
Ext.define('App.paches.DerivedClass', {\n override: 'Ext.some.DerivedClass',\n\n method: function () {\n console.log('Fixed');\n\n // ... logic but with bug fixed ...\n\n this.callSuper();\n }\n });\n
\n\nThe patch method cannot use callParent
to call the superclass method
since\nthat would call the overridden method containing the bug. In other words, the\nabove patch would only produce \"Fixed\" then \"Good\" in the console log, whereas,\nusing callParent
would produce \"Fixed\" then \"Bad\" then \"Good\".
The arguments, either an array or the arguments
object\nfrom the current method, for example: this.callSuper(arguments)
Returns the result of calling the superclass method
\nReturns the current animation if this object has any effects actively running or queued, else returns false.
\nAnim if element has active effects, else false
\n\nReturns the current animation if this object has any effects actively running or queued, else returns false.
\nThis method has been deprecated since 4.0
\nReplaced by getActiveAnimation
\n\nAnim if element has active effects, else false
\n\nInitialize configuration for this class. a typical example:
\n\nExt.define('My.awesome.Class', {\n // The default config\n config: {\n name: 'Awesome',\n isAwesome: true\n },\n\n constructor: function(config) {\n this.initConfig(config);\n }\n});\n\nvar awesome = new My.awesome.Class({\n name: 'Super Awesome'\n});\n\nalert(awesome.getName()); // 'Super Awesome'\n
\nthis
\nGet the reference to the class from which this object was instantiated. Note that unlike self,\nthis.statics()
is scope-independent and it always returns the class from which it was called, regardless of what\nthis
points to during run-time
Ext.define('My.Cat', {\n statics: {\n totalCreated: 0,\n speciesName: 'Cat' // My.Cat.speciesName = 'Cat'\n },\n\n constructor: function() {\n var statics = this.statics();\n\n alert(statics.speciesName); // always equals to 'Cat' no matter what 'this' refers to\n // equivalent to: My.Cat.speciesName\n\n alert(this.self.speciesName); // dependent on 'this'\n\n statics.totalCreated++;\n },\n\n clone: function() {\n var cloned = new this.self; // dependent on 'this'\n\n cloned.groupName = this.statics().speciesName; // equivalent to: My.Cat.speciesName\n\n return cloned;\n }\n});\n\n\nExt.define('My.SnowLeopard', {\n extend: 'My.Cat',\n\n statics: {\n speciesName: 'Snow Leopard' // My.SnowLeopard.speciesName = 'Snow Leopard'\n },\n\n constructor: function() {\n this.callParent();\n }\n});\n\nvar cat = new My.Cat(); // alerts 'Cat', then alerts 'Cat'\n\nvar snowLeopard = new My.SnowLeopard(); // alerts 'Cat', then alerts 'Snow Leopard'\n\nvar clone = snowLeopard.clone();\nalert(Ext.getClassName(clone)); // alerts 'My.SnowLeopard'\nalert(clone.groupName); // alerts 'Cat'\n\nalert(My.Cat.totalCreated); // alerts 3\n
\nStops any running effects and clears this object's internal effects queue if it contains any additional effects\nthat haven't started yet.
\nThe Element
\nStops any running effects and clears this object's internal effects queue if it contains any additional effects\nthat haven't started yet.
\nThis method has been deprecated since 4.0
\nReplaced by stopAnimation
\n\nThe Element
\nEnsures that all effects queued after syncFx is called on this object are run concurrently. This is the opposite\nof sequenceFx.
\nthis
\nAdd methods / properties to the prototype of this class.
\n\nExt.define('My.awesome.Cat', {\n constructor: function() {\n ...\n }\n});\n\n My.awesome.Cat.addMembers({\n meow: function() {\n alert('Meowww...');\n }\n });\n\n var kitty = new My.awesome.Cat;\n kitty.meow();\n
\nAdd / override static properties of this class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.addStatics({\n someProperty: 'someValue', // My.cool.Class.someProperty = 'someValue'\n method1: function() { ... }, // My.cool.Class.method1 = function() { ... };\n method2: function() { ... } // My.cool.Class.method2 = function() { ... };\n});\n
\nthis
\nBorrow another class' members to the prototype of this class.
\n\nExt.define('Bank', {\n money: '$$$',\n printMoney: function() {\n alert('$$$$$$$');\n }\n});\n\nExt.define('Thief', {\n ...\n});\n\nThief.borrow(Bank, ['money', 'printMoney']);\n\nvar steve = new Thief();\n\nalert(steve.money); // alerts '$$$'\nsteve.printMoney(); // alerts '$$$$$$$'\n
\nThe class to borrow members from
\nThe names of the members to borrow
\nthis
\nCreate a new instance of this Class.
\n\nExt.define('My.cool.Class', {\n ...\n});\n\nMy.cool.Class.create({\n someConfig: true\n});\n
\n\nAll parameters are passed to the constructor of the class.
\nthe created instance.
\nCreate aliases for existing prototype methods. Example:
\n\nExt.define('My.cool.Class', {\n method1: function() { ... },\n method2: function() { ... }\n});\n\nvar test = new My.cool.Class();\n\nMy.cool.Class.createAlias({\n method3: 'method1',\n method4: 'method2'\n});\n\ntest.method3(); // test.method1()\n\nMy.cool.Class.createAlias('method5', 'method3');\n\ntest.method5(); // test.method3() -> test.method1()\n
\nThe new method name, or an object to set multiple aliases. See\nflexSetter
\nThe original method name
\nGet the current class' name in string format.
\n\nExt.define('My.cool.Class', {\n constructor: function() {\n alert(this.self.getName()); // alerts 'My.cool.Class'\n }\n});\n\nMy.cool.Class.getName(); // 'My.cool.Class'\n
\nclassName
\nAdds members to class.
\nThis method has been deprecated since 4.1
\nUse addMembers instead.
\n\nOverride members of this class. Overridden methods can be invoked via\ncallParent.
\n\nExt.define('My.Cat', {\n constructor: function() {\n alert(\"I'm a cat!\");\n }\n});\n\nMy.Cat.override({\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callParent(arguments);\n\n alert(\"Meeeeoooowwww\");\n }\n});\n\nvar kitty = new My.Cat(); // alerts \"I'm going to be a cat!\"\n // alerts \"I'm a cat!\"\n // alerts \"Meeeeoooowwww\"\n
\n\nAs of 4.1, direct use of this method is deprecated. Use Ext.define\ninstead:
\n\nExt.define('My.CatOverride', {\n override: 'My.Cat',\n constructor: function() {\n alert(\"I'm going to be a cat!\");\n\n this.callParent(arguments);\n\n alert(\"Meeeeoooowwww\");\n }\n});\n
\n\nThe above accomplishes the same result but can be managed by the Ext.Loader\nwhich can properly order the override and its target class and the build process\ncan determine whether the override is needed based on the required state of the\ntarget class (My.Cat).
\nThis method has been deprecated since 4.1.0
\nUse Ext.define instead
\n\nThe properties to add to this class. This should be\nspecified as an object literal containing one or more properties.
\nthis class
\n