Comunidad de diseño web y desarrollo en internet online

Hacer zoom en una porción

Citar            
MensajeEscrito el 02 Sep 2009 09:27 pm
Hola, estoy haciendo un flipbook que cada pagina es un swf, hasta aquí todo bien.

Mi problema surge ya que los swf que cago en realidad es siempre el mismo pero con distintos parámetros, esto funciona bien también. Este swf caga una imagen de fondo, esta seria la pagina del libro, y unos parámetros más para resaltar varias zonas sobre el MC donde se cargo la imagen. Pongo el código así se entiende mejor.

Código ActionScript :

Hoja = params.img_hoja;//path a la imagen
if (Hoja != undefined) {
   holder_mc.loadMovie(Hoja);
}
this.onEnterFrame = checkLoad;

function checkLoad() {
   var p = holder_mc.getBytesLoaded()/holder_mc.getBytesTotal();
   if (isNaN(p)) {
      p = 0;
   }
   preloader_mc.bar_mc._xscale = p*100;
   if (p>=1) {
      preloader_mc._visible = false;
      delete this.onEnterFrame;
      CargoBox();
   }
}

function CargoBox(){   
   yo = pageNumber;
       //el array de parametros es algo asi (15|200|100|100@15|10|100|100@40|400|400|90@400|300|100|50)
   var box:Array = params.b.split("@");
   
   for (var i = 0; i<box.length; i++) {
      var tmp:Array = box[i].split("|");
      box[i] = new Array(2);
      box[i]['x'] = tmp[0];
      box[i]['y'] = tmp[1];
      box[i]['x1'] = tmp[2];
      box[i]['y1'] = tmp[3];
      
      attachMovie("boton", "boton"+i, this.getNextHighestDepth());
      eval("boton"+i).cmd._x=box[i]['x'];
      eval("boton"+i).cmd._y=box[i]['y'];
      eval("boton"+i).cmd._width=box[i]['x1'];
      eval("boton"+i).cmd._height=box[i]['y1'];
      
      eval("boton"+i).cmd.onRelease = btnOnRelease;
      eval("boton"+i).cmd.onRollOver = btnOnRollOver;
      eval("boton"+i).cmd.onRollOut = btnOnRollOut;
   }
}


Primero aclaro un poco lo del array, en este caso envió los parámetros para tres zonas (x|y|w|x@x|y|w|h@x|y|w|h) coloco un MC que contiene un botón en los lugares y de los tamaños especificados. Hasta acá no tengo problema.

El tema es necesito que al hacer clic sobre cada botón se abra como un popup (entro de la película) con esa porcien de la imagen que esta debajo.

Espero este claro y alguien me pueda orientar a como hacerlo. Desde ya muchas gracias

Por biffly

11 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 03 Sep 2009 02:41 pm
Bueno, gracias a todos los que lo intentaron :? , pero conseguí solucionarlo con "BitmapData" no es tan complicado, pero costo encontrar info en la web para AS2.

les dejo el código para cuando hacemos click sobre algún área activa.

Código ActionScript :

function btnOnRelease() {
   var x:Number = this._x;
   var y:Number = this._y;
   var w:Number = this._width;
   var h:Number = this._height;
   var scale:Number = this.escala;
   trace("copiando "+x+"|"+y+"|"+w+"|"+h+"|"+scale);
   mcBMP = new BitmapData(holder_mc._width*scale, holder_mc._height*scale, false, 0x00FFFFFF);
   m=holder_mc.transform.matrix;
   m.scale(scale, scale);
   mcBMP.draw(holder_mc, m);
   mcBMP2 = new BitmapData(w*scale, h*scale, false, 0x00FFFFFF);
   mcBMP2.copyPixels(mcBMP, new Rectangle(x*scale, y*scale, w*scale, h*scale), new Point(0, 0));
   _root.copia.display.attachBitmap(mcBMP2, this.getNextHighestDepth());
   _root.copia._width=w*scale;
   _root.copia._height=h*scale;
   _root.copia.display._width=w*scale;
   _root.copia.display._height=h*scale;
   _root.copia.sombra._width=w*scale;
   _root.copia.sombra._height=h*scale;
   sH = Stage.height/2;
   sW = Stage.width/2;
   iH = _root.copia._height/2;
   iW = _root.copia._width/2;
   _root.copia._y = sH - iH;
   _root.copia._x = sW - iW; 
   _root.copia._alpha=100;
}


cuando recojo el los parámetros del array agregue uno mas, escala. La función para cargar los datos y crear las áreas activas quedaría así:

Código ActionScript :

function CargoBox(){   
   yo = pageNumber;
   var box:Array = params.b.split("@");
   
   for (var i = 0; i<box.length; i++) {
      var tmp:Array = box[i].split("|");
      box[i] = new Array(2);
      box[i]['x'] = tmp[0];
      box[i]['y'] = tmp[1];
      box[i]['x1'] = tmp[2];
      box[i]['y1'] = tmp[3];
      box[i]['escala'] = tmp[4];
      
      attachMovie("boton", "boton"+i, this.getNextHighestDepth());
      eval("boton"+i).cmd._x=box[i]['x'];
      eval("boton"+i).cmd._y=box[i]['y'];
      eval("boton"+i).cmd._width=box[i]['x1'];
      eval("boton"+i).cmd._height=box[i]['y1'];
      eval("boton"+i).cmd.escala=box[i]['escala'];
      
      eval("boton"+i).cmd.onRelease = btnOnRelease;
      eval("boton"+i).cmd.onRollOver = btnOnRollOver;
      eval("boton"+i).cmd.onRollOut = btnOnRollOut;
   }
}


A grandes rasgos queda como yo quiero, solo falta agregar algunos efectos y listo :lol:

Espero que a alguien le sea útil.

Saludos a todos.

Por biffly

11 de clabLevel



Genero:Masculino  

firefox

 

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