2011-08-22 92 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调试器。在调试之前,我必须先清理并更新。然后一切再次运作!

相关问题