In the market are existing a lot of Tween libraries to help Flash/Flex developers to build cool actionscript animation making their life easier, like
TweenLite/
TweenMaxor
Caurina Tweener.
These libraries included cool stuff not provided from the default AS3 tween class like colors animation, animated drop, blur, shadow effect and much more.
So, in this post, i want to show you another tween engine, Tweensy, that provide a lot of cool bitmap and particle effects like smoke, fire and other 'magical'ÃÆââ‚Â
¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€ Ã¢âÃÂ
¢Ã¢â€šÂ¬Ã…¡Ã‚¬Ã¢â€žÂ¢ÃƒÆ’Æâ€ââ
€žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã‚ ÃƒÃ
‚¢Ã¢â€šÂ¬ÃÂ
¢Ã¢â‚¬Å¾Ã‚¢ÃƒÆâ€
™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’Ãâ€
šÃ‚¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚¬Ãââ‚Â
¬Ã…¡Ãƒâ€šÃ‚ ÃƒÆ’ƒÂ
¢Ã¢âââ€Ã
…¡Ã‚¬Ã…¡Ã‚¬ÃÃ
ƒâ€šÃ‚¢ÃƒÂ¢Ã¢â€šÂ¬Ã…¾ÃÃÂ
¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’Æ’Ãâââ€
šÂ¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€ Ã
ƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆâ€
™Ãƒâ€ Ã¢â‚¬â„¢ÃƒÆ’‚¢ÃÃ
ƒâ€šÃ‚¢ÃƒÂ¢Ã¢â€šÂ¬Ã…¡ÃÃÂ
¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¬ÃƒÆ’‚ÃâÃ
¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚ ÃƒÆ’Æ’Ãââ‚Â
¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€šÃÆ
’ƒâ€šÃ‚¢ÃƒÆ’ÃÆâ€
™ÃƒÂ¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’¢âÃ
¢â‚¬Å¡Ã‚¬Ã…¡ÃÆâ€
™Ãƒâ€ ’‚¬ÃÃ
ƒâ€ ’ƒÂ¢ÃÆÃ
¢â‚¬â„¢ÃƒÆ’‚¢Ã¢â€šÂ¬ÃÆ
’ƒâ€¦Ã‚¾Ãƒâ€šÃÃ
†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’Æ’ÃÃ
ƒÂ¢Ã¢â€šÂ¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€Ãâ
€šÃ‚ ÃƒÆ’¢â‚¬â„¢ÃÃâ
€ ’ƒâ€Â
 ÃƒÂ¢Ã¢â€ÅÂÂ
¡ÃƒÆ’‚¬Ã¢â€žÂ¢Ã
ƒÆ’Æâ€â„
¢ÃƒÆ’‚ÂÂÂÂ
¢ÃƒÆ’ĮբÃÆ
’ƒÆ’¢â‚Â
¬Ã…¡Ãâ€Ã
…¡Ãƒâ€šÃ‚¬ÃƒÆâ€â„
¢ÃƒÆ’¢â‚¬Å¡ÃƒÃÂ
¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚ ÃƒÃââ‚
¬Â ’Æ’ÃÆââ
‚¬â„¢ÃƒÆ’¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢âÃ
¢â€šÂ¬Ã…¾Ã‚¢ÃƒÆ’ĉââ
€šÂ¬Ã…¡Ãƒâ€šÃÆ
’‚¢ÃƒÃÃ
¢â‚¬Â ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€Ãâ€
¦Ã‚¡ÃƒÆ’‚¢Ãƒ
¢âÃÂ
¢Ã¢â€šÂ¬Ã…¡Ã‚¬
Å¡Ã
ƒÆ’ƒÆ’â€Ã
ƒÆ’…¡Ãƒâ€šÃ‚ÃÆ
’‚¬ÃƒÆ’Æâ
€™Ãƒâ€šÃâââ
€šÂ¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’Æ’Ãâ€Ã
…¡Ãƒâ€šÃ‚¢ÃƒÆ’¢ââââ‚
¬Å¡Ã‚¬Ã…¡Ã‚¬ÃÆâ€â„
¢ÃƒÆ’¢â‚¬Â¦Ãƒâ€šÃ‚¾ÃƒÃ
ƒÆ’†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…¡Ã
ƒÆ’ƒâ€šÃ‚¢Ã
ƒÆ’Įâ€ââ
€žÂ¢ÃƒÆ’ƒâ€ Ã¢ââ€
šÂ¬Ã¢â€žÂ¢ÃƒÆ’Æ’Ã
ƒÂ¢Ã¢â€šÂ¬Ã‚ ÃƒÂÃ
ƒâ€šÃ‚¢ÃƒÆ’¢â€šÂ¬Ã¢Ã
¢â‚¬Å¾Ã‚¢ÃƒÆ’Ã
ƒÆ’ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’ÂÂÃ
‚¢ÃƒÆ’¢â€šÂ¬Ã‚ÃÆ
’‚ ÃƒÆ’ÂÃââ‚
¬Å¡Ãƒâ€šÃ‚¢ÃƒÆ’ƒÂ¢Ã¢â‚Â
¬Ã…¡Ã‚¬ÃÃâ€Å
¡Ãƒâ€šÃ‚¢ÃƒÆ’¢â‚¬Å¾Ãâ€
šÃ‚¢ÃƒÆ’ÆÃ
ƒÆ’¢â‚¬â„¢ÃƒÆ’†Ã
¢â‚¬â„¢ÃƒÃÃ
¢â‚¬Â ’¢ÃÃâ€Å
¡Ãƒâ€šÃ‚¢ÃƒÆ’¢â‚¬Å¡Ãâ€
šÃ‚¬Ãƒâ€¦Ãâ€Å
¡Ãƒâ€šÃ‚¡ÃƒÆ’ĮÃÆ
’¢â‚¬â„¢ÃƒÆ’¢âÃÃ
‚¢Ã¢â€šÂ¬Ã…¡Ã‚¬Ã…¡Ã
ƒÆ’â€Ãââ‚
¬Â¦Ãƒâ€šÃ‚¡ÃƒÆ’ƒâ€šÃ‚Ãâ€Å
¡Ãƒâ€šÃ‚¢ÃƒÆ’ƒÆ’Æââââ
‚¬Å¡Ã‚¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€ Ã¢ÃÃ
‚¢Ã¢â‚¬Å¡Ã‚¬Ã¢â€žÂ¢ÃƒÆ’Æâââ€
šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã‚ ÃÆâ€â
„¢ÃƒÆ’‚¢Ã¢â€šÂ¬ÃÆâ€
™Ãƒâ€šÃ‚¢ÃƒÂ¢Ã¢â€šÂ¬Ã…¾Ã‚¢ÃƒÆâÃ
¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’ÃÆ
’‚¢Ã¢â€šÂ¬Ãâ
€¦Ã‚¡ÃƒÆ’â
€šÃâ€Ãâ
€¦Ã‚¡ÃƒÆ’‚¢ÃÆâ€â„Â
¢ÃƒÆ’ƒâ€ Ã¢â‚¬â„¢ÃƒÆ’ââââ
‚¬Å¡Ã‚¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢Ã
ƒÆ’ƒÆ’ƒâ€
šÃ‚ÂÃ
ƒâ€šÃ‚¢ÃƒÆ’ĮÃÂÂ
¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€šÃââ
‚¬Å¡Ãƒâ€šÃ‚¢ÃƒÆ’Æ’Ãâ€
šÃ‚¢ÃƒÂ¢Ã¢ââââ€
šÂ¬Ã…¡Ã‚¬Ã…¡Ã‚¬ÃÆâ€â
„¢ÃƒÆ’¢â‚¬Â¦Ãƒâ€šÃ‚¡Ãƒ
ƒâ€šÃ
ƒÆ’ƒÆ’‚¬ÃÆ
’ƒÆ’Įâ€âÃ
¢â‚¬Å¾Ã‚¢ÃƒÆ’ƒÂ¢Ã¢â€ÅÂ
¡Ãƒâ€šÃ‚¬Ãƒâ€šÃ‚¦ÃƒÆÃ
ƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã…¡ÃÃâ€
’‚¡ÃÆÃ
¢â‚¬â„¢ÃƒÆ’†â€™Ãƒâ€ Ã¢â‚¬â„¢Ã
ƒÆ’ƒâ€ Ã¢â‚ÂÂ
¬ÃƒÂ¢Ã¢â‚¬Å¾Ã‚¢ÃƒÆ’Æ’Ãââ
‚¬Å¡Ãƒâ€šÃ‚¢ÃƒÆ’¢ââÃÂ
¢Ã¢â€šÂ¬Ã…¡Ã‚¬Ã…¡Ã‚¬ÃÆÃ
¢â‚¬â„¢ÃƒÆ’¢â‚¬Â¦Ãƒâ€šÃ‚¡ÃÆââ
‚¬â„¢ÃƒÆ’†â€™Ãƒâ€ Ã¢â‚¬â„¢Ã
ƒÆ’¢â‚ÂÃ
ƒâ€šÃ‚¬ÃƒÆ’…¡ÃÆâ€ââ€
žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€šÂ¬Ã…¡ÃƒÃÃ
‚¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¬ÃƒÃââ
‚¬Â ’Æ’ÃÆâ
€™ÃƒÂ¢Ã¢â€šÂ¬Ã‚ ÃƒÂ¢Ã¢â€šÂ¬Ã¢â
€žÂ¢ÃƒÆ’ĉâÃÂ
¢Ã¢â€šÂ¬Ã…¡Ã‚¬Ã‚ ÃƒÂ¢ÃÂÂÂ
¢ÃƒÆ’¢â‚¬Å¡Ã‚¬Ã¢â€ÅÃ
‚¾Ãƒâ€šÃ‚¢ÃƒÆ’ĮÃ
ƒÂ¢Ã¢â€šÂ¬Ã¢â€žÂ¢ÃƒÆ’ƒâ€šÃÃ
ƒÂ¢Ã¢â€šÂ¬Ã…¡Ãƒâ€šÃ‚¢ÃƒÆ’Æ’Ãââ
‚¬Å¡Ãƒâ€šÃ‚¢ÃƒÆ’¢ââÃÂ
¢Ã¢â‚¬Å¡Ã‚¬Ã…¡Ã‚¬Ã…¡ÃÆÃ
¢â‚¬â„¢ÃƒÆ’¢â‚¬Å¡Ãƒâ€šÃ‚¬ÃÆââ
‚¬â„¢ÃƒÆ’†â€™ÃƒÂ¢Ã¢â€šÂ¬Ã…Â
¡ÃƒÆ’‚ÂÂÂÂ
¦ÃƒÆ’ƒÆ’Æâ€
™Ãƒâ€ Ã¢ââÃ
¢â€šÂ¬Ã…¡Ã‚¬Ã¢â€žÂ¢ÃƒÆ’Æâ€â„
¢ÃƒÆ’‚¢Ã¢ÃÃâ
€šÃ‚¢ÃƒÂ¢Ã¢â‚¬Å¡Ã‚¬Ã…¡Ã‚ÂÂÂ
¬ÃƒÆ’ƒâ€¦Ã‚¡
ÃÆâ€Ã
¢â€žÂ¢ÃƒÆ’ƒÂ¢Ã¢â€Ãâ€
¦Ã‚¡Ãƒâ€šÃ‚¬Ãƒâ€¦Ã‚¡ÃƒÃâ€
 Ã¢â‚¬â„¢ÃƒÆ’¢â‚¬Å¡ÃÃ
ƒâ€ ’‚¡ stuff ;)

See the final resultSOURCE CODE:To compile your flash file you'll need to download the Flash Cs4 source code (below) and get the right library assets.
Furthermore, you won't find the Tweensy API inside the zip file because you should download the last version from
http://code.google.com/p/tweensy/.
Tweensy is still in beta and to create this sample(getting much more than inspiration from the provided demo) I used an old library version, so when you'll download the new one you could get some compiler errors.
package {
import flash.display.*;
import flash.events.*;
import flash.filters.BlurFilter;
import flash.geom.ColorTransform;
import flash.text.TextField;
import flash.utils.getDefinitionByName;
import com.flashdynamix.motion.*;
import com.flashdynamix.motion.effects.*;
import com.flashdynamix.motion.extras.Emitter;
import com.flashdynamix.motion.layers.BitmapLayer;
public class MenuEmitter extends Sprite {
public var menuButton:MovieClip;
private var emittor : Emitter;
private var layer : BitmapLayer;
private var ct : ColorTransform;
private var bf : BlurFilter;
private var tx : Number;
private var ty : Number;
public function MenuEmitter() {
// Create a Bitmap Layer where we'll draw the Emitter and apply some effects
layer = new BitmapLayer(900, 400);
bf = new BlurFilter(10, 10, 2);
layer.add(new ColorEffect(new ColorTransform(1, 1, 1, 0.9)));
layer.add(new FilterEffect(bf));
// Set quality to LOW to get better performance
stage.quality = StageQuality.LOW;
// The Emitter MovieClip "BluePrint"
var Box : Class = getDefinitionByName("Box") as Class;
// Emitter Creation
ct = new ColorTransform(1, 1, 1, 1, -115, -30, 70);
emittor = new Emitter(Box, null, 2, 1, "0, 360", "1, 110", 1, BlendMode.ADD);
emittor.transform.colorTransform = ct;
emittor.endColor = {redOffset:255, greenOffset:-10, blueOffset:-270, alphaOffset:-255};
// We can't build the emitter on 0,0 because it will be cutted on the top and on the left side
emittor.x = 150
emittor.y = 150
// Display on screen
layer.draw(emittor.holder);
menuButton.addChildAt(layer,0);
// Stop emitter at startTime
emittor.stop()
// RollOver / RollOut on button
menuButton.gfx.buttonMode = true;
menuButton.gfx.addEventListener(MouseEvent.ROLL_OVER, onMenuRollOver)
menuButton.gfx.addEventListener(MouseEvent.ROLL_OUT, onMenuRollOut)
// ENTER_FRAME event
// We'll update the emittor properties to generate random
addEventListener(Event.ENTER_FRAME, update)
}
/**
* Update emittor rotation properties to have different rotation for each particle
*/
private function update(e : Event) : void {
emittor.rotation += 20;
}
/**
* At Button rollOver start the emitter
*/
private function onMenuRollOver(e : MouseEvent) : void {
emittor.start()
}
/**
* At Button rollOut stop the emitter
*/
private function onMenuRollOut(e : MouseEvent) : void {
emittor.stop()
}
}
}