Da Fish in Sea

These are the voyages of Captain Observant

Butterfly Wing Flapping

| Comments

So I dug up an old scan of a butterfly I found dead by the side of the road one day.. Here’s my attempt to bring it back to life. I made a class called ButterflyWing, imported the .png of the wing into it, and animated it using Tweener. It’s the first time I’ve used Tweener, and I found it fairly easy to use. I created two methods in my class - flapUp and flapDown, each of which does a tween of the wing’s rotationY property to the ‘up’ (90degrees) and ‘down’ (0 degrees) position respectively. When one of the tweens completes, it calls the other one, forming a continuous flapping movement. Next time, I’ll put two of these together to make a butterfly…

Da Code

package  {
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import caurina.transitions.*;

    public class ButterflyWing extends Sprite {

      [Embed(source="butterfly_wing.png")]
      private var WingBmp:Class;
      private var min_y_rotate:Number = 0;
      private var max_y_rotate:Number = 90;
      private var flapTime:Number = 0.5;
        private var butterfly_wing:Bitmap;

        public function ButterflyWing() {
            butterfly_wing = new WingBmp();
            addChild(butterfly_wing);
            flapUp();
        }
        public function flapUp():void {
            //rotate around y-axis to perpendicular position
            caurina.transitions.Tweener.addTween(butterfly_wing, {
                rotationY:max_y_rotate, 
                time:flapTime,
                onComplete:flapDown,
                transition: "easeInCubic"
                }); 
        }
        public function flapDown():void {
            //rotate around y-axis to flat position
            caurina.transitions.Tweener.addTween(butterfly_wing, {
                rotationY:0, 
                time:flapTime,
                onComplete:flapUp,
                transition: "easeOutCubic"
                }); 
        }
    }
}

// Copyright (c) 2008 David Wilhelm
// MIT license: http://www.opensource.org/licenses/mit-license.php