You can try binding including a Delegate if necessary.  I'll file a bug and see if there's a way I can get the compiler to do the right thing.  I believe the question we had at the time was this: what scope should that function execute in if it lives in another document.  By forcing the function to live on the document we know the scope is going to be the document where you made the function call, so it's easy and everyone understands what's happening.  But I you assign a function from outside the document, is it supposed to execute in the scope of the document where the function is defined, in the scope of your document where the component is defined, or in the scope of the component that's calling the function (a la normal behavior if you don't use a Delegate, also the most confusing for many people)?  If you all have opinions let's hear them and we can look into implementing that in a future release.

 

Matt

 

-----Original Message-----
From: Samuel R. Neff [mailto:[EMAIL PROTECTED]
Sent: Tuesday, May 11, 2004 10:34 AM
To: [email protected]
Subject: [flexcoders] Compilation error "Only functions in the document are allowed"

 


Seems the compiler has a restriction on declaratively setting values of
"Function" type properties and styles.  If I do this:


<bl:HorizontalClusteredBarChart
formatPointLabelFunction="PointLabelFormatters.myPointFormatter" />


Where PointLabelFormatters is defined as:


class PointLabelFormatters {

  public static function myPointFormatter(point:Object):String {
    return "this is my point";
  }
}


I get an error:


Error /charts/CustomPoints.mxml:19
Only functions in the document are allowed.


Even if I try to create a document level alias for the function:


<mx:Script>
  var localAliasForSillyCompilerRestriction:Function =
PointLabelFormatters.myPointFormatter;
</mx:Script>
<HorizontalClusteredBarChart
formatPointLabelFunction="localAliasForSillyCompilerRestriction" />


I get the same error.  Only workaround is to create a wrapper function which
means an extra unnecessary function call just because of a compiler
restriction.  This is a function that will be called thousands of times upon
each rendering, so the extra call can be significant.

Is there any other way around this besides the wrapper function?

Sam



----------------------------------------
Blog http://www.rewindlife.com
TeamMM http://www.macromedia.com/go/team
----------------------------------------





Reply via email to