Skip navigation
Currently Being Moderated

Problems with migration to FB 4.5

May 23, 2011 9:07 AM

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

 
Replies
  • Currently Being Moderated
    May 23, 2011 7:14 PM   in reply to gv3.me

    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

     
    |
    Mark as:
  • Currently Being Moderated
    May 24, 2011 8:14 PM   in reply to gv3.me

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    May 25, 2011 11:28 PM   in reply to gv3.me

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 1, 2011 11:35 PM   in reply to Jin-Huang

    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

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 2, 2011 12:03 AM   in reply to Subodh K Sharma

    changelist 756453


    It seems that the release note did not include 756453.

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 2, 2011 3:10 AM   in reply to Jin-Huang

    Do you have the list?

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

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 9, 2011 7:10 AM   in reply to gv3.me

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 9, 2011 10:06 AM   in reply to JVLL

    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

     
    |
    Mark as:
  • Currently Being Moderated
    Jun 9, 2011 12:40 PM   in reply to robin.briggs

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 13, 2011 6:42 AM   in reply to gv3.me

    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.html

     

    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-detail.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-B B27B21C4926a.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...

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 13, 2011 7:50 PM   in reply to AlexanderSeitz

    For TextContainerManager, you can refer to http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/fla shx/textLayout/container/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.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 14, 2011 10:51 AM   in reply to gv3.me

    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.

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 14, 2011 1:52 PM   in reply to idratherbegolfing

    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

     
    |
    Mark as:
  • Currently Being Moderated
    Sep 14, 2011 2:08 PM   in reply to AlexanderSeitz

    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

     
    |
    Mark as:
  • Currently Being Moderated
    May 24, 2012 5:49 AM   in reply to idratherbegolfing

    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

     
    |
    Mark as:

More Like This

  • Retrieving data ...

Bookmarked By (0)

Answers + Points = Status

  • 10 points awarded for Correct Answers
  • 5 points awarded for Helpful Answers
  • 10,000+ points
  • 1,001-10,000 points
  • 501-1,000 points
  • 5-500 points