17 Replies Latest reply: May 24, 2012 5:49 AM by Mnietek RSS

    Problems with migration to FB 4.5

    gv3.me

      I had been working with FB4 premium and just purchased FB4.5 premium with Flash cs5.5.

       

      I am having a BIG problem importing my old projects from FB4.  AKA: "VerifyError: Error #1053: Illegal override of createGeometry in flashx.textLayout.elements.FlowGroupElement".

       

      Please a answer to this would be great, I have read already 3 different post describing the same problem without appropiate answer. The best i got was a confirmation that the problem relies on the TLF and a referral to the TLF forums which have NO answer to this.

      the debugger doesn't even take me to a line to help me figure out how to solve this.

      I have already read that the problem lies in the new version of TLF (2.0) None the less I find NOWHERE a way to solve this out.

      I've tried downgrading the SDK to 4.1 and or changing the reference of the textLayout.swc to the older and/or newer version and none of this helps.

      Dismissing the error, will runs the project but not even the Debugger will show up and the text will be buggi as the visulas overall.

       


      Thank you

        • 1. Re: Problems with migration to FB 4.5
          Jin-Huang Adobe Employee

          Hi,

           

          I checked the changelist. The function createGeometry() was removed in 9/9/2010 with the label *remove unused function*.

          So I think your project must use the TLF before that change.

           

          In {sdk basedir}/frameworks/rsls, there is textLayout_2.0.0.xxx.swf  which is the runtime shared library of tlf and shows tlf's detailed  version.

          In {sdk basedir}/frameworks/libs, textLayout.swc is also  tlf library which is used when the project is compiled with  merge-into-code configuration(default).

          You can get textLayout.swc and textLayout_XXXX.swf from your old SDK and put them into the new SDK.

          Do remember to change sdk configurations in flex_config.xml. There are configurations about RSL URL.

           

          I have just done the migration to FB 4.5 month ago. Feel free to post your qustions.

           

          Jin

          • 2. Re: Problems with migration to FB 4.5
            gv3.me Community Member

            Hi &thanks for your answer,

            well I already tried that and I still have the same problems.

            I worked yesterday with Flash CS5 and FB 4.5 (cause this combinations works) but as soon as I get Flash CS5.5 into the equation I get the Errors. together with :

            ReferenceError: Error #1065: Variable TCMText is not defined.

             

            ReferenceError: Error #1065: Variable TLFTextField is not defined.

            So, I'm in Flash CS5.5 and already changed the textLayout.swc to be the one of the CS.5 as also the flex sdk to be the $.1 as I have in the CS5 and Still have the same 2 Errors above.

            Today I don't see the createGeometry() error, and I believe that is somehow an improvement. But this 2 new Errors are driving me crazy

            Thanks in forward

            • 3. Re: Problems with migration to FB 4.5
              Jin-Huang Adobe Employee

              The problem you have met is a library issue, which has nothing with the new version of Flash pro and FB.

              ReferenceError: Error #1065: Variable TCMText is not defined.

               

              ReferenceError: Error #1065: Variable TLFTextField is not defined.

              seems it cannot find the definition of TCMText and TLFTextField. fl.text.TLFTextField is not in TLF but refer to the TLF text box only in a library used by Flash pro. It doesn't exist in Flex SDK either.

              So, I'm in Flash CS5.5 and already changed the textLayout.swc to be the one of the CS.5 as also the flex sdk to be the $.1 as I have in the CS5 and Still have the same 2 Errors above.

              Frankly speaking, I am not clear of what you have done... what is *CS.5 as* and *$.1*

               

              swc library file is the key one when you set your project as *merge into code*, while swf or swz library files are used when set as *runtime-shared-library*.

              If error shows up only in runtime, it is the runtime-shared-library that doesn't work.

              There is configuration for RSL to set its url. If the url is not changed, your project won't download new RSL as you want and cause runtime error.

              If it's an error occur when you compile, it is the swc file that doesn't work.

              • 4. Re: Problems with migration to FB 4.5
                gv3.me Community Member

                Hi again Jin,

                 

                Well after looking and trying many things around, I have now a better idea of what you recommended to do in the first place. The first time I read your response I did not realized that the difference between the textLayout_2.0.0.xxx.swf in the runtime and the textLayout.swc.

                I will explain you what i did. I opened my .fla in Flash Professional CS5.5 and whent to the Advanced Actionscript 3.0 settings , where I selected the tab "Library path" and redirected both the "$(AppConfig)/ActionScript 3.0/libs" and the "$(AppConfig)/ActionScript 3.0/libs/11.0/textLayout.swc" to my the equivalent versions saved in the computer by the older Flash Professional CS5 version, which was actually running and compiling the project without problems.

                 

                Now jin, I don't know if by doing the last operations I achieved to ...

                get textLayout.swc and textLayout_XXXX.swf from your old SDK and put them into the new SDK.

                 

                If not, then please point me in some direction to do so.  The part that I TOTALLY let out (maybe there lies my mistake ) was to...

                 

                change sdk configurations in flex_config.xml. There are configurations about RSL URL.

                 

                And I have also not an idea of WHAT to change in there.

                 

                As always thanks for the time invested,

                Greetings

                • 5. Re: Problems with migration to FB 4.5
                  Jin-Huang Adobe Employee

                  You just replaced TLF in Flash pro.

                  get textLayout.swc and textLayout_XXXX.swf from your old SDK and put them into the new SDK.

                  change sdk configurations in flex_config.xml. There are configurations about RSL URL.

                  The two actions above are for FlashBuilder.

                   

                  Flash pro and FlashBuilder are dependent softwares. You need to change its libs respectively .

                  You can work on your project with Flash pro or FB. We need not to use them together all the time.

                  • 6. Re: Problems with migration to FB 4.5
                    Subodh K Sharma

                    Hi Jin,

                     

                    Can you please provide the changelist in which the createGeometry() function was removed.

                    I can't find it in the release notes of the textLayout build releases wiz. 1.1 & 2.0

                     

                    Thanks

                    • 7. Re: Problems with migration to FB 4.5
                      Jin-Huang Adobe Employee

                      changelist 756453


                      It seems that the release note did not include 756453.

                      • 8. Re: Problems with migration to FB 4.5
                        Subodh K Sharma Community Member

                        Do you have the list?

                        I need to prepare the change list for using TLF 2.0 to TLF 1.1

                        • 9. Re: Problems with migration to FB 4.5
                          JVLL

                          I also started using CS5.5 and I get a "Variable TCMText is not defined" when trying to load a swf that uses the TLF. Nice work adobe.

                           

                          On top of that, changing the setting from "merged into code" to RSL makes NO DIFFERENCE sometimes.  The size of one particular swf stays the same at 147k no matter what, and that swf has a BUNCH of TLF boxes on the stage.   Nice work adobe.

                           

                          On top of that, font library instances that use "import library" (which was buggy to begin with) NO LONGER WORK. I confirmed this with an http sniffer. No library is loaded (worked with CS5.0).  Nice work adobe.

                          • 10. Re: Problems with migration to FB 4.5
                            robin.briggs Adobe Employee

                            I just want to clarify what your workflow is. You were using Flash CS5, and have upgraded to Flash CS 5.5. Are you using a FLA file that was created with Flash CS5, and having problems? Does it use a library (SWC) that was created by some other version or application? e.g., a SWC from Flash CS5 or FB 4.1 or 4.5?

                             

                            Thanks,

                             

                            - robin

                            • 11. Re: Problems with migration to FB 4.5
                              JVLL Community Member

                              Robin... Unfortunately, I can't spend anymore time clarifying the circumstances because I've already wasted countless hours trying to find solutions for them and I am way behind schedule in  my work. This is all in CS5.5. The 1st issue I mentioned happens because of issue #2: if you do not merge the tlf library, then - as you might know - the functions of a loaded swf are NOT accessible to the swf's that load it anymore. This is because the TLF in the "loadee" has its own TLF loader and is "between" the loader swf and the "loadee", so your old code will no longer work unless you merge the TLF swc. ... but.... alas!... sometimes, the "merge' option just doesn't do anything.  Solution: create a new empty FLA and copy and paste from the old FLA to the new FLA (Who knows how my original was created.. maybe in cs4?). That way you start out "clean". I worked around the last issue by not using that option anymore. In other words, load the swf that contains the embedded fonts via code, then register the fonts via code. The "import library" thing is buggy and doesn't work sometimes. Maybe because today is Thursday?  You can find code samples on the internet.

                               

                              On top of that, a couple of days ago I was working with CS5.5 and a particular fla made it crash constantly (Thanks Adobe) while moving objects in teh stage/library. The solution was to start fresh with a new FLA and copy everything over. On Monday I lost about 3hrs of work because, not only did CS5.5 crash, it CORRUPTED my FLA and I was unable to open it again. I had to start all over  (Thanks Adobe).

                               

                              I hope these solutions help the poor souls that will surely run into these issues. Moral of the story: you might want to stay with CS5.0 for a while longer.

                              • 12. Re: Problems with migration to FB 4.5
                                AlexanderSeitz Community Member

                                Hi,

                                 

                                I ran into similar problems as gv4.me opening a Flash CS5.0 document with Flash CS5.5. It seems to me that the TLF-Text Enginge inside the IDE 5.5 work completly different.

                                First thing what happened when I opened the old CS5.0 and try to comile was

                                 

                                ReferenceError: Error #1065: Variable TCMText is not defined.

                                 

                                ReferenceError: Error #1065: Variable TLFTextField is not defined.


                                Thx to kglad's tip


                                if you do need tlf text, select the merge into code for runtime shared libraries.


                                descriped at http://forums.adobe.com/thread/863163#863163
                                this Reference Error disappeared after setting "merge into code" for the textLayout.swc in the advaned actionscript settings panel.

                                 

                                Now I have another Problem regarding TCMText and TLF-Text.

                                To keep it simple let's assume we have serveral TLF-Text instances on the stage created with the TextTool (Hotkey T) inside the Flash CS5.0 IDE.
                                We want to animate only these TLF instances regardless what else might be available on the stage.

                                As the fla was created by our designer, we don't know exactly how many instances have been placed on the stage. So we write us some code to check
                                wether the currentDisplayObject on stage is a TLFTextField.

                                 

                                 

                                public function get aBuchstaben():Array
                                        {
                                            var aTLFLetters:Array = new Array();
                                            var currentDisplayObj:*;
                                            for (var i:uint = 0; i<this.numChildren; i++)
                                            {
                                                currentDisplayObj = getChildAt(i);
                                                if(currentDisplayObj is TLFTextField)
                                                {
                                                    aTLFLetters.push(currentDisplayObj);
                                                }
                                            }
                                            return aTLFLetters;
                                        }
                                
                                

                                 

                                 

                                This code works perfectly with CS5.0 and when we trace the generated array it gives us all the TLFTextFields we want to animate.

                                 

                                Now, let's open the same fla in CS5.5 and try our code again.
                                Nothing will get traced! Our generated array is empty. It could not find any TLFTextField on stage...very strage don't you think?

                                 

                                Well, let's debugg and see what's going on. Our TLF-instances on stage are no longer instances from the TLFTextField class. Instead we can see that all instances are now instances from a strage class called fl.text.TCMText.

                                 

                                WTF_is_fl.text.TCMText.png

                                 

                                First I thought that this might not be a big problem and I could easely change the code to check for TCMText instead for TLFTextField, but I was wrong. The TCMText class can't be imported nor is it possible find some more informations about this TCMText class.
                                The official adobe help

                                 

                                http://help.adobe.com/de_DE/FlashPlatform/reference/actionscript/3/fl/text/TLFTextField.ht ml

                                 

                                lists only the TLFTextField unter the fl.text package. It's not even listed on the beta help:

                                 

                                http://help.adobe.com/en_US/FlashPlatform/beta/reference/actionscript/3/fl/text/package-de tail.html


                                Seems to be that there are more migration problems regarding TLF-Text between CS5.0 and CS5.5 which are nowhere documented. 
                                After hours of searching I found this information:

                                 

                                TCM text for static TLF Flash Pro CS5.5 uses the Text Container Manager to handle TLF text that is not intended to change at runtime. The TCM avoids the need to include the full TLF ActionScript library in the published SWF file, significantly reducing file size.

                                 

                                Source:
                                http://help.adobe.com/en_US/flash/cs/using/WS0CC7D962-6484-46f0-9596-BB27B21C4926a.html

                                 

                                Sounds good, but where can we find some more information abouth this Text Cotainer Manager and how to handle TLF text that's not changeable?
                                Wait what? TLF which is not to change at runtime?


                                Mhh, then let's try out our fla again and edit each TFL-Text and make it editable:

                                TLF-Text_editable.png

                                Debugg again and whoooa, there are now some real TLFTextFields inside the generated array. Isn't this strange^2 ??


                                Now everything seems to work, except that the TLFTextFields instances are now editable...compile the fla again and you can write stuff inside each

                                TLF-instance. Well it behaves as expected but it's not what we needed.
                                How can we change the instance again so that it keep being an instance of TLFTextField and is not editable at the same time?


                                I tried to set selectable to false

                                
                                TLFTextField(currentDisplayObj).selectable = false;
                                


                                and a lot other stuff but's nothing is working.


                                I ended up beeing nearly as frustrated as JVLL.
                                Hope anybody helps what I found out so far.


                                Please adobe developers spread some more information about this new TLF-Text and its new Text Container Manager classes...

                                • 13. Re: Problems with migration to FB 4.5
                                  Jin-Huang Adobe Employee

                                  For TextContainerManager, you can refer to http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flashx/textLayout/conta iner/TextContainerManager.html. It's an effictive method to render long text, especially for scrollable and editable text, but it's not new in TLF.

                                   

                                  To make it readonly, you can set tcm.editingMode = EditingMode.READ_SELECT or EditingMode.READ_ONLY.

                                   

                                  Then I want to show you some facts.

                                  1. TLFTextField and TCMText are not class in TLF, but class based on TLF. You can find that according to the package name. They are all done by Flash pro. The size of TLF is always the shortcoming in Flash pro's point of view. So Flash pro develop TCMText based on the idea that they want to reduce the library size. They intented to satisfy you, the clients.

                                  2. TLF in Flash pro CS5 and CS5.5 are the same.

                                  3. The error you met are caused by the classes of Flash pro. We, TLF team, are pleased to share all the informations we know with you. But you complain here cannot solve the problem in my opinion. You may want to let Flash pro guys know the issue.

                                  • 14. Re: Problems with migration to FB 4.5
                                    idratherbegolfing Community Member

                                    Wow. I think there's a lot going on in this discussion. Let me see if I can clarify a few of them.

                                     

                                    1) Verify Errors on TCMText. As best I can tell from the discussion, this is occurring in situations where you have switched out the textLayout_1.0.0.595.swz file (and the corresponding xml file) in Flash CS5/Common/Configuration/ActionScript 3.0/rsls with the one in the Flash CS5.5 folder. I don't know what led people to do this, but it certainly isn't a recommended workflow. It will cause errors like the Verify error mentioned in this thread. Please, don't attempt to switch those out. Also, please don't switch out the tlfRuntime.swc file between the applications (in Flash CS5/Common/Configuration/ActionScript 3.0/libs) as that will also cause bad things to happen.

                                     

                                    2) There seems to be an expectation that when you produce a SWF, that there will always be a TLFTextField for every one of your instances on the Flash stage. That was true in CS 5, but not true in CS 5.5. We found that the use of the TextContainerManager class gave us some gains in memory usage, SWF size, and performance, so, in cases where the user didn't specify an instance name (and a few other specific cases where TextContainerManager didn't have all the same features as TLFTextField), we output TCMText objects instead of TLFTextField objects. So, if you want TLFTextField objects, simply give the object an instance name, and it will be in the SWF as a TLFTextField. Then, looping through all the DisplayObjects will allow you to find TLFTextField objects.

                                     

                                    3) Use of "Merge into code". This should not be necessary to resolve the Verify errors (see 1 above). This is useful for making a SWF that is loaded by another SWF. Otherwise, the SWF that loads your SWF with TLF would have to force the TLF library to load. The downside is that the entire TLF library is put into your SWF file, thus increasing the size by over 100K. So, it isn't recommended unless you have a good reason to do so (like the one I mentioned).

                                     

                                    4) The TCMText class is intentionally not documented as a public class. Again, we only use it in cases where the user didn't specify an instance name. So, the only place you'll see it is when you do things like iterate over the stage's DisplayObjects.

                                     

                                    I hope that helps some of you in your use of Flash Pro and TLF.

                                    • 15. Re: Problems with migration to FB 4.5
                                      AlexanderSeitz Community Member

                                      Thanks for the explanation ;-)

                                       

                                      I was able to fix the TCMText problem myself some hours ago before I read your answer. I found one specific hint inside the

                                       

                                      http://help.adobe.com/en_US/flash/cs/using/flash_cs5_help.pdf

                                       

                                      document on page 262: Reducing SWF file size with TLF text (CS5.5 only)

                                      Do not give any TLF text instances an instance name in the Properties panel. This means that the text cannot be manipluated with ActionScript.


                                      So that's what we have to do if we want to reduce our swf file size with TLF text. Flash CS5.5 will then internly use TCMText objects instead of the TLFTextField class. Good to know. What happens if we do give a TLF-text an instance name?
                                      --> Flash CS5.5 will then make use of the TLFTextField again. The TLFTextField inherits from Sprite, so we could to all kinds of animation we want to ;-)

                                       

                                      Problem solved.

                                       

                                      idratherbegolfing you nailed the solution right there in our 2) and 4) explanation. It's very nice that the adobe team were able to fix these memory leaks and reduce swf filesize issues with the new TLF in CS5.5. It might be good that TLF behaves different in CS5.5, but we developers need to know about these changes, so that we are able to change our expectations as well.

                                       

                                      Thanks again for sharing this information

                                      • 16. Re: Problems with migration to FB 4.5
                                        idratherbegolfing Community Member

                                        I'm glad that was helpful for you!

                                         

                                        If you give an instance name to a TLF object, then Flash will put the object into the SWF as a TLFTextField object. That loses the performance, memory usage, and SWF size gains of TCMText, but it opens the door to complete control via your own AS code. So, it's a trade-off of features vs. performance/memory/and SWF size.

                                         

                                        Good luck with this.

                                         

                                        Rusty

                                        • 17. Re: Problems with migration to FB 4.5
                                          Mnietek Community Member

                                          Is there ANY way to GLOBALLY turn off TCMText? I need access to TLF Text fields - after embeding swf in another document. Assigning name to textfields one by one - this is insane....

                                           

                                          ______

                                          sorry for my English