2011-06-07 19 views
6

Esnek bir uygulamam var ("MyApp") Üzerinde çok tuhaf ve tutarsız hatalar görüyorum. Uygulama fırlatma Bazen hemen bakın hatalarından biri tam hata çıktı soruya alt kısmındaFlash/actionscript çalışma zamanı hatası neden "WatcherSetupUtil tanımlı değil"?

"Variable _MyAppWatcherSetupUtil is not defined." 

olduğunu.

Bu hatayı özellikle garip yapan şey, bir proje oluşturduktan hemen sonra ve tutarlı bir şekilde almamdır (ör: swf'yi defalarca çalıştır ve her zaman olur) ve hatayı yapmak için tek yapmam gereken şey uzakta ("düzelt" demeyeceğim) projeyi tekrar inşa etmektir.

Bu hatanın ne hakkında olduğunu bilen var mı? Şimdiye kadar toplayabildiğim en iyi şey, bir şekilde (yani, WatcherUtil'in ima ettiği gibi) bağlayıcı değişkenlerle ilgili olabileceğidir, ama neden, nedenler arasında tutarsızlık olacağını anlamıyorum.


Derleme flex_sdk_4.5.0.20967 gelen mxmlc ile. bu gerçekleşti son yapı için

Tam hata çıkışı:

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 isteği başına Güncelleme ..: MXML dosyasının

ilk 7 hatları şunlardır:

<?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"/> 

Ve InitData() kodu (diğer ilgili komut satırlarıyla birlikte), MyApp.as dosyasındadır:

import classes.RpcServerProxy; 
public var SP:RpcServerProxy; 

public function InitData():void { 
    SP = new RpcServerProxy("http://192.168.1.102:1234"); 
} 
+1

Kodunuzdaki bir şeye neden olduğunu tahmin ediyorum, ama yığın izlemede hiçbir şeyin özel bir bileşen olmaması tuhaf. WatchterUtils gerçekten bağlayıcı ile ilgilidir. – JeffryHouser

+0

Projede özel (ve karmaşık) bir salt actionscript sınıfım var, ancak içinde hiçbir şey yapamadım. Bağlanma ilişkisini doğruladığınız için teşekkürler. Benim için bu en zor olanı yapmak benim için en büyük gizem, inşaa tutarsızlıktır ... – Russ

+0

Eğer bu, saf bir ActionScript projesiyse; Bunu neden Flex ile etiketlediniz? Flex Bileşenlerini kullanıyor musunuz? – JeffryHouser

cevap

4

RpcServerProxy'un ne olduğunu bilmiyorum, ancak her şey başlatılmadan önce bir şeyler yapıyor olabilir. Başlatma olayındaki işlevi çağırmak yerine bunun yerine createComplete öğesini kullanın.

Her zaman bu sınıftaki koda bakmak isteyebilirsiniz;

+0

Evet, RpcServerProxy kesinlikle çok eğlenceli şeyler yapıyor:). Başlangıç ​​olarak, dinamik bir Proxy sınıfıdır ... "" RPCServerProxy genel dinamik sınıfı Proxy'yi genişletir ". Orada daha fazla karmaşıklık var. Konuyla ilgili olabilir, ama aynı kod tabanı için derleme yapıları varyasyonları görmemeliyim ne düşünmeme rağmen! 'Initialize' event ve 'creationComplete' arasındaki zamanlama farklılıklarına bakacağım. Teşekkürler! – Russ

+1

TEŞEKKÜRLER !!! 'Initialize''den' creationComplete''e geçiş yapmak sadece bu problemi çözmüş gibi görünmüyor, aynı zamanda tamamen ("under underflow") problemi de çözdüm. Neden olduğundan emin değilim, ama kesinlikle Flash başlatma kodu/zamanlama biraz kararsız olduğunu düşünmeme neden olur. Şimdi başlatma için 'creationComplete' ile yapışacağım. – Russ

+0

Bu sorunun cevabını kabul ettim, çünkü özel problemimi çözdü. Başlatma sırasında sıralama ile bir şeyler devam ediyor gibi görünüyor. Ayrıca, www.flextras.com, içinde "WatcherSetupUtil" bulunan bir şeyin, değişken ciltleme için otomatik olay oluşturma/izleme ile ilgili olduğunu doğrulamasıdır. Uygulamaların başlangıç ​​dizilemesi, bu şekilde bir şekilde sorunlara neden olmuş olmalı. 'creationComplete' gitmenin yolu gibi görünüyor. – Russ

İlgili konular