我正在开发一个Flex应用程序(“MyApp”),但是在使用过程中遇到了一些非常奇怪和不一致的错误。其中一个错误有时会在应用程序启动后立即出现:
"Variable _MyAppWatcherSetupUtil is not defined."
完整的错误输出在问题底部。
这个错误特别奇怪的地方是,我在进行项目构建后(即运行swf很多次并且总是发生),立即且一致地得到它,而使错误消失(我不会说“修复它”)的唯一方法是再次构建项目。
有人知道这个错误是关于什么的吗?到目前为止,我能够收集到的最好信息是它可能与绑定变量有关(这就是WatcherUtil所暗示的),但我不明白为什么在构建之间会不一致。
使用flex_sdk_4.5.0.20967中的mxmlc进行编译。
最近发生错误的完整输出:
异常抛出:ReferenceError: Error #1065: 变量_MyAppWatcherSetupUtil未定义。 at global/flash.utils::getDefinitionByName() at MyApp()[C:\code\Sandbox\MyApp\src\MyApp.mxml:6] at _MyApp_mx_managers_SystemManager/create()[_MyApp_mx_managers_SystemManager.as:50] at mx.managers.systemClasses::ChildManager/initializeTopLevelWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\systemClasses\ChildManager.as:311] at mx.managers::SystemManager/initializeTopLevelWindow()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:3063] at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::kickOff()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:2849] at mx.managers::SystemManager/http://www.adobe.com/2006/flex/mx/internal::preloader_completeHandler()[E:\dev\hero_private\frameworks\projects\framework\src\mx\managers\SystemManager.as:2729] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.preloaders::Preloader/timerHandler()[E:\dev\hero_private\frameworks\projects\framework\src\mx\preloaders\Preloader.as:542] at flash.utils::Timer/_timerDispatch() at flash.utils::Timer/tick()
按照J_A_X的要求更新:
MXML文件的前7行是:
<?xml version="1.0" encoding="utf-8"?>
<s:Application height="100%" width="100%"
xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
initialize="InitData();">
<fx:Script source="MyApp.as"/>
而InitData()代码(以及其他相关的脚本行)都在MyApp.as文件中:
import classes.RpcServerProxy;
public var SP:RpcServerProxy;
public function InitData():void {
SP = new RpcServerProxy("http://192.168.1.102:1234");
}