I just had to blog this insanity. It’s about a week old, so time for some reflection.
It started off with our Human Factor’s guy going, “Can we edit this text’s font at a later date?”. I’m like, “Sure.” knowing that I can wire my component’s properties of text to the global styles that the new framework uses. I needed an excuse to learn them, and since I’ve got skinning mostly down, I figured, what the heck, how hard can it be?
I then ran into a snag; my component (SWC) didn’t have it’s text change to bold when I did a setStyle. I received no compile errors, and all other functions of my component worked. Oddly, when I dragged a Button (mx.controls.Button) component onto the stage and then did a test movie again, both it and my component had it’s text turn bold when I did a setStyle. “Uh… hey thanks Button. Can I have what you have?”
Digging in the SWC of Button, he had a crud load more classes than I did. So, I started digging into the base classes to see who instantiates setStyle. Well… no one. It’s defined as a function in UIObject.as, but it’s merely a dim/definition of a variable. Pretty goob-a-rific with the comment, too.
Style Class Found – The Plot Thickens
Turns out, CSSSetStyle.as (mx.styles.CSSSetStyle) is the homeskillet responsible for the method of style-powah. But, no one instantiates him. Frustrated, I called in the artillery. I had a co-worker use Visual Studio .NET to find in files (since SciteFlash wasn’t installed), and turns out some obscure class, UIComponentExtensions.as is the ONLY ONE who instantiates it. And get this, the method it calls, enableRunTimeCSS, is a static function that does Jack and shiot. It’s merely there, I think, to ensure CSSSetStyle actually gets exported with the framework upon making an SWC. :: takes a hit from the bong :: Ooook… makes sense.
The Horrible Climax
Next, the search was on for who instantiates UIComponentExtensions.as (mx.core.ext.UIComponentExtensions). I think it was only found in the comments of some class. I was flabbergasted. If no class instantiates it, how in the hell can it exist? I just assumed it was called via some function that only your mother can call, similiar to how the CSSSetStyle worked… but that wasn’t the case.
At the end of my rope, I ventured a gander over to Flashcoders, and said a prayer my email wouldn’t get lost in the flood, and sent her off. I actually got an answer, and quickly too.
At that point, Peter Hall’s response confirmed my anger as of this morning. What crackhead thought it was a good idea to revert to Flash MX tactics to create a coding framework should have his/her head examined. It’s already been established in Flash 5 that anything beyond a stop on the timeline is an unacceptable coding practice, and in MX, you merely dropped your assets to fit into the #initclip order sequence.
Now, however, that’s taken care of for us. That is NOT an excuse, though, to utilize the timeline as a constructor call, thus instantiating an entire style setting system for components. Frankly, it’s bullshit.
What’s worse is I don’t think it can be changed/modified without affecting backwards compatibility. The workaround is fine; I can definately live with dropping a component or 2 of a base class inside my SWC, no worries there. The methodology, however, in what I am doing is archaic.
Techniques like this deplete my prozac supply in which I use to placate frustrated Java programmers. Help.