2011-06-07 102 views
6

我有一个灵活的应用程序(“MyApp”)我正在努力在哪里我看到一些非常奇怪的和不一致的错误。其中一个错误,我有时会立即看到应用推出的是什么导致Flash/actionscript运行时错误“WatcherSetupUtil未定义”?

"Variable _MyAppWatcherSetupUtil is not defined." 

完整的错误输出是问题的底部。

是什么让这个错误特别奇怪是我在做一个项目构建后立即获得它(即:多次运行swf并且它总是发生),并且我需要做的唯一事情就是让错误发生(我不会说“修复它”)是再次构建项目。

有谁知道这个错误是关于什么的?目前为止我能收集到的最好的东西是,它可能与绑定变量有关(这是WatcherUtil似乎暗示的),但我不明白为什么它会在构建之间不一致。


编译时使用flex_sdk_4.5.0.20967中的mxmlc。对于最近的构建在那里发生

完整的错误输出:

Exception thrown: ReferenceError: Error #1065: Variable _MyAppWatcherSetupUtil is not defined. 
    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要求更新..:

第7行MXML文件是:

<?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"); 
} 
+1

我想你的代码中的东西正在造成这种情况,但奇怪的是,堆栈跟踪中没有任何东西是自定义组件。 WatchterUtils确实与绑定有关。 – JeffryHouser 2011-06-07 14:10:32

+0

我在项目中有一个自定义(和复杂的)纯动作类,但我没有做任何可绑定的操作。感谢您确认绑定关系。对于我来说,最棘手的问题就是构建与构建不一致...... – Russ 2011-06-07 14:16:00

+0

如果它是纯粹的ActionScript项目,为什么你用Flex标记这个?你在使用Flex组件吗? – JeffryHouser 2011-06-07 14:21:01

回答

4

我不知道RpcServerProxy是什么,但它可能在所有东西都被实例化之前做了一些事情。而不是在初始化事件中调用函数,而是使用creationComplete。

你可能总是想看看这个类中的代码,因为它肯定是在做一些有趣的事情。

+0

是的,RpcServerProxy肯定会做很多时髦的事情: )。首先,它是一个动态代理类...“'公共动态类RpcServerProxy扩展代理'”。那里还有更多的复杂性。这可能是相关的,但不管我认为我不应该看到相同代码库的构建到构建变体!我会研究'initialize'事件和'creationComplete'之间的时间差异。谢谢! – Russ 2011-06-07 20:20:29

+1

谢谢!从'initialize'切换到'creationComplete'不仅似乎已经解决了这个问题,而且还彻底解决了我也有(并且发布)的“堆栈下溢”问题!我不知道为什么,但它肯定会让我认为Flash初始化代码/时序有点片面。现在我将坚持用'creationComplete'来进行初始化。 – Russ 2011-06-07 20:32:30

+0

我接受了这个答案,因为它解决了我的具体问题。在初始化过程中,似乎一直在进行测序。另外值得注意的是,www.flextras.com证实,其中的“WatcherSetupUtil”的任何内容都与变量绑定的自动事件创建/监控有关。应用程序的启动顺序一定是以某种方式造成了问题。 'creationComplete'是看起来的方式。 – Russ 2011-06-07 20:36:33

相关问题