Hey Tucker,
The link that Raju sent does the following hack to use the Flash stack trace
output to parse out a function's name in AS3 (when debugging is enabled)
private function getFunctionName(e:Error):String
{
var s:String = e.getStackTrace();
var i:int = s.indexOf("at ");
var j:int = s.indexOf("()");
return s.substring(i + 3, j);
}
private function getCallingFunctionName(e:Error):String
{
var s:String = e.getStackTrace();
// trace(s);
var i:int = s.indexOf("at ");
i = s.indexOf("at ", i + 3);
if (i == -1)
return "caller unknown";
var j:int = s.indexOf("()", i + 3);
return s.substring(i + 3, j);
}
where the latter two functions are can be used like this:
private function doSomething():void
{
trace(getFunctionName(new Error()));
doit();
}
private function doit():void
{
trace(getFunctionName(new Error()));
trace(" called by", getCallingFunctionName(new Error()));
Could we do something like this in the deprecation method (or some
more general place in the debugger)
to print function names more informatively?
On Wed, Jan 27, 2010 at 4:14 AM, Raju Bitter <[email protected]>wrote:
> Max,
>
> what is the reason that the warning to use getDisplayObject() instead of
> getMCRef() is not displayed correctly in DHTML? In SWF10 runtime I get the
> warning
>
> INFO #helloView.Function is deprecated. Use the #helloView.Function instead
>
> In SWF8 and DHTML output is correct:
> INFO %cssview.lzx#32: #helloView.getMCRef is deprecated. Use
> #helloView.getDisplayObject instead
>
> Looking into the code
> http://svn.openlaszlo.org/openlaszlo/trunk/WEB-INF/lps/lfc/views/LaszloView.lzsI
> see that you just dump the function reference in the warning. I guess
> that's because there's no API to retrieve a function's name in AS3. There is
> a workaround, though, described here:
> http://blogs.adobe.com/aharui/2007/10/debugging_tricks.html
>
> For this to work, you need to turn on the -verbose-stacktraces=true
> compiler option - which I'm not sure is done for OpenLaszlo.
>
> - Raju
>
--
Henry Minsky
Software Architect
[email protected]