well the skin class will also be doing some drawing using the graphics
object

On 4/27/07, Manish Jethani <[EMAIL PROTECTED]> wrote:

  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] <ftangri%40gmail.com>>
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