2011-06-07 105 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

相關問題