Mike Posted November 3, 2013 Share Posted November 3, 2013 With this code: tempBrick.animations.add('idle', ['brick_' + bID + '_1.png'], 10, false, false); tempBrick.animations.add('brick_die', [ 'brick_' + bID + '_1.png', 'brick_' + bID + '_2.png', 'brick_' + bID + '_3.png', 'brick_' + bID + '_4.png' ], 10, false, false); tempBrick.animations.add('brick_popin', [ 'brick_' + bID + '_4.png', 'brick_' + bID + '_3.png', 'brick_' + bID + '_2.png', 'brick_' + bID + '_1.png' ], 10, false, false);And then later I want to play and add custom callback when animation is played: I saw that there is: onComplete() and also a onAnimationComplete event but for that I need the animation instance... So what i thought is to get the instance from the sprite.animations ... something like sprite.animations.get("brick_die");But the animationMnager doesn't have such a thing... there is a /*** @property {object} _anims - An internal object that stores all of the Animation instances.* @private*/ this._anims = {}; But I don't think it's supposed to be used... Also I could make a instance once I'm adding them to the sprite.animation like: var IdleBrickAnimation = tempBrick.animations.add('idle', ['brick_' + bID + '_1.png'], 10, false, false); and then: IdleBrickAnimation.onComplete(myCallBack); But since I do it in the different places and methods I expected that there is a way to get a animation by name and then play it and add a callback specifically for this play. Link to comment Share on other sites More sharing options...
rich Posted November 3, 2013 Share Posted November 3, 2013 Hmm nope there isn't a command to bring back a list of animations that have been created (or a single one). However the onAnimationComplete event files from the Sprite, not the Animation itself, so the same event will fire regardless of which animation triggered it (the animation instance is the 2nd parameter sent to the callback). Equally there's nothing stopping you add the callback directly after playing an animation. Link to comment Share on other sites More sharing options...
Mike Posted November 3, 2013 Author Share Posted November 3, 2013 Hmm here what I made... //_brick.animations.play("brick_die", 10, false, true); //kill the sprite on animation end _brick.animations.play("brick_die", 10); //just play _brick.events.onAnimationComplete.add(doSomething, this); function doSomething (sprite) { //check which animation was finished console.log(sprite.animations.currentAnim.name); console.log("Animation " + sprite.animations.currentAnim.name + " ended!"); //sprite.destroy(); //not working // sprite.kill(); //working } I'll definitely send you some code for the examples about animation finish callbacks and sprite events since there is such a section in the examples I'm marking the topic as solved cause it's solved but generally there is still a discussion cause you didn't say what do you think of adding such a feature sprite.animations.get("animation_name"); and/or a custom callback passed as argument to play(); DWboutin 1 Link to comment Share on other sites More sharing options...
rich Posted November 4, 2013 Share Posted November 4, 2013 doSomething is sent 2 values: sprite is first, but the animation that ended is 2nd. So you don't need to do any of those currentAnim checks inside the function.doSomething(sprite, animation) { if (animation.name == 'boom') { .. }} Link to comment Share on other sites More sharing options...
Recommended Posts