Comunidad de diseño web y desarrollo en internet online

Siempre la misma URL, no selecciona segun el XML

Citar            
MensajeEscrito el 10 Oct 2011 02:29 pm
Estimados,
Desde hace bastante rato que estoy pegado en un dramon..... estoy remodelando un sitio heredado de otra empresa y no logro encontrar la pana para lo siguiente:
al hacer clic en la imagen grande, esta sea capaz de dirigirme a la URL asignada segun el XML, pero en la actualidad solo me trae el ultimo registro para todas las imagenes.... Aki les pego los code.. para ver si me pueden echar una manito please..... help me..!!

Código ActionScript :

import com.mosesSupposes.fuse.*;
ZigoEngine.simpleSetup(Shortcuts,Fuse,PennerEasing);

//variables xml
var node_arr:Array = new Array();
var xml:XML = new XML();
xml.ignoreWhite = true;

//variables scroll
var heightScroll:Number = 0;
var areaScroll:Number = btnMask._height;
var offset:Number;

var lastLoaded:MovieClip;

//Funcion de inicializacion
function init() {
   botones_mc.setMask(btnMask);
   cont_mask._visible = false;
}
init();

trazar("MC:Galeria, L 24, y el XML es"+_parent.rutaXML);
//Proceso de carga desde archivo XML

xml.onLoad = function(cargado) {
   if (cargado) {
      node_arr = this.firstChild.childNodes;
      var num:Number = node_arr.length;
      enlace = new Array (node_arr);
      for (var i:Number = 0; i<num; i++) {
         var item:MovieClip = botones_mc.attachMovie("button", "btn"+i, i);
         item.imagen = node_arr[i].firstChild.firstChild.nodeValue;
         enlace = node_arr[i].lastChild.previousSibling.firstChild.nodeValue;
         item.thumb = node_arr[i].lastChild.firstChild.nodeValue;
         item.th_height = Number(node_arr[i].lastChild.attributes.altura);
         trazar(i+" : "+heightScroll);
         item.orden = i;
         item.medio = item.imagen.substr(item.imagen.length-3, 3);
         item.image_mc.loadMovie(item.thumb);
         item.yTarget = heightScroll;
         item._y = 500+(i*30);
         item._yscale = item._xscale=Math.random()*200;
         item._alpha = Math.random()*100;
         var this_fu:Fuse = new Fuse();
         this_fu.push({target:item, y:item.yTarget, alpha:60, scale:100, ease:"easeInOutQuad", seconds:1+(i/10)});
         this_fu.start();
         heightScroll += item.th_height+3;
         item.hitArea = item.area;
         item.area._visible = false;
         item.activo = false;
         item._alpha = 60;
         item.onRollOver = sobreBtn;
         item.onRollOut = fueraBtn;
         item.onRelease = clickBtn;
         item.hitArea = item.image_mc;
      }
      displayMedia(botones_mc.btn0);
      botones_mc.btn0.activo = true;
      botones_mc.btn0._alpha = 100;
      offset = heightScroll-areaScroll;
   }
};

xml.load(_parent.rutaXML);

trazar(_xml);
//Eventos del apartado
function sobreBtn() {
   this._alpha = 100;
}
function fueraBtn() {
   if (this.activo == false) {
      this._alpha = 60;
   } else {
      this._alpha = 100;
   }
}
function clickBtn() {
   lastLoaded.activo = false;
   lastLoaded._alpha = 60;
   this.activo = true;
   container_mc._alpha = 0;
   displayMedia(this);
   lastLoaded = this;
   enlaceWeb();
}

//Funcionalidad para el clic sobre imagen de centro
function enlaceWeb(){
   if ( enlace != "" && enlace != undefined ){
      container_mc.onPress = function() {
         getURL("http://"+enlace,"_blank","POST");
         }
   }
}   

//Funcionalidad de disponer el medio en pantalla
function displayMedia(mc) {
   var preloader_mcl:MovieClipLoader = new MovieClipLoader();
   var oyendo:Object = new Object();
   preloader_mcl.addListener(oyendo);
   var this_fu:Fuse = new Fuse();
   container_mc._alpha = 0;
   this_fu.push({target:container_mc, scale:100, alpha:100, ease:"easeOutQuad", seconds:.5});
   this_fu.start();
   switch (mc.medio) {
      case "jpg" :
      case "gif" :
      case "png" :
         upVolume();
         oyendo.onLoadComplete = function() {
            container_mc.setMask(cont_mask);
            container_mc.alphaTo(100,.5);
            enlaceWeb();
         };
         preloader_mcl.loadClip(mc.imagen,container_mc);
         break;
   }
}

//Llama al inicio del site al clicar en el btn
volver_mc.onRelease = function() {
   easeOutSprite(this._parent);
   _parent.buttonsActive(true);
   upVolume();
};
function sobre() {
   this.gotoAndPlay("_over");
}
function fuera() {
   this.gotoAndPlay("_normal");
}
volver_mc.onRollOver = sobre;
volver_mc.onRollOut = fuera;

var bg_arr:Array = new Array();
var bg_obj:Object = new Object();
bg_obj.sourcefile = _parent.rutaBG;
bg_obj.target_mc = bgImg_mc;
bg_obj.dataname = "Inicio";
bg_arr[0] = bg_obj;
precarga(bg_arr,0,false,false);
stop();


Ahora les pego la estructura del archivo XML:

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<images>
    <pic>
        <image>public/imagenes/exteriores01.jpg</image>
      <url>www.google.cl</url>
      <thumbnail altura="20">public/thumbnails/exteriores003.jpg</thumbnail>
   </pic>
   
    <pic>
        <image>public/imagenes/sistemasproyeccion-cristal.png</image>   
      <url>www.gmail.com</url>
      <thumbnail altura="20">public/thumbnails/exteriores004.jpg</thumbnail>
   </pic> 
   <pic>
        <image>public/imagenes/sistemasproyeccion-tactil.png</image>
      <url>www.dualmultimedia.com</url>
      <thumbnail altura="20">public/thumbnails/exteriores005.jpg</thumbnail>
    </pic>
</images>


lo que hace la presentacion.
Despliega un menu lateral, al hacer clic sobre una opcion, esta muestra una imagen en el centro, la cual para el usuario debe ser capaz de direccionarlo a la URL especifica.-

Estaria muy agradecido de cualquier tipo de ayuda..... please..... :lol:

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2011 01:09 pm
La función clickBtn no sabe cual es el MC, y le pasa this a displayMedia con lo cual siempre lo llama con el mismo argumento incorrecto. Deberías meter todo lo de clickBtn dentro del loop, guardando toda la info que necesita (mc por ejemplo) en item, entonces si tiene sentido usar el this ... ¿puede ser que lo quisieras hacer mas prolijo y lo sacaste fuera?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2011 01:25 am
aah te entiendo, el problema que como es codigo heredado no sabia bien la estructura que estaban utilizando.-
De hecho agregue en la opcion item.onRelease aplique que fuera una función y que llamará al evento getURL item.enlace, el cual no se encontraba dentro del Array. Ahora funciona abre todas las url escritas en el XML pero desde el menú y no desde la foto en grande, la cual es desplegada por la function displayMedia (mc)....

Jorge, mira si te puedes fijar lo que te comento en esta ruta: dualmultimedia.com/~claudio, en el apartado de multimedia y luego en web.-

Saludos
Claudio Vergara

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2011 01:39 am
Te creo, es lo que dije, displayMedia recibe como argumento mc un this que no apunta a nada, la función tiene que estar metida en el loop ... bueno ... lo que ya dije

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2011 02:46 am
Jorge, lamentablemente pongo cualquiera de las dos functions , la clickBtn o displayMedia y no pasa nada, de echo, no me muestra la imagen... me puedes orientar como deberia ir... please...
Gracias por responder tan prontamente

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2011 12:33 pm
Ok, dentro del loop

Código ActionScript :

(...)
item.onRelease = function(){
   lastLoaded.activo = false; 
   lastLoaded._alpha = 60; 
   this.activo = true; 
   container_mc._alpha = 0; 
   displayMedia(this); 
   lastLoaded = this; 
   enlaceWeb(); 
} 
(...)


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 13 Oct 2011 02:41 pm
Jorge, muchas gracias por contestar, voy a revisar con ese codigo y te comento.

y nuevamente muchas gracias

saludos
Claudio

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Oct 2011 06:32 am
jorge, hice las pruebas con los comandos que me indicaste pero no resulto.
Añadi este codigo a la funcion del onRelease del boton, la cual permite abrir las URLs pero desde el menu y no del displayMedia

Código ActionScript :

function clickBtn() {
   lastLoaded.activo = false;
   lastLoaded._alpha = 60;
   this.activo = true;
   container_mc._alpha = 0;
   container_mc(this);
   displayMedia(this);
   lastLoaded = this;
   getURL("http://"+this.enlace,"_blank","POST");
}


Ahora mi pregunta, como puedo hacer para que esa opcion sea ejecutada desde el displayMedia como corresponde.-
Lo otro, llamo a la function clickBtn desde el container_mc, pero me aparece undefined, supongo porque en esa llamada la varible this.enlace pasa sin valores.¿ Como se la puedo pasar y haga lo mismo que el boton?

saludos cordiales
Claudio
Quedo atento a tus comentarios

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Oct 2011 01:47 pm
Ok, veo que no entiendes el problema ¿Que crees que significa this aquí (dentro del loop)?

Código ActionScript :

for (var i:Number = 0; i<num; i++) {
 ...
  item.onRelease = function(){ 
    ..
    displayMedia(this); 
    ..
  }
  ...
} 


¿Y que significa this en una función suelta?

Código ActionScript :

function clickBtn() { 
  ...
  displayMedia(this)
  ...
}


Medita sobre ello, en el primer caso le pasa una referencia a item y el parámetro que recibe displayMedia tiene sentido, en el segundo caso pasa una referencia al timeline, y displayMedia no puede hacer nada con ello

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 14 Oct 2011 07:53 pm
ok... en el primer caso, le esta pasando todos los valores que carga el item, y en el segundo caso, nada, porque no tiene ningun tipo de referencia de donde tomar los datos. ¿o me equivoco?

Ahora como quedaria, tendria que agregarle dentro del for algo asi:

Código ActionScript :

displayMedia = getURL("http://"+this.enlace,"_blank","POST"); 



Asi tomaria los datos que son cargados desde el item?

Claudio

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Oct 2011 08:05 pm
displayMedia es la función que carga la imagen ¿por que lo igualas a un getURL?
Para meterlo en el loop lo tienes que poner como te lo puse en mi ultimo POST

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 15 Oct 2011 06:45 am
Jorge, le he dado vueltas y vueltas y nada.... quede pegado en que me funcione....
Quede con este code, que funciona desde el menu...

Código ActionScript :

function clickBtn(){
   lastLoaded.activo = false;
   lastLoaded._alpha = 60;
   this.activo = true;
   container_mc._alpha = 0;
   container_mc(this);
   displayMedia(this);
   lastLoaded = this;
   getURL("http://"+this.enlace,"_blank","POST"); }

Pero no me da para que funcione desde el container_mc... No se en que parte de la funcion displayMedia tendria que ir el getURL y asi hacer funcionar el clic sobre la imagen..... :?

Código ActionScript :

function displayMedia(mc) {
   var preloader_mcl:MovieClipLoader = new MovieClipLoader();
   var oyendo:Object = new Object();
   preloader_mcl.addListener(oyendo);
   var this_fu:Fuse = new Fuse();
   container_mc._alpha = 0;
   this_fu.push({target:container_mc, scale:100, alpha:100, ease:"easeOutQuad", seconds:.5});
   this_fu.start();
   switch (mc.medio) {
      case "jpg" :
      case "gif" :
      case "png" :
         upVolume();
         oyendo.onLoadComplete = function() {
            container_mc.setMask(cont_mask);
            container_mc.alphaTo(100, .5);            
         };
         preloader_mcl.loadClip(mc.imagen,container_mc);
         break;
   }
}


Desde ya, te agradezco la ayuda en mi problema..... gracias

Claudio

Por crokermc

11 de clabLevel



 

firefox
Citar            
MensajeEscrito el 20 Oct 2011 02:04 am
Jorge,
Como le puedo pasar los datos al container_mc para que abra las URLs??

Desde ya, saludos cordiales
Claudio :?

Por crokermc

11 de clabLevel



 

firefox

 

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