我发生崩溃只发生在安装的应用程序中我无法在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的调用可能导致延迟或类似的事情
我的代码有问题或播放器有问题吗?还是编译器? 有任何想法吗?
编辑: - 不是我使用的记录器,因为错误发生在我不使用它时,如示例代码或页面,没有记录器应用程序崩溃
-i从崩溃报告中获取Flash的对话
答案 0 :(得分: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;
}
答案 1 :(得分: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(' ');
}