Blog

  • Flash RichTextEditor

    Yet another Flash MX 2004, ActionScript 2, RichTextEditor… or is it?

    I’ve been speaking with Igor Dimitrijevic over AIM for the past few months discussing Flash RichTextEditors, looking at the solutions out there, comparing notes on TextField, TextFormat, Flash Player HTML bugs/issues, and generally helping eachother out.

    After that, I can definately say Igor knows what he’s doing, and have full confidence this will, as of the posting date, be the best Flash RichTextEditor on the market.

    Until the Flash Player fixes some of it’s underlying problems with TextFormat not correctly writing HTML, as well as it’s erratic display of images in an input TextField, all RichTextEditors will have these inherent flaws, regardless of who codes them and with whatever workarounds/coding compensations. Regardless, Igor like me has been creating components since they were first SmartClips in Flash 5, so I’m sure he’s created it in such a way that it will be a solution for your project, and compensate for the Flash Player’s TextField problems.

    Try it out without downloading or installing anything!

    For you Flex users, I’ve worked with Abdul Qabiz to get the MXI format correct and sent it over to Igor, encouraging him to add install support for FlexBuilder 1.5. Cross your fingers!

  • Zinc & Debugging Permitted

    My Zinc commands don’t work if I have Debugging Permitted checked for my FLA. As soon as I uncheck that, it works fine.

    :: goes to look at docs ::

    Nope, can’t find it. Basically, my mdminit() command as well as my mdm.prompt(“MDM Loaded”) do squat when Debugging Permitted is checked. That was a fun frikin’ hour.

    :: goes to look at forum ::

    Yep, 2 frikin’ threads. There should be a high-level page added to the docs:

    – call mdminit();
    – make sure Debugging Permitted is not checked for your FLA

    …BACK TO WORK…

  • Game Day Live

    Done testing out my new capture card; using it to capture input, and then broadcast via Flashcom. Thanks for watching (if you made it)!

    Game Over

  • InnKeeper Class

    I read FlashApe’s blog entry a little too quick… I thought it said “InnKeeper” and was like, “Wow! A D&D Flash post NOT by me!!!”

    …but it was IntKeeper.

    Pissed, I wrote this class to satiate my delusion. You can check an object in and out of rooms if any are available.

    class InnKeeper extends Object
    {
            
            static private var rooms_obj:Object = {};
            
            static var private SUITE:Number = 0;
            static var private NOBLE:Number = 1;
            static var private LUXURY:Number = 2;
            static var private COMMON:Number = 3;
            
            function InnKeeper()
            {
            }
            
            static public function getARoom(tennant:Object):Boolean
            {
                    if(InnKeeper.isRoomAvailable() == false)
                    {
                            return false;
                    }
                    else
                    {
                            var bestRoom:Number = InnKeeper.getBestRoom();
                            if(bestRoom == -1)
                            {
                                    // nice try hacker...
                                    return false;
                            }
                            InnKeeper.rooms_obj[bestRoom] = tennant;
                            return true;
                    }
            }
            
            static public function checkOut(obj:Object):Boolean
            {
                    for(var p in InnKeeper.rooms_obj)
                    {
                            if(InnKeeper.rooms_obj[p] == obj)
                            {
                                    InnKeeper.rooms_obj[p] == null;
                                    return true;
                            }
                    }
                    return false;
            }
            
            static public function isRoomAvailable():Boolean
            {
                    if(InnKeeper.rooms_obj[InnKeeper.SUITE] != null)
                    {
                            if(InnKeeper.rooms_obj[InnKeeper.NOBLE] != null)
                            {
                                    if(InnKeeper.rooms_obj[InnKeeper.LUXURY] != null)
                                    {
                                            if(InnKeeper.rooms_obj[InnKeeper.COMMON] != null)
                                            {
                                                    return false;
                                            }
                                            else
                                            {
                                                    return true;
                                            }
                                    }
                                    else
                                    {
                                            return true;
                                    }
                            }
                            else
                            {
                                    return true;
                            }
                    }
                    else
                    {
                            return true;
                    }
            }
            
            static private function getBestRoom():Number
            {
                    if(InnKeeper.rooms_obj[InnKeeper.SUITE] != null)
                    {
                            if(InnKeeper.rooms_obj[InnKeeper.NOBLE] != null)
                            {
                                    if(InnKeeper.rooms_obj[InnKeeper.LUXURY] != null)
                                    {
                                            if(InnKeeper.rooms_obj[InnKeeper.COMMON] != null)
                                            {
                                                    return -1;
                                            }
                                            else
                                            {
                                                    return InnKeeper.COMMON;
                                            }
                                    }
                                    else
                                    {
                                            return InnKeeper.LUXURY;
                                    }
                            }
                            else
                            {
                                    return InnKeeper.NOBLE;
                            }
                    }
                    else
                    {
                            return InnKeeper.SUITE;
                    }
            }
    }