2012-05-22 185 views
0

我沒有出車禍,只有與安裝的應用程序發生了,我不能讓它在IDE cvrash(Flash Builder的調試或運行選項)奇怪的崩潰

後評論和uncomenting代碼的時間長我發現這個問題,我發佈以下

<?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中(我沒有包含記錄器代碼) I a,假設對Logger.write的調用可能導致延遲或類似的東西

這是錯誤的我的代碼或玩家是越野車?或編譯器? 任何想法?

編輯:當我不使用它像在示例代碼或頁面,沒有記錄儀應用程序崩潰

-i得到閃存,沒有對話 - 不是因爲錯誤我使用logger發生一個崩潰報告

+0

誰寫的記錄儀? – Neil

+0

你使用的是什麼樣的日誌目標?如果您正在登錄到磁盤上的文件,則可能已經安裝了應用程序(可能會有更嚴格的安全設置)遇到安全沙箱問題。 – dirkgently

+0

嗨,記錄器在這裏修復了這個問題,是一個自定義記錄器,我假設它可能會添加延遲或其他內容。記錄器是不是問題,你可以重現問題沒有記錄器 – simion314

回答

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; 
} 
+0

解決方法的作品,問題是什麼是實際問題,所以我可以肯定,這將不會再發生在代碼的其他部分,並且這種解決方法可能無法在未來或其他球員(我想代碼更改是如此之小以至於編譯器的未來版本可能會「修復」工作並觸發錯誤,我希望你能找到原因,Thx爲你的時間 – simion314

+0

我花費了很長的時間試圖弄清楚......我深信這是一個編譯器錯誤,我正在進一步研究它(我將它發送給Adobe的一些人看)......這是我長期見過的最奇怪的錯誤 –

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(' '); 
} 
+0

作爲補充評論,已經有關於Flex 4.6和Flash 11.3的內存管理問題的報告,我自己沒有看到,但是我通過apache flex郵件列表聽到了它。 –