As Weyert was getting at, just use default argument values, which would only be applied if you didn't specify an argument...
i.e. public function Ball(which:String = "soccerball"){ gotoAndStop(which); } this way you can do: var b:Ball = new Ball("basketball"); addChild(b); and you can drag an instance to the stage (which would default going to frame "soccerball" but, seeing as it is a component, you probably want to have an inspectable, these are properties that can be set through the "Component Inspector" If I were to write the class/component, I would probably do write it like: package{ import flash.display.MovieClip; public class Ball extends MovieClip{ private var _ballType:String = ""; [Inspectable(name="Ball Type", defaultValue = "soccerball", type = String)] public function set ballType(_value:String):void{ _ballType= _value; gotoAndStop(_ballType); } public function get ballType():String{return _ballType;} public function Ball(which:String = "soccerball"){ ballType = which; } } } - Taka On Thu, Feb 19, 2009 at 9:12 AM, Gregory N <greg.gousa...@gmail.com> wrote: > Muzak, > > Nice addition, thanks for pointing to it. > Frankly, I'd prefer to avoid calling commitProperties() after *each* > of the setters... > Anyway, this way looks better than my enter_frame trick :-) > > However, the problem " none of the setters are called if no > inspectable params were changed" still remains. So we have to > duplicate default values in [Inspectable] and constructor/declaration > (or some init function) > > On 2/19/09, Muzak <p.ginnebe...@telenet.be> wrote: >> This workflow is more or less what the Flex components follow: >> >> package { >> >> import flash.display.MovieClip; >> >> public class Rectangle extends MovieClip { >> >> private var _prop:String = "Hello"; >> private var propChanged:Boolean = false; >> >> public function Rectangle():void { >> trace("Rectangle ::: CONSTRUCTOR"); >> init(); >> } >> >> private function init():void { >> trace("Rectangle ::: init"); >> // do stuff here >> commitProperties(); >> } >> >> protected function commitProperties():void { >> trace("Rectangle ::: commitProperties"); >> if(propChanged) { >> trace(" - propChanged: ", propChanged); >> trace(" - prop: ", _prop); >> propChanged = false; >> // do stuff with _prop >> } >> } >> >> [Inspectable(defaultValue="Hello")] >> public function get prop():String { >> trace("Rectangle ::: get prop"); >> return _prop; >> } >> public function set prop(value:String):void { >> trace("Rectangle ::: set prop"); >> if(value != _prop) { >> _prop = value; >> propChanged = true; >> commitProperties(); >> } >> } >> } >> } >> >> regards, >> Muzak >> >> ----- Original Message ----- >> From: "Gregory N" <greg.gousa...@gmail.com> >> To: "Flash Coders List" <flashcoders@chattyfig.figleaf.com> >> Sent: Thursday, February 19, 2009 10:25 AM >> Subject: Re: [Flashcoders] component def doesn't pass params to constructor? >> >> >>> Michael, >>> >>> Haven't you read my reply to one of your prev. questions? >>> Well, let me quote it here again: >>> === >>> Subject: Re: [Flashcoders] my component not instancing properly on >>> timeline >>> >>> It seems your problem is similar to one I had with my components. >>> The matter is that, unlike their behavior in AS2, in AS3 (CS3) >>> components setters of [Inspectable] parameters are called lo-o-ong >>> AFTER constructor >>> >>> As described here >>> http://www.bit-101.com/blog/?p=1181 >>> So, even if I set my init() as listener for ADDED_TO_STAGE event... >>> it's still before setters. >>> >>> for now, I found a solution: >>> I put my init() in ENTER_FRAME listener and then remove this listener :-) >>> This means that listeners are called before 1st ENTER_FRAME event. >>> Perhaps my solution isn't too elegant.... but it works :-) >>> >>> Also, be sure to duplicate default values for your parameters :-) >>> === >>> >>> Note that the above solution is intended to use with sprite-based >>> components. >>> Perhaps if you subclass UIComponent, the situation with setters is >>> better... perhaps :-) >>> >>> >>> >> >> _______________________________________________ >> Flashcoders mailing list >> Flashcoders@chattyfig.figleaf.com >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >> > > > -- > -- > Best regards, > GregoryN > ================================ > http://GOusable.com > Flash components development. > Usability services. > _______________________________________________ > Flashcoders mailing list > Flashcoders@chattyfig.figleaf.com > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > _______________________________________________ Flashcoders mailing list Flashcoders@chattyfig.figleaf.com http://chattyfig.figleaf.com/mailman/listinfo/flashcoders