2010-11-18 23 views
2

AIR uygulamasına as2 swf yüklüyorum. dosya dosya yüklendiğinde düzgün çalışır. bayt yüklenen Ancak, bazı şekilde bozulmuşturLoader.load ve Loader.loadBytes farkları

var bytes:ByteArray = ... //loaded from resources 
var loader:Loader = new Loader(); 
var context:LoaderContext = new LoaderContext(false); 
context.allowCodeImport = true; //this is neccessary 
// Method 1 - blocks some scripts in loaded SWF 
//context.applicationDomain = new ApplicationDomain(); 
// (application domain has no effect with as2 swf) 
//context.securityDomain = SecurityDomain.currentDomain; //gives error 2114: securityDomain must be null 
loader.loadBytes(bytes, context); 
// Method 2 - loads properly 
//loader.load(new URLRequest(file.url)); 

Peki neden sadece dosyadan yüklemek (bu fare tepki, ancak bazı unsurlar etkin değildir)? Kaynaklarım şifreleme ile korunur ve onları diske atamam - hala korunmalıdır.

numaralı bayttan neye bayt yüklüyor olabilir?

similar question var, ancak benim durumumda 2 daha fazla soruna neden oluyor.

cevap

4

AS2 ve AS3 farklı çalışma zamanları kullanır (bayt kodu farklıdır), böylece AS3 çalışma zamanında herhangi bir AS2 bayt kodunu düzgün bir şekilde yürütemezsiniz. Eğer temelde AS3 uygulamasına AS2 kodu enjekte edilir, bu nedenle işe yaramayacak:/

+0

Cevabınız için teşekkürler. Dosyadan yüklendiğinde aynı AVM1 kodunun neden tamamen çalıştığını ve bayttan yüklendiğinde kısmen kırıldığını merak ediyorum. – alxx

+1

Bunun nedeni, 'load' yönteminin SWF'yi bir varlık olarak ele alması ve bunu bir AVM1 örneğinde çalıştırmayı bilmesi,' loadBytes' yönteminin AVM1 bayt kodunu AVM2 bayt kodunuza enjekte etmesi, sorunlara neden olmasıdır. – gthmb

+0

Belki bu doğru (sadece Adobe mühendisleri emin olabilir.) Her durumda, bu hata gibi görünüyor. Sorunu uzun bir süre önce AS2 SWF'yi (aynı işlevsellik farklı bir şekilde yaptı) yeniden çözerek çözdüm, doğrudan bir çözüm bulunamadı. – alxx

2

ActionScript 3.0 SWF'leri yüklerken yalnızca applicationDomain özelliğini kullanmalısınız LoaderContext belgelerine göre. Bu parametreyi düşürmeyi (veya null olarak ayarlamayı) deneyin ve ne olduğunu görün.

+2

Bu, tüm parametreler kombinasyonlarını denedim (null domain de). Çözüm yok gibi görünüyor - AVM1 ve AVM2 etkileşimi bu şekilde etiketlenmiş. – alxx

+0

bunun üzerine zarar vermemekle birlikte, AVM1 bayt kodunuzu AVM2 swf'e dönüştürmeniz yeterli değildir. – gthmb