Comunidad de diseño web y desarrollo en internet online

Manipular el Root desde un SWF externo

Citar            
MensajeEscrito el 20 Oct 2013 03:48 am
Buenas,

Estoy intentando llamar a una funcion que esta en el root desde un swf que he cargado, sin embargo no tengo exito.

En el root tengo el siguiente codigo:

Código ActionScript :

var holder2:Loader = new Loader();
holder2.load(new URLRequest("Ventas/Mas Vendidos.swf"));
addChild(holder2);

function muestra()
{
   trace("funciona!");
}


Y en el SWF tengo el siguiente codigo:

Código ActionScript :

var swf1Main_mc:MovieClip;  
this.addEventListener(Event.ADDED_TO_STAGE, initF);

function initF(e:Event):void
{
    swf1Main_mc = MovieClip(this.root);
    swf1Main_mc.muestra();
}


Si alguien me ayuda a encontrar mi error se lo agradeceria mucho.

Por chochito_alegre

51 de clabLevel



Genero:Masculino  

Lima - Perú

firefox
Citar            
MensajeEscrito el 20 Nov 2013 05:32 pm
Hola chochito guardate esta clase bien guardadita en un archivo .as y llamalo Global.as

Código ActionScript :

package {
      public class Global {
    
            private var _data:Object;
            private static var _self:Global;

            public function Global() {
                _data = new Object();
            }

            public static function getInstance():Global {
                if(_self == null) {
                    _self = new Global();
                }
                return _self;
            }

            public function setValue(key:String, value:*):void {
                _data[key] = value;
            }

            public function getValue(key:String):* {
                return _data[key];
            }
    }
}


Despues desde tu swf principal importa dicha clase

Código ActionScript :

import Global;
var global:Global = Global.getInstance();

// y para diponer de cualquier metodo o variable desde cualquier lugar simplemente tienes que hacer lo siguiente

global.setValue("muestra", muestra);

var holder2:Loader = new Loader();
holder2.load(new URLRequest("Ventas/Mas Vendidos.swf"));
addChild(holder2);

function muestra(){
   trace("funciona!");
}


Ahora en el segundo swf pones lo siguiente

Código ActionScript :

//Importas nuevamente la clase
import Global;
var global:Global = Global.getInstance();

//Recuperas la funcion
var muestra:Object = global.getValue("muestra");

var swf1Main_mc:MovieClip;  
this.addEventListener(Event.ADDED_TO_STAGE, initF);

function initF(e:Event):void
{
    swf1Main_mc = MovieClip(this.root);
    swf1Main_mc.muestra();
   //tambien podrias ejecutarlo directamente asi sin crear una variable object
   //global.getValue("muestra")();

}



Puedes asignar o acceder a cualquier funcion o variable como global desde cualquier sitio y en cualquier momento.

Espero que te sirva saludos.

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie
Citar            
MensajeEscrito el 20 Nov 2013 05:38 pm
Perdona que escribiendo con las prisas me dejado un fallo

el segundo swf te quedaria asi

Código ActionScript :

//Importas nuevamente la clase
import Global;
var global:Global = Global.getInstance();

//Recuperas la funcion
var muestra:Object = global.getValue("muestra");


this.addEventListener(Event.ADDED_TO_STAGE, initF);

function initF(e:Event):void{
     muestra();
   //tambien podrias ejecutarlo directamente asi sin crear una variable de tipo object
   //global.getValue("muestra")();

}

Por giskard

110 de clabLevel



Genero:Masculino  

Programador y diseñador web

msie

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.