Export SWC from Flash and Access Child from Flex

2019-06-14 05:43发布

问题:

I'm creating an actionscript project in Flex Builder. I succeed to export from Flash a SWC file, and to use it succesfully in Flex. I have a good programming background and Flex looks very simple for me, but I have difficult times in flash.

I'm trying to achieve something that might be very simple(not for me of course):

I create a simple shape in Flash, convert it to symbol. Then I create a TextField. The I select both the elements and convert them to another symbol, and Export it as a movieclip in swc.

In flex I want to change the value from the textfield. How should I do? I'm trying to do:

var t:ExportedMC = new ExportedMC();
t....(what should I write here)

As I mentioned when I open flash I feel like an elephant in a porcelain store. I have 2 questions here: - how to assign a name to the textfield in flash? I'm using CS4. - how to access it as a child in flex?

回答1:

When you create the symbol in Flash and export it to actionscript (in symbol properties dialog), you created a class that is accessible in Flex (after including the resultant swc in flex project library path). Any controls/shapes/symbols within that class will be contained within and created along with the containing class.

If you have any objects/smybols in that class that you would like to access/modify/whatever, you need to give them an instance name (you can do it without this step, but it's more complicated). In Flash, you edit (doubleclick) the class object in the library, then select a particular sub-object/symbol/control in the class object and give it a name by entering something under in object properties tab. That name will be included in the exported class as an property that you can access as any other class property (width,height,x,y,...).

For example, if you have a ExportedMC symbol that includes a TextField control which you gave instance name ('txtFieldName', for example), you would access it in Flex like so:

var t:ExportedMC = new ExportedMC();
t.txtFieldName.text="something";

Flex will actually be able to autocomplete the property name on the class, so you'll easily be able to know if things worked out or not.

Hope this helps.