Category: Flash

  • Can’t Install Flash Player 8 Debug Player

    * Update 10.25.2005: I’ve tried suggestions in the following threads:

    Oddly, I can install Flash Player 8 no problem. It’s the Flash Player 8 ActiveX msi install file that’s failing, both release and debug. IE runs Flash 8 fine, but I need the Debug Player installed for FlexBuilder 1.5 to debug. I’m thinking of just keeping Flash Player 7 debug in IE since it works, but it’s not as fast as 8…

    The struggle continues.

    ***

    Sent this to Flashcoders, copying here in case anyone else has the same error and searches on Google.

    Not sure in what order this happened, but I cannot install the Flash Player 8 debug player, and the Flash Player 7 Debug player for IE (ActiveX) is not allowing FlexBuilder 1.5 to debug.

    I re-installed the FlexBuilder2 alpha today and that’s when my troubles started. I installed Flash Player 8.5 for IE, and nothing for Firefox. After uninstalling the product, and running Flash Player 8 and Flash Player 7 uninstallers multiple times, as well as uninstalling Macromedia Central, and removing any “Flash Player” I found in Add/Remove Programs, I’m still at a loss. I started getting the Contribute install error too that one gets from a Flash Player 8 beta install, so uninstalled Contribute 3 as well as any FlashPaper I found. I even deleted my mms.cfg file that Macromedia Flash Player puts in your system32.

    At times, I found when trying to install in IE from the web, the player would install, but no SWF’s would load. You could right click on it in the browser, and it’d say Flash 8, but no SWF would be loaded in it. I managed to fix this by uninstalling 8 and 7, and re-installing 7, and then 8 atop of that.

    …but, still can’t install the Flash Player 8 debug player. I keep getting this error when running the “Install Flash Player 8 ActiveX.msi”:

    Error 1904.Module
    C:\WINDOWS\system32\Macromed\Flash\Flash8.ocx
    failed to register. HRESULT -2147220473. Contact
    your support personnel.

  • Using DataSelector & the modelChanged Event in the Same Class

    As I’ve mentioned before, DataSelector is a helpful class when dealing with dynamic components that you want to have react to ever-changing data. Shove a dataProvider in your DataSelector-empowered component, and watch it work it’s magic.

    However, what my aritcle didn’t mention was how to utilize DataSelector & modelChanged in the same class. Since DataSelector is a mixin, both in Flex and Flash, it adds methods and properties at runtime. So, if you define a method called “modelChanged”, it’ll get overwritten after you compile; when the SWF runs. You can add an event listener, but this only gets triggered when you initially set the dataProvider to the component, now when the dataProvider itself actually changes.

    There are 3 solutions. You can either do what I used to do in Flash, and that is create a base class that implements DataSelector for the sole purpose of being extended; like the List component does via ScrollSelectList.

    That solution isn’t very practicle in Flex. Because of the elegant way inhertiance is implemented in Flex, you would lose a lot of the power from extending some of the other container classes, such as VBox, Panel, etc. One way to solve that is to use composition with proxy functions; import your DataSelector-empowered component (like a Lits for example), and merely proxy all function calls. That would require, however, ardous amounts of coding which is redundant since the mix-in already adds those methods at runtime.

    The third way, which is more relevant for Flex, is to simply re-direct the modelChanged event to point to your own. Since mixins by their very nature affect the prototype, you might as well play by the same rules since you are already pretty low-level. They will not be such big players in AS3, but until Spring of 2006, here’s what you can do for deployable apps right now.

    public static var mixinModifyCall = mixinModify();
    
    private static function mixinModify():Void
    {
            YourMXMLComponent.prototype.oldDataSelectorModelChanged = YourMXMLComponent.prototype.modelChanged;
            YourMXMLComponent.prototype.modelChanged = function()
            {
                    this.oldDataSelectorModelChanged.apply(this, arguments);
                    this.onModelChanged.apply(this, arguments);
            };
    }
    
  • Flashcoders is Down… WITH THE SICKNESS!!!

    Da system… sis-sis-sis-sytem…is down. Dude, my wife was doing user testing last week, and a 14 year-old girl bought that song as her ring tone… insanity. I hope my kids learn to mosh at a young age as well.

    Got an email questioning what’s up with Flashcoders, the premiere Flash… er I mean Flash coding email list. Apparently all of Chattyfig’s lists (that we care about) are down (Flashcoders, Flashnewbie, Flashcom, etc.). Here’s what I know. It was down like Sunday evening, and hasn’t been back up since. Dave Watts, the admin, posted an email saying they had moved the email servers across the street. Then, nothing…

    So, for those on withdrawl, here’s my infered next emails, in order:

    Re: [Flashcoders] Flash player 8.5 and ActionScript 3.0
    “…omg, .NET cannot be consumed on a MAC… unless there is salt, LOL, OMFG!!! ROFLMASOSHIPDFDFD!!!”

    [Flashcoders] What is a Delegate?
    “onPress = function? My this is confused. Must… eat… chili…”

    [Flashcoders] RE: Re: FW: Re: [SPAM-LOW] HELP!!!
    “I would like to code. Tank, I need an AS1 w/ Flash MX, stat! Thank you.”

  • PopUpManager & loadMovie

    This is the 2nd time this year I’ve been burned by PopUpManager and loadMovie. I’ve had to read the code in PopUpManager.as about 3 times to get an inkling of wtf is going on, but basically, it finds the “true root” of your movie.

    While you can hide _root’s hardcoded timeline by using _lockroot, _root still has one way to get around it, and that’s that it is really a MovieClip which has a _parent property. So, _root has a _parent if he’s loaded into another movie. PopUpManager apparently knows this, and can dig his way up to find the true _root which is, as we all know, _level0. But, he uses elaborate recursion instead of writing _level0… whatever.

    Bottom line, this forces you to keep copies of component assets in the movie loading you if you wish to utilize PopUpManager. This defeats the whole purpose of loadMovie’s flexiblity in loading in any SWF into any container and/or circumstance.

    If I were using a modal dialogue, I’d think it’d be excluded from the rules of true modality because you cannot control “who is loading you“. While I appreciate the resourcefulness of PopUpManager’s attempt, it’s fatal flaw is assuming that movie loading it knows what assets are in the SWF it’s loading, and thus has exact copies to load.

    As far as I can see, 3 solutions, all of which suck:

    1. Keep assets in the SWF that’s loading the other SWF in. Already explained why this sucks.
    2. Utilize SharedLibraries to lessen the damage. So, if you are loading a “LoadingWindow” component, put it in a SharedLibrary, and have both the SWF that’s the container, and the SWF that’s being loaded both use the LoadingWindow as a shared asset. More to manage.
    3. Don’t use PopUpManager. Replace with attaching a component to _root since that can be abstracted away. However, you lose the modality aspect.

    This is why I don’t use loaded movies in my development. Flash & Flex, at least with the current component framework, does not facilitate it. I do not think an improved framework would work either because you’d need something player bound to allow easier asset sharing between SWF’s, otherwise you’re just relaying on an implicit contract. “Dude, can you give me like 2 methods in your SWF? I’ll then call them.” It’s the same thing you do when writing encapsulated classes, so hopefully Macromedia Flash Player engineers will see the parellels, and someday implement this ability to treat a loaded SWF just as an SWC treats it; a component.

    …anyway, real world solutions I’ve used: The first time, we just copied those assets needed (Window and Alert) in the main movie. The second time, I just said heck with it, and made the entire application an SWC and said here you go.