Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Runtime problems after migrating from Flex3 to 4 in compatibility mode

We are migrating our Flex-3.2 application to Flex 4.1, mainly to take advantage of the new text flow/engine features. In a first step we decided to go with compiling for MX-only and in Flex-3-compatibility mode.

Thanks to some helpful resources (

http://www.adobe.com/devnet/flex/articles/flexbuilder3_to_flashbuilder4.html

Any Flex 4 migration experience?

http://www.adobe.com/devnet/flex/articles/flex3and4_differences_02.html

) I am able to compile our application.

But I find myself surprised about the amount of runtime differences ranging from the problem that I cannot cast ResultEvent.currentTarget to HTTPService ( which apparently was introduced in 3.5 ) to many layout problems to differences in event dispatching ( e.g. one of our legacy components listens to the add event which it just doesn't seem to get anymore ).

It seems there is very little documentation on this. I'd like to find a list with detailed changes so that we don't have to rely on QA to stumble across hopefully all issues.

This documents lists some, but doesn't seem exhaustive. Does someone have a better list of documented changes?

Thanks Stefan

PS. List of concrete examples I have found so far:

1) In Flex 4 the add event is not fired:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:fx="http://ns.adobe.com/mxml/2009" 
                xmlns:mx="library://ns.adobe.com/flex/mx" layout="absolute" minWidth="955" minHeight="600">

    <fx:Script>
        <![CDATA[

            private function notFired():void
            {
                trace("ADDED");
            }

            private function fired():void
            {
                trace("COMPLETE");
            }
        ]]>
    </fx:Script>

    <mx:TextArea add="notFired();" creationComplete="fired();"/>

</mx:Application>

Now do the same in Flex 3 and you'll see both events fire.

Apparently, this is a bug. Might be possible to work around this but certainly decreases my level or trust substantially.

2) Dialogs/popups show all content mirrored.

A bug as well. Easy to work around, but how could something that obvious slip?

3) Problems with injected "Ôª" chars.

See post here.

like image 316
Stefan Avatar asked Aug 19 '10 17:08

Stefan


1 Answers

Let's see some of your doubts...

1) add never was a reliable event since flash player 9 release. It's a common bug. Try to create a movieclip out of displaylist and add a child in it that have the Event.ADDED listener. In some situations (don't know exactly what situation) it doesn't work (Adobe Fail). But, instead the "add" flex event, use the "added" or "addedToStage" once you want to detect if it's already in your applications display list.

2) Fail. Check the layout manager source-code of the framework.

3) I've never seen this. (Even in compatibility mode). Can you show an example? Did you check if the application encoding is the same you're using on your strings? Maybe the string table could be doing some confusion due to the characters encodings (or maybe your editor). Try other editors and verify the code file contents on a linux shell with SED. With a find and a sed you can fix it easily.

like image 128
mannysz Avatar answered Nov 10 '22 01:11

mannysz