Pergunta

Quero carregar um SWF em um aplicativo Flex 4 para usar suas classes.

var ldr:Loader=new Loader();
ldr.load(new URLRequest("file://path/to/fileswf"));
ldr.contentLoaderInfo.addEventListener(Event.INIT, loaded);
function loaded(evt:Event):void { addChild(ldr); }

Eu recebo o erro:

Erro: addChild () não está disponível nesta classe. Em vez disso, use addElement () ou modifique a pele, se você tiver um.
em Spark.comPONENTS.SupportClasses :: SkinnableComponent/addChild () [e: dev gumbo_beta2 Frameworks Projects Spark Src Spark Components SupportClasses SkinnableComponent.as: 966
em Main/Private: init/loadd () [C: Documentos e Configurações Ufk Adobe Flash Builder Beta 2 XPogames-Toolkit-Test Src Main.mxml: 22

Se eu mudar addChild() para addElement(), Eu recebo o seguinte erro de compilação:

1067: Coerção implícita de um valor do tipo flash.Isplay: carregador para um tipo não relacionado mx.core: ivisualElement. Main.mxml Path/Dir Line 22 Problema flexível

Alguma idéia de como resolver esse problema?

Foi útil?

Solução 2

Bem, na versão completa do Flash Builder 4, não há nada.

A melhor abordagem para resolver o problema seria converter cada classe necessária em um componente flexível e usá -lo no seu aplicativo Flex:

  1. Baixe e instale o Flex Component Kithttp://www.adobe.com/cfusion/entitlement/index.cfm?e=flex_skins

  2. Crie um clipe de filme

  3. converter em componente flexível

  4. Adicione as funções relevantes a esta classe

Um esqueleto para uma aula que é anexada a um movimento que está prestes a ser convertido em um componente flexível:

package {
import mx.flash.UIMovieClip;
import flash.text.TextField;
import flash.events.Event;
import flash.events.MouseEvent;
public dynamic class challenge_screen extends UIMovieClip {

    public function challenge_screen() {
        super();
    }
}
} 

Outras dicas

Crie outro contêiner para colocar o DisplayObject em:

// container ( IVisualElement ) for DisplayObjects
var container:UIComponent = new UIComponent();
addElement( container );

// displayObject goes to container
var displayO:Sprite = new Sprite();
container.addChild( displayO );
private var _loader:SWFLoader = new SWFLoader();
private var _uicomponent:UIComponent = new UIComponent();
private function swfLoaded(event:Event):void 
{
Alert.show("inside swf Loaded");
var content:DisplayObject =_loader.content;
_uicomponent.addChild(content);
} 
public function loadSWF () : void 
{   

_loader.addEventListener(Event.INIT, swfLoaded);
_loader.load("http://intelliveysoft.com:5080/myelearn/Admin.swf"); 
addElement(_uicomponent);
}

Tente isso. Vai funcionar

this.rawchildren.addchild (ldr) deve funcionar

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top