Comunidad de diseño web y desarrollo en internet online

ASIGNAR SWF DISTINTOS A LOS ITEMS DEL COMBOBOX CON XML

Ir a página Anterior  1, 2

Foros de discusión > Flash

Citar            
MensajeEscrito el 22 Ago 2008 02:49 pm
Mira todo el ejercicio que hicimos fue hacer un comboBox con datos y cuando cliques cada item te devolverá el nombre del SWF respectivo, ya lo que debes hacer es cargar este SWF en tu movie holder lo mismo por MovieClip.loadMovie que por movieClipLoader.loadClip, aquí tienes un post donde he posteado una función genérica que te lee un SWF en un MovieClip que le especifiques mediante MovieClipLoader:

http://www.cristalab.com/foros/t58925_ayuda-preloader-de-flash--problema-.html

El ejemplo sencillo con loadMovie debe ser algo como esto:

Código ActionScript :

listener.change = function(obj:Object) {  
            
   var nombre:String = obj.target.selectedItem.data;

   //---Mandar a leer el movie en el contenedor "holder" desde una carpeta llamada peliculas

   _root.holder.unLoadMovie();

   _root.holder.loadMovie("peliculas/" + nombre);
          
};

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 Ago 2008 08:43 pm
entonces Elcheninet esto puede ser el codigo final , y si es asi , pq no va?

var video:XML = new XML();
video.ignoreWhite = true;
video.onLoad = function(success:Boolean):Void {
if (success) {
var datos:Array = new Array();
var nodos:Array = this.firstChild.childNodes;
var total:Number = nodos.length;

for(var i:Number = 0; i < total; i++){
datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
}

var myCombo = _root.attachMovie("ComboBox", "micombo",_root.getNextHighestDepth());

myCombo.setSize(170, 22);
myCombo.move(100, 100);

myCombo.dataProvider = datos;

var listener:Object = new Object();

listener.change = function(obj:Object) {
var nombre:String = obj.target.selectedItem.data;
_root.holder.unloadMovie();
_root.holder.loadMovie("peliculas/" +nombre);
};
myCombo.addEventlistener("change", listener)
}
};
video.load("video.xml");

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 22 Ago 2008 10:03 pm
entre peliculas y +nombre va una coma . que falta elcheninet ,pq no va, como es entonces

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 12:15 pm
No entiendo nada del código, compáralo con los que he posteado a ver cual se puede leer y cual no, inserta el código entre etiquetas de actionScript:

Código :

[as]
//Aqui el código
[/as]

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Ago 2008 12:36 pm
perdona por el lio de codigo a ver ahora

<as

var video:XML = new XML();
video.ignoreWhite = true;
video.onLoad = function(success:Boolean):Void {
if (success) {
var datos:Array = new Array();
var nodos:Array = this.firstChild.childNodes;
var total:Number = nodos.length;

for(var i:Number = 0; i < total; i++){
datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
}

var myCombo = _root.attachMovie("ComboBox", "micombo",_root.getNextHighestDepth());

myCombo.setSize(170, 22);
myCombo.move(100, 100);

myCombo.dataProvider = datos;




function genericLoad(path:String, mc:MovieClip):Void {

mc.unloadMovie();

var loader:MovieClipLoader = new MovieClipLoader();

var listener:Object = new Object();

var barra:MovieClip;

//---Cuando comienze la carga situar la barra

listener.onLoadStart = function(target:MovieClip):Void {

barra = _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());

barra._y = (Stage.height - barra._height) / 2;

barra._x = (Stage.width - barra._width) / 2;

mc.stop();

};

//---Animar la barra

listener.onLoadProgress = function(target:MovieClip, loadedBytes:Number, totalBytes:Number):Void {

var pCent:Number;

pCent = (loadedBytes * 100) / totalBytes;

barra._xscale = pCent;

};

//---Cuando termine la carga

listener.onLoadInit = function(target:MovieClip):Void {

barra.removeMovieClip();

target.play();

};

mc.loader.addListener(listener);

mc.loader.loadClip(path, mc);

}
trace("puedes mandar a abrir el movie" +obj.target.selectedItem.data);
};
myCombo.addEventlistener("change", listener)
}
;


video.load("video.xml");



</as

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 12:38 pm

Código ActionScript :



var video:XML = new XML();
video.ignoreWhite = true;
video.onLoad = function(success:Boolean):Void {
   if (success) {
      var datos:Array = new Array();
      var nodos:Array = this.firstChild.childNodes;
      var total:Number = nodos.length;
      
      for(var i:Number = 0; i < total; i++){
         datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
      }
      
      var myCombo = _root.attachMovie("ComboBox", "micombo",_root.getNextHighestDepth());
      
      myCombo.setSize(170, 22);
      myCombo.move(100, 100);
      
      myCombo.dataProvider = datos;
      
      
       
       
          function genericLoad(path:String, mc:MovieClip):Void { 
  
    mc.unloadMovie(); 
     
    var loader:MovieClipLoader = new MovieClipLoader(); 
  
    var listener:Object = new Object(); 
     
    var barra:MovieClip; 
     
    //---Cuando comienze la carga situar la barra 
     
    listener.onLoadStart = function(target:MovieClip):Void { 
  
       barra = _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth()); 
  
       barra._y = (Stage.height - barra._height) / 2; 
  
       barra._x = (Stage.width - barra._width) / 2; 
        
       mc.stop(); 
  
    }; 
     
    //---Animar la barra 
  
    listener.onLoadProgress = function(target:MovieClip, loadedBytes:Number, totalBytes:Number):Void { 
  
       var pCent:Number; 
  
       pCent = (loadedBytes * 100) / totalBytes; 
  
       barra._xscale = pCent; 
  
    }; 
  
    //---Cuando termine la carga 
  
    listener.onLoadInit = function(target:MovieClip):Void { 
        
       barra.removeMovieClip(); 
  
       target.play(); 
  
    }; 
  
  mc.loader.addListener(listener); 
     
    mc.loader.loadClip(path, mc); 
  
 }  
          trace("puedes mandar a abrir el movie" +obj.target.selectedItem.data);
       };
       myCombo.addEventlistener("change", listener)
   }
;
      
      
      video.load("video.xml");
      


Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 12:41 pm
COMO debo modificar tu codigo para que cargue los data en el clip? no he sido capaz, gracias por molestarte tanto

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 03:52 pm
Tienes la función de genericLoad dentro de la función de onload del XML y nunca llamas a la función con los parámetros adecueados. Suponiendo que tus SWF estén en una carpeta llamada "peliculas" junto a tu SWF principal y que tienes un MovieClip en la escena con nombre de instancia "holder" debes hacer algo como esto:

Código ActionScript :

//---Declarar el objeto XML

var video:XML = new XML();

video.ignoreWhite = true;

video.onLoad = function(success:Boolean):Void  {

   if (success) {

      var datos:Array = new Array();
      var nodos:Array = this.firstChild.childNodes;
      var total:Number = nodos.length;
      
      for(var i:Number = 0; i < total; i++){
         
         datos.push({label:nodos[i].attributes.nombre, data:nodos[i].attributes.peli});
         
      }
      
      //---Situar el combo en el escenario
      var myCombo = _root.attachMovie("ComboBox", "micombo", _root.getNextHighestDepth());
      
      //---Darle las medidas y coordenadas deseadas
      
      myCombo.setSize(170, 22);
      myCombo.move(100, 100);
      
      myCombo.dataProvider = datos;
      
      //---Darle acciones al comboBox
      
      var listener:Object = new Object();
      
      listener.change = function(obj:Object) {
         
         var nombre:String = obj.target.selectedItem.data;
         
         _root.holder.unLoadMovie();
         
         genericLoad("peliculas/" + nombre, _root.holder);
       
      };
      
      myCombo.addEventListener("change", listener)
      
   }
};
video.load("video.xml");

//---Función de cargar un clip de video en un contenedor

function genericLoad(path:String, mc:MovieClip):Void {

   mc.unloadMovie();
   
   var loader:MovieClipLoader = new MovieClipLoader();

   var listener:Object = new Object();
   
   var barra:MovieClip;
   
   //---Cuando comienze la carga situar la barra
   
   listener.onLoadStart = function(target:MovieClip):Void {

      barra = _root.attachMovie("barra", "barra_mc", _root.getNextHighestDepth());

      barra._y = (Stage.height - barra._height) / 2;

      barra._x = (Stage.width - barra._width) / 2;
      
      mc.stop();

   };
   
   //---Animar la barra

   listener.onLoadProgress = function(target:MovieClip, loadedBytes:Number, totalBytes:Number):Void {

      var pCent:Number;

      pCent = (loadedBytes * 100) / totalBytes;

      barra._xscale = pCent;

   };

   //---Cuando termine la carga

   listener.onLoadInit = function(target:MovieClip):Void {
      
      barra.removeMovieClip();

      target.play();

   };

   loader.addListener(listener);
   
   loader.loadClip(path, mc);

}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Ago 2008 04:00 pm
Recuerda que esta función asume que hay un clip en la biblioteca linkeado para AS como "barra", que es el clip que funcionará como progressBar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Ago 2008 04:17 pm
estas en todas , gracias , tenias razón me habia olvidado.pero y entonces si holder es el nombre del clip puedes poner como quedaria para conseguirlo. no lo consigo

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 04:27 pm
vale, tengo el clip con el identificador barra, debo ponerle algo en clase?

Por klandestino

30 de clabLevel



Genero:Masculino  

lago de garda

firefox
Citar            
MensajeEscrito el 25 Ago 2008 04:48 pm

klandestino escribió:

estas en todas , gracias , tenias razón me habia olvidado.pero y entonces si holder es el nombre del clip puedes poner como quedaria para conseguirlo. no lo consigo


Te puse el uso de la función pasándole como parámetro el clip holder que se encuentra en la raiz:

Código ActionScript :

genericLoad("peliculas/" + nombre, _root.holder);


klandestino escribió:

vale, tengo el clip con el identificador barra, debo ponerle algo en clase?


En clase no le pongas nada, esto sólo se implementa en AS3.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Ir a página Anterior  1, 2
Foros de discusión > Flash

 

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