Well, I found the source of the problem.  For anybody who runs into a
similar problem, here is what I found.

The problem happened because we were databinding a constants file that
lived in a different swc.  So in our util swc we have an as3 class
ImageConstants.  The class has a [Bindable] metadata tag.  It also
contains a bunch of public const embedded images like this:

[Embed(source="trash_can_icon.png")]
public const trash_can_icon:Class;

Technically you can't really databind to a const since it's value
can't change.  Normally the compiler just ignores it.  When our
ImagesConstants lived in the same swf project as everything else, we
never saw a warning or a problem.  Once we moved ImagesConstants to a
swc, all the other SWC projects that referenced the constants got
these bizarre data binding warnings like:

"Data binding will not be able to detect assignments to '_title'"

This is a nasty warning since it doesn't actually reference
ImagesConstants, instead it seems to reference the next data binding
declaration *after* ImagesConstants is referenced.

For SWF projects that referenced ImagesConstants, they wouldn't even
compile.  You'd get this error:

"A file found in a source-path must have an externally visible
definition. If a definition in the file is meant to be externally
visible, please put the definition in a package."

Both of these compiler errors are pretty nasty, so I logged a bug.
http://bugs.adobe.com/jira/browse/SDK-13839

I hope this is helpful to someone.

-Adam

--- In [email protected], "lothaar_online"
<[EMAIL PROTECTED]> wrote:
>
> Hi-
> 
> We recently pulled out some code from our project into a SWC library.
>    We didn't modify the code, but now things aren't working as they
> used to.  The original swf is compiled with a reference to the new
> swc.  The mxml files in the library project are giving all sorts of
> unexpected data binding warnings and our application isn't working. 
> I'm guessing that databinding just isn't working for the mxml files in
> the swc.
> 
> For example, I'm getting this warning when I compile an mxml file in
> the library project: "Data binding will not be able to detect
> assignments to '_bumberDisplayName'".  Here is the definition of
> _bumperDisplayName as well as the line that generates the warning:
> 
> [Bindable]
> private var _bumperDisplayName:String;
> 
> ...
> 
> <mx:Button id="deleteBumperVideo"
>         icon="{ImageConstants.getInstance().trash_can_small_icon}"
>         toolTip="@Resource('deleteBumperVideo')" 
>         enabled="{_bumperDisplayName != null}"
>         click="onDeleteBumper(event)"/>
> 
> Does anybody have any idea why databinding would be different when
> compiled in a swc?  I know that the compc compiler is slightly
> different from the application compiler, but it should still work,
> right?  Fyi, we're using flex 2.0.1.
> 
> I'd appreciate any tips or troubleshooting advice.
> 
> Thanks,
> Adam
>


Reply via email to