Thanks Karl, Jason, I'll wait for your answer. And tell me if the movie is good. Have a good time.
On Sat, Dec 19, 2009 at 2:54 AM, Karl DeSaulniers <[email protected]>wrote: > Sorry for the echo. Forgot I already said that. :P > > Karl > > Sent from losPhone > > > On Dec 18, 2009, at 6:42 PM, Karl DeSaulniers <[email protected]> > wrote: > > I am not an expert on classes, but couldn't you have a private var equal >> your public var after it gets initiated? >> >> Karl >> >> >> On Dec 18, 2009, at 3:58 PM, Omar Fouad wrote: >> >> No one? >>> >>> On Fri, Dec 18, 2009 at 6:03 PM, Omar Fouad <[email protected]> >>> wrote: >>> >>> Hi all, >>>> >>>> I've been working with ActionScript 3.0 since 2006 and I used some >>>> technique in the last two years. I believed that this way is the best >>>> for >>>> splitting code from design, but today I asked myself whether this >>>> approach >>>> is REALLY professional or not. >>>> What I do is a create a pure ActionScript project in Flex Builder 3, and >>>> I >>>> create a FLA file with, which has in its library a bunch of assets that >>>> I >>>> use as components or models, such as buttons, list items, image >>>> containers >>>> with masks and so on - then I give each of the "component" a linkage >>>> name. >>>> >>>> For example, If I need to create a button I just create a MovieClip (or >>>> Sprite) in my library that represents this simple button designed the >>>> way it >>>> should be, this MovieClip contains a TextField named "label" and it is >>>> dynamic. It also contains a MovieClip named "background", which is the >>>> bg of >>>> the button behind the label. Finally I give this button a linkage >>>> Identifier >>>> "BasicButton". >>>> >>>> After that I publish the FLA and I create a Class that represents this >>>> button: >>>> >>>> >>>> package { >>>> >>>> import flash.display.Sprite; >>>> >>>> [Embed(source='Lib.swf', symbol='BasicButton')] >>>> public class BasicButton extends Sprite{ // and not MovieClip because >>>> it is based on one frame only >>>> >>>> // I declare the variables inside of it. They have to be >>>> public. >>>> public var label :TextField; >>>> public var background :Sprite; >>>> >>>> public function BasicButton(labelString:String) { >>>> >>>> label.text = labelString; >>>> this.buttonMode = true; >>>> this.addEventListener(MouseEvent.ROLL_OVER, onOver); >>>> this.addEventListener(MouseEvent.ROLL_OUT, onOut); >>>> } >>>> >>>> private function onOver(e:MouseEvent):void { >>>> //changes the background color on roll over >>>> } >>>> private function onOut(e:MouseEvent):void { >>>> //resets the background color on roll out >>>> } >>>> >>>> } >>>> } >>>> >>>> Of course I can create an abstract button class that has all the roll >>>> over >>>> and roll out instructions in it, and just make BasicButton an extension >>>> of >>>> it, but whatever this is just an example. >>>> >>>> In the Main class: >>>> >>>> package { >>>> >>>> import flash.display.Sprite; >>>> >>>> public class Main extends Sprite{ >>>> >>>> private var myButton:BasicButton; >>>> >>>> public function Main() { >>>> myButton = new BasicButton("Click Me"); >>>> myButton.addEventListener(MouseEvent.CLICK, onClick); >>>> addChild(myButton); >>>> } >>>> public function onClick(e:MouseEvent) { >>>> trace("button clicked"); >>>> >>>> } >>>> >>>> >>>> } >>>> >>>> This works and all of course. And I can also embed the button inside of >>>> Main and give it a variable of type Class, but in this cases I needed to >>>> have it in a different Class to be able to give it more functions. >>>> This gives me flexibility when I need to make design tweaks to this >>>> button >>>> (or all the other assets), but I've found a problem, which is that I >>>> cannot >>>> make things encapsulated since the variables "label" and "background" >>>> inside >>>> of BasicButton HAVE to be public (if I declare them as private it won't >>>> compile). So in a way getters and setters have no use for such >>>> instances. >>>> >>>> How can I maintain encapsulation in this case? Or it's just this a good >>>> way >>>> to create flash content? >>>> >>>> Thank you >>>> >>>> Cordially. >>>> >>>> >>>> -- >>>> Omar M. Fouad - >>>> http://omarfouad.net >>>> Cellular: (+20) 10 234.66.33 >>>> >>>> >>>> This e-mail and any attachment is for authorised use by the intended >>>> recipient(s) only. It may contain proprietary material, confidential >>>> information and/or be subject to legal privilege. It should not be >>>> copied, >>>> disclosed to, retained or used by, any other party. If you are not an >>>> intended recipient then please promptly delete this e-mail and any >>>> attachment and all copies and inform the sender. Thank you. >>>> >>>> >>> >>> >>> -- >>> Omar M. Fouad - Adobe™ Flash© Platform Developer >>> http://.omarfouad.net >>> Cellular: (+20) 1011.88.534 / (+20) 1444.37.175 >>> >>> >>> This e-mail and any attachment is for authorised use by the intended >>> recipient(s) only. It may contain proprietary material, confidential >>> information and/or be subject to legal privilege. It should not be >>> copied, >>> disclosed to, retained or used by, any other party. If you are not an >>> intended recipient then please promptly delete this e-mail and any >>> attachment and all copies and inform the sender. Thank you. >>> _______________________________________________ >>> Flashcoders mailing list >>> [email protected] >>> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >>> >> >> Karl DeSaulniers >> Design Drumm >> http://designdrumm.com >> >> _______________________________________________ >> Flashcoders mailing list >> [email protected] >> http://chattyfig.figleaf.com/mailman/listinfo/flashcoders >> > > _______________________________________________ > Flashcoders mailing list > [email protected] > http://chattyfig.figleaf.com/mailman/listinfo/flashcoders > -- Omar M. Fouad - Adobe™ Flash© Platform Developer http://.omarfouad.net Cellular: (+20) 1011.88.534 / (+20) 1444.37.175 This e-mail and any attachment is for authorised use by the intended recipient(s) only. It may contain proprietary material, confidential information and/or be subject to legal privilege. It should not be copied, disclosed to, retained or used by, any other party. If you are not an intended recipient then please promptly delete this e-mail and any attachment and all copies and inform the sender. Thank you. _______________________________________________ Flashcoders mailing list [email protected] http://chattyfig.figleaf.com/mailman/listinfo/flashcoders

