2009-03-05 8 views
1

SWFLoader kullanarak bir esnek uygulamanın içine gömmek istediğim bir flash uygulamasına (saf AS, Flex çerçevesi yok) sahibim.Bir Flex uygulamasında birden çok flaş bileşen örneği gömülmesi

Bir örneği gömmek iyi çalışır. Ancak, birden fazla örneği (her biri ayrı bir SwfLoader ile) gömmeye çalıştığımda, birden çok örneğin sınıf tanımları arasındaki çatışmaların neden olduğu gibi görünen çok garip bir davranış vardır. Bu flash uygulaması çok sayıda singleton sınıfıyla yazılmıştır, bu yüzden tahminimce bu singletonlar birbirini geçersiz kılıyor ve garip davranışlara sebep oluyor.

Flaş uygulamasını bir çocuk uygulama alanı içine yüklemeyi denedim, ancak bu da çok yardımcı olmadı. Bu problemle karşılaştı mı?

+0

İki farklı uygulama ile deneyebilir misiniz? Bu şekilde bekarların suçlanıp suçlanmayacağından emin olabilir miyiz? – dirkgently

+0

İki uygulama alt uygulama etki alanlarında yüklendiğinde, tekil sayılar çakışmaz. Sadece aynı uygulama alanına yüklendiklerinde çatışıyorlar. Hatayı bulmak için daha fazla araştırmama izin verin. – marketer

cevap

2

Ad çakışmasını önlemek için SWF'yi kendi uygulama etki alanına (çocuk değil) yüklemek istersiniz. o tanımları üzerine yazmaz olarak,

var swfLoader:Loader = new Loader(); 
var loaderContext:LoaderContext = new LoaderContext(); 

// child SWF adds its unique definitions to 
// parent SWF; both SWFs share the same domain 
// child SWFs definitions do not overwrite parents 
loaderContext.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain); 

// child SWF uses parent domain definitions 
// if defined there, otherwise its own 
loaderContext.applicationDomain = ApplicationDomain.currentDomain; 

// child SWF domain is completely separate and 
// each SWF uses its own definitions 
loaderContext.applicationDomain = new ApplicationDomain(); 

// Load the swf file 
swfLoader.load(new URLRequest("file.swf"), loaderContext); 
Ben ilk yöntemi kullanarak öneririm

:

uygulama alanlarının üç tipi vardır.