Category: Flex

  • Please embed Flex in LiveCycle PDF’s

    I downloaded a sample that Mike Potter’s blog pointed me to, and started filling out the form. I have Acrobate Reader 7. I nearly laughed it was so pathetic.

    Easily fixed; allow Acrobat Reader to embed SWF’s as native pages, and I’ll show you forms done right… you know, like tabbing that actually visually shows you where you are, not having 3 annoying dialogues pop up in your face, etc.

    Anyone do LiveCycle for a living? Do they (LiveCycle customers) even have a clue what Flex is? Potential for growth?

  • Flex 2 Beta 1: The 411

    Adobe has released the Flex 2 Beta 1 at the labs. What is Flex 2? Just read the first paragraph if you’re in a hurry.

    The big news is that the Flex SDK will include the Flex Framework 2 and the command line compiler (compc) + documentation for free with no licensing or extra charges to develop and deploy applications.

    So what’s new & cool and what’s changed from Alpha to Beta? You can find out on the labs, but I’ll go into more detail here.

    Flex Enterprise Services 2

    Flex Enterprise Services 2 is basically a Remote Shared Object server. Yes, there are other hooks for connecting to various back-ends with the goal of getting the server pushing data to clients, but to me, it’s a bigger deal. For years I’ve been in love with Flash Communication Server, now called Flash Media Server 2, because of it’s Remote Shared Object. Basically, an RSO is an object that has it’s data synced amongst n-clients in real-time. You don’t have to write sync code, you merely get events when it’s updated, and any client can update the object. This is awesome.

    However, Flash Media Server, a.k.a. Flashcom, had a lot of feature baggage involved with creating licenses. The majority of the apps I wanted to create had absolutely nothing to do with real-time video and audio conferencing, thus paying for those features seemed dumb. XMLSocket and Jabber are alternatives, but I hate parsing XML, even if it’s abstracted in a library. I like it low-level, simple, and fast. Flex abstracts this into 1 tag. Sick! Even cooler is the ability to use it free of charge for a limited amount of users on a non-clustered server. YUM!

    So, I like to think of FMS as Video + Audio server whereas FES is a Remote Shared Object server. My future’s more clear. I know what I’m talking about at MXDU 2007. Let’s hope Influxis.com (or MediaTemple.net) implements this into their product plans. I’d be willing to pay more since this is exactly what I want and need for projects.

    Flex Framework 2

    The ultimate component set has some new features you can now utilize in the beta. The inline MXML item renderers is basically an easier way to do cellrenderers. Instead of having to create a class and associate with your List or DataGrid, you can now build it inline, meaning pure MXML. A lot cleaner, a lot more centralized, and less dependencies. You can even define an <mx:Script> tag in there to support methods if need be. Dig it.

    The layouts for Application and Panel now support the big 3; absolute, vertical, and horizontal. Typically in the past, you’d nest a VBox, HBox, or a Canvas in there to do your layout. Now it’s just a property of the containers which results in less tags, better performance of your app, and faster to design.

    Also, you can now make Ghost Children; basically CSS’ visible:none. For Containers, you can now designate children as Ghosts, and they won’t be included in the layout. This makes them tons more flexible since sometimes you want things in a component, but don’t want to be forced to have it included in the layout routines.

    Flex Builder 2

    You can now treat projects, MXML and ActionScript, as SWC resources. SWC’s are to Flex as JAR’s are to Java. Basically, you can treat your project as 1 big SWC, and all resources, classes, etc. are packaged up into an SWC; a zip file that other projects can then use. This helps when development components and utility classes because it greatly reduces the amount of folders and files in your project, and for larger projects, keeps things modular, more organized. You can now just link to the SWC as a project library. It’s supported for Remote Shared Libraries too, but in my opinion, the infrastructure to keep them organized for large projects isn’t there… yet.

    I’ve already talked about the View Source built-in, which is my favorite addition.

    The code hinting has gotten tons better. If you type in a class, and it’s not imported, it’ll automatically add the import up top. Additionally, when writing nested MXML tags, it’ll only show the tags that are associated with that component you are currently in which helps a ton if you’ve forgotten the property name, and quickly types it for you.

    We also now have the HTML template source in our projects to control the HTML wrapper that our SWF’s are embedded in. The good news is HistoryManager is included in this, but you can also tweak if need be.

    The Help is really nice. If you select something, and hit F1, the Help tab will open and show topics for what you highlighted. If you keep it open, and highlight other stuff, it’ll re-search. Don’t forget to highlight the WHOLE classpath; meaning, highligh flash.events.Event instead of just Event.

    ActionScript 3

    There is the Void to void which I mentioned yesterday. It’s merely a find and replace to change those, although, getting out of habit typing uppercase is hard… 3 years of habit isn’t undone in 1 day.

    Object can no longer store undefined, but it can store null. As such a new type, no type, called “*” is introduced. This also has the benefit of telling the compiler, “Yes, I untyped it for a reason, bro, trust me.” So:

    private var v:*;
    
    public function f(p:*):*
    {
            ...
    }

    Is the same as:

    private var v;
    
    public function f(p)
    {
            ...
    }

    Only the compiler will leave you alone for the first one.

    The coercion rules are a little weird, so I’ll defer to the docs for those who care.

    Event’s have been cleaned up; there are no “Type” classes. Meaning, EventType is gone, and everything is in Event, like Event.COMPLETE for example. Same goes for KeyboardEvent, and MouseEvent, etc. It’s easier to just delete the Type imports up top in your class, then do a find and replace; pretty quick.

    Effects now use play and end vs. playEffect and endEffect… less to type! Additionally, they now support pausing, reversing, and resuming. Hell to the yeah.

    Conclusion

    That’s the good stuff. Yes, ColdFusion now supports ValueObjects, and the Charting Components are there, too. We still need a simplier framework or set of ANT scripts for RSL’s, but I’m still learning all the ramifications and specifications that go into it, so hopefully either someone will blog a solution soon, or it’ll be in the next beta. For a full list of changes, check the docs and the labs site.

    BTW, this is where the Flash Platform shows it is a more innovative and useful model vs. AJAX. When new features are released, getting the public to upgrade their Flash Players to the latest version to take advantage of those features happens light years quicker and easier than getting those same customers to upgrade their browser(s). Some numbers to corraborate.

    Other bloggers with converage:

  • ActionScript 3: Void is now void

    One small gotcha in the Flex 2 Beta 1 build that a lot of ActionScript coders may get caught up on. Make sure your Void’s, usually used at the end of a function that returns squat, are changed to void. Note the lowercase “v”.

    So this:

    protected function hello():Void
    {
    }

    Becomes this:

    protected function hello():void
    {
    }
    
  • Changing the Modal Color

    When you create popups in Flash or Flex, you have the option of making them modal. This means that no other content below the window can be clicked on or interacted with. This forces the user to deal with the popup, usually a Window containing an important form, such as a Login window or an Alert that is asking a question.

    You do this by setting the 3rd parameter of PopUpManager.createPopUp to true. By default, Flash and Flex make this modal window invisible. It’s basically this big shield the size of your application that prevents mouse clicks from going through. Some other magic happens behind the scenes to prevent keyboard commands from slipping through.

    While you can skin this invisible shield via editing the symbol PopUpManager uses to create it, called “Modal”. If you just want to set the color to something other than white, I haven’t gotten styles to work with it. You can set the alpha of this shield; the common value is 50%:

    setStyle(“modalTransparency”, 50);

    For the color, you need to get a specific reference to it. There is probably a cleaner way, but this works in both Flash and Flex 1.5:

    import mx.managers.PopUpManager;
    import mx.containers.Window;
    
    private function initApp():Void
    {
            setStyle("modalTransparency", 50);
            var ref = PopUpManager.createPopUp(this, Window, true);
            ref.setSize(320, 240);
            var c:Color = new Color(ref.modalWindow);
            c.setRGB(0x660000);
    }
    

    All popups are created with a reference attached (a.k.a. decorated) to them in the form of giving them the property of modalWindow. This might be pre-defined in UIObject or something allowing strict typing to work. Regardless, now you have a color choice other than white!