I don't get your code. Why can't you just use the graphic instead of
writing your own skin class (which in turn loads the graphic anyway).

On 4/27/07, Firdosh Tangri <[EMAIL PROTECTED]> wrote:
>  Hey all ,
>              I am trying to write a custom component in AS3 from scratch but
> am having some trouble with the skinning and Style tags.
>
> So its basic rating component ( like 5 stars )
>
> I set up the stylels
>
> [Style (name="iconUpSkin" , type="Class" , inherit="no" )]
>
>     [Style (name="iconOverSkin" , type="Class" , inherit="no" )]
>
>     [Style (name="iconDownSkin" , type="Class" , inherit="no" )]
>
>
> public class Rating extends UIComponent
>     {
>         protected var iconUpSkin:IFlexDisplayObject;
>         protected var iconOverSkin:IFlexDisplayObject;
>         protected var iconDownSkin:IFlexDisplayObject;
>
> //variables to hold the skins
>
>
> override protected  function createChildren():void{
>              super.createChildren();
>             iconUpSkin  = createSkin( "iconUpSkin"    , RatingIconUpSkin );
>             //iconOverSkin = createSkin( "iconOverSkin" , RatingIconOverSkin
> );
>             //iconDownSkin  = createSkin( "iconDownSkin", RatingIconDownSkin
> );
>
>         }
>
>
> protected function createSkin( skinName:String, defaultSkin:Class ) :
> IFlexDisplayObject{
>
> var newSkin:IFlexDisplayObject =
> IFlexDisplayObject(getChildByName(skinName)); //check to
> see if the child already exists
>
> if (!newSkin){   // IF DOESNT exist
>
>                 var newSkinClass:Class = Class(getStyle(skinName));   / /
> see if the user specified a skin
>
>                 if( !newSkinClass ){
>                     trace("noskin");
>                     newSkinClass = defaultSkin;                 // if not
> assign the default one
>                 }
>
>                 if (newSkinClass){
>
>                    newSkin = IFlexDisplayObject(new newSkinClass());
> //HERE IS WHERE I GET THE ERROR
>
> Error: Error #2136: The SWF file
> file:///C:/Fidi/projects/RatingComponent/bin/RatingComponent-debug.swf
> contains invalid data.
>
> at
> com.ftangri.components::Rating/com.ftangri.components:Rating::createSkin()[C:\Fidi\projects\RatingComponent\src\com\ftangri\components\Rating.as:76]
>
>                     if( !newSkin ){
>                          //newSkin = new defaultSkin();
>                     }
>
>                     newSkin.name = skinName;
>
>                     var styleableSkin:ISimpleStyleClient =
> newSkin as ISimpleStyleClient;
>
>
>                     if (styleableSkin){
>
>                         styleableSkin.styleName = this;
>                     }
>
>                     addChild(DisplayObject(newSkin));
>
>                 }
>
>             }
>
>             return newSkin;
>
>         }
>
>
>
>
>
>
> Here is the code for the RatingIconUpSkin
>
> package com.ftangri.skins
> {
>
>     import mx.controls.Image;
>     import mx.core.Container;
>
>     [Embed
> (source="../../../assets/RankingUnSelectedUpSkin.png")]
>
>     public class RatingIconUpSkin extends Container
>     {
>         private var upSkin:Image;
>
>         public function RatingIconUpSkin()
>         {
>             super();
>             upSkin=new Image();
>         }
>
>         override protected  function createChildren():void{
>             super.createChildren();
>
> upSkin.source="../../../assets/RankingUnSelectedUpSkin.png";
>             addChild(upSkin);
>
>
>         }
>
>         override protected function updateDisplayList( w:Number, h:Number )
> : void{
>             upSkin.move(0,0);
>
> upSkin.setActualSize(measuredMinWidth,measuredMinHeight);
>         }
>
>         override protected function measure():void {
>
>             super.measure ();
>             measuredWidth = measuredMinWidth = 20;
>             measuredHeight = measuredMinHeight = 20;
>         }
>
>     }
> }
>  

Reply via email to