0

我的崩溃仅发生在已安装的应用程序中 我无法在 IDE 中将其设为 cvrash(Flash Builder 调试或运行选项)

经过长时间的注释和取消注释代码,我发现了问题,我在下面发布代码

<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009" 
                       xmlns:s="library://ns.adobe.com/flex/spark" 
                       xmlns:mx="library://ns.adobe.com/flex/mx"
                       xmlns:ns="generic_components.*"
                       creationComplete="windowedapplication1_creationCompleteHandler(event)">
    <fx:Script>
        <![CDATA[
            //import core.Logger;

            import mx.controls.Alert;
            import mx.events.FlexEvent;

            import spark.events.TextOperationEvent;

            protected function windowedapplication1_creationCompleteHandler(event:FlexEvent):void
            {
                //Logger.init();
            }
            public static function humanFromCamelCase(txt:String):String{

                var res:String=txt.charAt(0);
                //Logger.write("camel case for "+txt);
                for (var i:int=1;i<txt.length;i++) 
                {
                    //  Logger.write("camel iter "+i);
                    var c:String=txt.charAt(i);
                    //Logger.write("camel char is "+c);
                    if(c==c.toUpperCase())
                    {
                        res=res+" "+c;  
                    }
                    else
                        res=res+c;
                }

                return res;
            }


            protected function test_clickHandler(event:Event):void
            {
                Alert.show(humanFromCamelCase("CompanyId"));

            }

        ]]>
    </fx:Script>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <s:layout>
        <s:VerticalLayout />
    </s:layout>
    <s:Button id="test" label="TEST" click="test_clickHandler(event)"/>

</s:WindowedApplication>

另请参阅此处的网络示例http://ploscariu.com/crash/TestWeb.html (将来可能不存在)

这次崩溃有什么奇怪的:1 我不知道会发生什么

2 播放器中通常的崩溃处理程序不显示

3 在开发环境IDE中不崩溃

4 如果我取消注释那些 Logger.write 那么代码在我的机器上工作正常(它不能在所有机器上工作),Logger.write 将 sting 写入文件并放置在另一个项目 swf 中(我没有包括记录器代码)我,假设对 Logger.write 的调用会导致延迟或类似的事情

我的代码有问题还是播放器有问题?还是编译器??有任何想法吗?

编辑:-不是我使用的记录器,因为当我没有像在示例代码或页面中那样使用它时会发生错误,没有记录它崩溃的应用程序

-我没有从 Flash 中得到带有崩溃报告的对话框

4

2 回答 2

2

这太不可思议了!!!!我不知道为什么会发生这种情况(还)......但我有一个解决方法:

而不是res=res+c,使用res+=c

public static function humanFromCamelCase(txt:String):String{

    var res:String=txt.charAt(0);
    for (var i:int=1;i<txt.length;i++) 
    {
        var c:String=txt.charAt(i);
        if(c === c.toUpperCase())
        {
            res += " " + c;  
        }
        else
            res += c;
    }

    return res;
}
于 2012-05-22T14:01:49.870 回答
1

我不知道你为什么会出错,但是,我会用这个替换函数:

public static function humanFromCamelCase(txt:String):String{
    return txt.replace(/([A-Z])/g, ' $1').replace(/^ /, "");
}

没有测试过,但你明白了。这是一种更简单、更快捷的方法。

我还想到了另一种方式:

public static function humanFromCamelCase(txt:String):String{
    return txt.split(/(?=[A-Z])/).join(' ');
}
于 2012-05-22T16:04:13.303 回答