createMyAvatar & params.skin

Post here your questions about the OpenSpace 2.x or notify bugs and suggestions.

Moderators: Lapo, Bax

JimDaniel
Posts: 11
Joined: 03 May 2011, 22:10
Location: Los Angeles, Ca

createMyAvatar & params.skin

Postby JimDaniel » 03 Aug 2011, 16:51

I've run into an interesting problem with the createMyAvatar method. No mater what I set the skin values to I always start out with the avatar without any skins and facing se. Any idea what I forgot to do?
AvatarManager

Code: Select all

            
      public function createPlayerAvatar(centeringCoords:Point, direction:int):void
      {
         var params:AvatarCreationParams = new AvatarCreationParams()
         params.type = "example"
         params.skin = generateSkin();
         params.name = "JIM";
         params.centerViewport = true
         
         if (centeringCoords != null)
         {
            params.px = centeringCoords.x;
            params.py = centeringCoords.y;
         }
         params.direction = direction;
            
         try {
            openSpace.createMyAvatar(params)
         }
         catch (e:Error) {
            main.dTrace("AVATAR CREATION ERROR: " + e.message)
         }
      }
.
.
.
      private function onLoadCompletion(e:Event):void
      {
         main.dTrace("Avatars external library loaded");
         createPlayerAvatar(null, 6);
      }
.
.
.
      private function generateSkin():Object
      {
         var isMale:Boolean = false;
         var skin:Object = {};
         skin.sex = "f";
         skin.race = "european";
         skin.hair = "hair2";
         skin.bust = "shirt2";
         skin.legs = "jeans2";
         
         return skin;
      }
Jim Daniel
User avatar
Bax
Site Admin
Posts: 4609
Joined: 29 Mar 2005, 09:50
Location: Italy
Contact:

Postby Bax » 11 Aug 2011, 11:42

You have to implement the Avatar.init() method. In this method you have to set the avatar appearance.
Paolo Bax
The SmartFoxServer Team
JimDaniel
Posts: 11
Joined: 03 May 2011, 22:10
Location: Los Angeles, Ca

Avatar.init()

Postby JimDaniel » 11 Aug 2011, 14:38

I'm assuming that the Avatar.init() you are talking about is the same as the init() in ExampleAvatar.as of the os1Example code. As far as I can tell this method is not called when the avatar is created. I've un-commented out all of the trace in ExampleAvatar.as & changes the the following line in the exampleAvatar.init() method

Code: Select all

            defaultSkin.sex = "m"

to

Code: Select all

            defaultSkin.sex = "f"


with no effect. Before you ask I I'm running these tests in os1Example and I'm doing a project clean to insure everything is rebuilt/compiled before running.
Jim Daniel
User avatar
Bax
Site Admin
Posts: 4609
Joined: 29 Mar 2005, 09:50
Location: Italy
Contact:

Postby Bax » 11 Aug 2011, 14:46

Did you clean the browser's cache too?
Also, in Example 1 when the avatar is created, the male sex is passed in the skin object, so even if you change the defaultSkin variable, you will still get a male avatar.
Paolo Bax
The SmartFoxServer Team
JimDaniel
Posts: 11
Joined: 03 May 2011, 22:10
Location: Los Angeles, Ca

Yes, cleaning cash too.

Postby JimDaniel » 11 Aug 2011, 16:26

I've even commented out the params.skin = generateSkin() so the params.skin is null. still get the male default. Nor do I see any of the traces I've set up in the ExampleAvatar.as file. I never see the ExampleAvatar class methods called. I've even put a trace in the ExampleAvatar creator. Here is the code as I'm using it now.

Code: Select all

package classes
{
   import com.smartfoxserver.openspace.components.flex.OpenSpace;
   import com.smartfoxserver.openspace.engine.model.avatar.AvatarCreationParams;
   import com.smartfoxserver.openspace.shared.model.other.Position3D;
   
   import flash.display.Loader;
   import flash.events.Event;
   import flash.events.IOErrorEvent;
   import flash.geom.Point;
   import flash.net.URLRequest;
   import flash.system.ApplicationDomain;
   import flash.system.LoaderContext;
   
   /**
    * This class:
    * - controls all the avatar-related operations (creation, skin change, etc)
    * - controls the avatars library loading
    */
   public class AvatarManager
   {
      private var main:Main         // Reference to the main application class
      private var openSpace:OpenSpace   // Reference to OpenSpace instance
      
      public function AvatarManager(main:Main, openSpace:OpenSpace)
      {
         this.main = main
         this.openSpace = openSpace
      }
      
      /**
       * Load avatars external library SFW file.
       * IMPORTANT: the Application Domain in which the library is loaded must have the current domain as its parent
       *
       * As this method is called during main application initialization, it enables the login button as soon as the library is loaded.
       * On loading completion, the destination application domain is passed to OpenSpace instance.
       */
      public function loadAvatarsLibrary():void
      {
         // Create new application domain
         openSpace.avatarAppDomain = new ApplicationDomain(ApplicationDomain.currentDomain)
         
         var loader:Loader = new Loader()
         loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoadCompletion, false, 0, true)
         loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, onLoadError, false, 0, true)
            
         var request:URLRequest = new URLRequest("libraries/avatar/AvatarsContainer.swf")
         var context:LoaderContext = new LoaderContext(false, openSpace.avatarAppDomain)
         loader.load(request, context)
      }
      
      /**
       * Create the player's avatar.
       */
      public function createPlayerAvatar(centeringCoords:Point, direction:int):void
      {
         var params:AvatarCreationParams = new AvatarCreationParams()
         params.type = "example"
//         params.skin = generateSkin()
         params.centerViewport = true
         
         if (centeringCoords != null)
         {
            params.px = centeringCoords.x
            params.py = centeringCoords.y
            params.direction = direction
         }
         
         try {
            openSpace.createMyAvatar(params)
         }
         catch (e:Error) {
            main.logTrace("AVATAR CREATION ERROR: " + e.message)
         }
         main.logTrace("Avatars created")
      }
      
      /**
       * Create the player's avatar skin.
       */
      public function changePlayerAvatarSkin():void
      {
         openSpace.setMyAvatarSkin(generateSkin())
      }
      
      /**
       * Teleport the player's avatar.
       */
      public function teleportPlayerAvatar():void
      {
         openSpace.teleportMyAvatar(new Position3D(main.ns_px.value, main.ns_py.value))
      }
      
      /**
       * Move the player's avatar.
       */
      public function movePlayerAvatar():void
      {
         openSpace.moveMyAvatar(new Position3D(main.ns_px.value, main.ns_py.value))
      }
      
      /**
       * Stop the player's avatar during its movement.
       */
      public function stopPlayerAvatar():void
      {
         openSpace.stopMyAvatar()
      }
      
      /**
       * Center viewport on player's avatar coordinate.
       */
      public function centerPlayerAvatar():void
      {
         openSpace.centerViewOnMyAvatar()
      }
      
      /**
       * Set the player's avatar animation time (speed).
       */
      public function setPlayerAvatarAnimTime():void
      {
         openSpace.setMyAvatarAnimationTime(main.ns_animTime.value)
      }
      
      //-----------------------------
      // PRIVATE METHODS
      //-----------------------------
      
      private function onLoadCompletion(e:Event):void
      {
         main.logTrace("Avatars external library loaded")
         
         // Enable login button
         main.bt_login.enabled = true
      }
      
      private function onLoadError(e:IOErrorEvent):void
      {
         main.logTrace(e.text)
      }
      
      private function generateSkin():Object
      {
         main.logTrace("Avatars generateSkin() called.")
         var isMale:Boolean = main.rb_male.selected
         var skin:Object = {}
         skin.sex = isMale ? "m" : "f"
         skin.race = "european"
         skin.hair = main.cb_hair.selected ? (isMale ? "hair1" : "hair2") : ""
         skin.bust = main.cb_bust.selected ? (isMale ? "shirt1" : "shirt2") : ""
         skin.legs = main.cb_legs.selected ? (isMale ? "jeans1" : "jeans2") : ""
         
         return skin
      }
   }
}
I do note that when I change the generateSkin function so it is set to male the avatar does change.

Still, Im much more interested in why the ExampleAvatar methods don't seem to being called. Yes, I am looking in the Flash Builder debug console window.
Jim Daniel
User avatar
Bax
Site Admin
Posts: 4609
Joined: 29 Mar 2005, 09:50
Location: Italy
Contact:

Postby Bax » 12 Aug 2011, 09:29

Just to make sure... are you re-exporting the AvatarsContainer.swf file after you make the modifications to the ExampleAvatar.as file?
Paolo Bax
The SmartFoxServer Team
JimDaniel
Posts: 11
Joined: 03 May 2011, 22:10
Location: Los Angeles, Ca

Postby JimDaniel » 13 Aug 2011, 15:21

Yes I do republish the AvatarsContainer.SWF file. I've even deleted the AvatarsContainer.SWF file to be sure it is being replaced. I still do not see the Avatar.as file trace statements when I create the player avatar.
Jim Daniel
User avatar
Bax
Site Admin
Posts: 4609
Joined: 29 Mar 2005, 09:50
Location: Italy
Contact:

Postby Bax » 15 Aug 2011, 07:26

Not sure what is wrong on your side but I just tested this again using Example 1 for SFS2X and everything is fine.
I entered a trace statement in the init method of the ExampleAvatar class, re-exported the AvatarsContainer.swf.
When I run the example the statement it is traced in the Flex console as expected.
Paolo Bax
The SmartFoxServer Team

Return to “OpenSpace v2 discussions and help”

Who is online

Users browsing this forum: No registered users and 14 guests