Uncategorized

AS3 Talking Avatar library for Starling (Mobile)

By Acty, March 19, 2014

Supported devices:

on any Android or iOS devices that supports Air apps :) plus Starling desktop apps

Files Included:

<ui>

  • .as3proj (FlashDevelop AIR sample project)
  • .as (source codes)
  • Five sample vector avatars
  • asDoc type Documentation
  • </ui>

    check out the none-starling version here

    Sample Android App



    with using this little but cool library, you will be able to initialize a talking avatar in your Starling Air mobile projects. You will be able to choose from current available avatars in your “bin” folder and insert your own voice .mp3 file and then addChild the Avatar class anywhere in your project and you’re done.

         import com.doitflash.utils.avatar.StarlingAvatar;
         import com.doitflash.utils.avatar.AvatarEvent;
    
         // set Class variable
         var _avatar:StarlingAvatar;
    
         // initialize a _holder. avatar will be addchilded in _holder.
         // _holder must have a specific width and height so we create a new Shape() in the _holder
         var _holder:Sprite = new Sprite();
         var rect:Shape = new Shape();
         rect.graphics.beginFill(0xf64a5f, 1);
         rect.graphics.drawRect(0, 0, 400, 600);
         _holder.addChild(rect);
         _holder.x = 100;
         _holder.y = 100;
         this.addChild(_holder);
    
         // initialize the StarlingAvatar
         _avatar = new StarlingAvatar();
    
         // add a listener to be notified when the avatar is loaded
         _avatar.addEventListener(AvatarEvent.LOADED_AVATAR, onLoadedAvatar);
    
         // add a listener to be notified when the mp3 file is loaded
         _avatar.addEventListener(AvatarEvent.LOADED_VOICE, onLoadedVoice);
    
         _avatar.holder = _holder;
         _avatar.avatarUrl = "WomanAvatar.swf"; // set the address to the avatar graphic you'd like to use
         _avatar.voiceUrl = "test.MP3"; // set the address to the mp3 file which you like to use for lip-syncing
    
         // call this method and load the avatar graphic begins
         _avatar.loadAvatar();
    
         private function onLoadedAvatar(e:AvatarEvent):void
         {
                 // call this method and load the mp3 file begins
                 _avatar.loadVoice();
         }
    
         private function onLoadedVoice(e:AvatarEvent):void
         {
                 trace("sound length: ", e.param); // mp3 length is based on miliseconds
    
                 // use this listener to be notified when the mp3 playback is finished.
                 _avatar.addEventListener(AvatarEvent.SOUND_PLAY_FINISHED, onPlayComplete);
    
                 // call this method and the mp3 file starts playing
                 _avatar.play();
         }
    
         private function onPlayComplete(e:AvatarEvent):void
         {
                 trace("onPlayComplete");
         }
    
         // call this method to pause the mp3 file while playing and it returns the millisecond position of the sound.
         // you can use this position to play the mp3 again and start from where it was paused.
         // var position:Number = _avatar.pause();
         // _avatar.play(position);
         //
         // call this method to stop the sound.
         // _avatar.stop();
    
         // When you're done with this class, call this method to clean up the memory.
         // _avatar.dispose();
    
    

    we used the DMT library for dynamically generating textures to be used in Starling: https://github.com/XTDStudios/DMT