2011-08-22 90 views
3

好的,我需要一些幫助。我從Flash Builder 4升級到Flash Builder 4.5,並將我的項目切換到4.5.1 sdk。我使用一個ant腳本來構建我的項目,所以我修改它以使用適當的flexTasks.jar,mxmlc等...Flex 4.5.1運行時ReferenceError:錯誤#1065:變量...未定義

現在,如果我從一個空白bin-debug文件夾開始,然後構建並運行該應用程序一切正常。但是,如果我再修改代碼,並建立(不刪除的Bin調試),然後運行該應用程序,我得到一個運行時錯誤:

ReferenceError: Error #1065: Variable ... is not defined. 
at flash.display::MovieClip/nextFrame() 
at mx.managers::SystemManager/deferredNextFrame()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\SystemManager.as:284] 
at mx.managers::SystemManager/preloader_preloaderDocFrameReadyHandler()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\managers\SystemManager.as:2633] 
at flash.events::EventDispatcher/dispatchEventFunction() 
at flash.events::EventDispatcher/dispatchEvent() 
at mx.preloaders::Preloader/timerHandler()[E:\dev\4.5.1\frameworks\projects\framework\src\mx\preloaders\Preloader.as:515] 
at flash.utils::Timer/_timerDispatch() 
at flash.utils::Timer/tick() 

再次,如果我刪除bin-debug文件夾,然後再次編譯運行沒有問題。

它所抱怨的變量總是一個類變量,指向用作圖標的圖像文件。代碼中,我用它來創建了var:

[Embed(source="/assets/icons/close-32x32.png")] 
public var closeIcon:Class; 

文件存在,而我證實,當它給出了錯誤的文件是在bin調試/資產/圖標文件夾和Src /資產/圖標/夾。

拋出錯誤後,如果我點擊Flash Builder中的繼續按鈕,它會在指向圖像文件的下一個類變量上再次拋出相同的錯誤。

任何想法?刪除/重新編譯需要幾分鐘時間,所以顯然這讓我很生氣。

編輯:Ant任務,在調試模式下編譯:

<target name="compile-debug"> 
    <echo>Compile MXML</echo> 
    <mxmlc 
     file="${SRC_DIR}/${MAIN_SOURCE_FILE}"    
     debug="true" 
     optimize="false" 
     output="${DEBUG_DIR}/${APP_ROOT_FILE}" 
     append="true"    
     actionscript-file-encoding="UTF-8"    
     keep-generated-actionscript="false" 
     link-report="MyReport.xml" 
     maxmemory="2048m" 
     incremental="true"> 

     <!-- Get default compiler options. --> 
     <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml"/> 
     <load-config filename="${FLEX_HOME}/frameworks/air-config.xml"/> 

     <!-- List of path elements that form the roots of ActionScript class hierarchies. --> 
     <source-path path-element="${FLEX_HOME}/frameworks"/> 

     <!-- Include Themes --> 
     <!-- NOTE: Spark theme required --> 
     <theme dir="${FLEX_HOME}/frameworks/themes/Spark/"> 
     <include name="spark.css" /> 
     </theme> 
     <theme dir="${FLEX_HOME}/samples/themes/spark_graphite/"> 
     <include name="spark_graphite.css" /> 
     </theme>     

     <!-- List of SWC files or directories that contain SWC files. --> 
     <compiler.library-path dir="${FLEX_HOME}/frameworks" append="true"> 
     <include name="libs" /> 
     <include name="../bundles/{locale}" />     
     </compiler.library-path> 

     <!-- uncomment if you have external libs (swc files) -->  
     <library-path dir="${LIB_DIR}/riaspace/" append="true"> 
     <include name="*.swc" /> 
     </library-path> 
     <library-path dir="${LIB_DIR}/AlivePDF/" append="true"> 
     <include name="*.swc" /> 
     </library-path>    
     <library-path dir="${LIB_DIR}/coltware/" append="true"> 
     <include name="*.swc" /> 
     </library-path> 
    </mxmlc> 

</target> 

其中FLEX_HOME = <路徑到Flash Builder> /sdks/4.5.1

+0

我猜想你正在使用的是ANT腳本,但我不確定那會是什麼。 – JeffryHouser

+1

嵌入指令是buggy和編譯器浪費時間,請嘗試這種方法 - http://kachurovskiy.com/2010/storing-icons-in-external-zip-and-seamless-work-with-composite-icons/ –

+0

@ www.Flextras.com - 感謝您的回覆。我已經編輯了我的問題,包括我的螞蟻構建任務 – Abram

回答

2

答案埋在在上面的註釋中引用的Maxim's post的中間:

- >嘗試關閉增量編譯。

我這裏有同樣的問題用一個簡單的mimeType='application/octet-stream'嵌入和閱讀Maxim的文本時,這個跳了出來,因爲我最近改變了我的自定義生成工具的使用inremental編譯:

「嵌入漸進式編譯過程中有時會失敗」

這個失敗的結果是.swf文件包含這樣的事情:

<DefineBinaryData id='1' length='1024' /> 

這看起來是空的,而不是這個(從工作文件):

<DefineBitsLossless2 id='1' encoding='base64'> 
(.. in my case, 1024 bytes of base64-encoded data) 
</DefineBitsLossless2> 

(這解決了我的問題,所以Maxim非常感謝你。我希望它能爲你解決這個問題。)

+0

你能告訴我們如何啓用禁用增量編譯? – feresr

+0

@feresr很久以前,我沒有記住它,對不起。我懷疑我必須剛剛使用這個:http://help.adobe.com/en_US/flex/using/WS2db454920e96a9e51e63e3d11c0bf69084-7ed3.html –

0

我有同樣的問題,所以我「清理」了項目,然後重新運行。有效。

1

我有Flash Builder 4.7並使用sdk 4.5.1A。

我在2014年聖誕節前使用Flash Player調試器版本15,一切正常。我將Firefox設置爲默認瀏覽器。然而,在2015年,Adobe有了一個新玩家,所以我升級到了16版,那時候我遇到了同樣的問題。經過很多努力,我發現問題與新版本的Flash Player調試器有關。我必須將默認瀏覽器切換到Internet Explorer並安裝Internet Explorer Flash Player調試器。在調試之前,我必須先清理並更新。然後一切再次運作!

相關問題