Comunidad de diseño web y desarrollo en internet online

Dudas con foto panoramica

Citar            
MensajeEscrito el 12 Dic 2006 01:29 am
Que tal amigos de CL



Bueno les cuento mi duda.

Estoy haciendo una pagina web, que tiene una foto panoramica, ya la hice y los controles de ella se los estoy haciendo en Flash mX.

Cree un MC y botones con las siguientes acciones:

1. El autoplay lo hice con un motion tween
2.El stop pues detener el MC (foto.stop();)
3. El Zoom In con un codigo que me encontre en una pagina.
es este.
[i]incremento = 2;
function zoom(x,y,ancho,alto, aceleracion) {
mapa.onEnterFrame = function() {
this._x += (x-this._x)/aceleracion;
this._y += (y-this._y)/aceleracion;
this._width += (ancho-this._width)/aceleracion;
this._height+= (alto-this._height)/aceleracion;
if (Math.abs(x-this._x)<0.5 && Math.abs(y-this._y)<0.5 && Math.abs(ancho-this._width)<0.5 && Math.abs(alto-this._height)<0.5) {
this._x = x;
this._y = y;
this._width = ancho;
this._height = alto;
delete this.onEnterFrame;
}
};
};
onMouseDown =function(){
if (mapa.hitTest(_xmouse,_ymouse)){
Alto = incremento*mapa._height;
Ancho = incremento*mapa._width;
x = _xmouse-((_xmouse-mapa._x) * incremento);
y= _ymouse-((_ymouse-mapa._y) * incremento);
zoom(x,y,Ancho,Alto,3);
}
};[/i]

4. El zoom out con el mismo codigo pero en vez de multiplicar,dividir queda asi:

[i]on (press, release){
foto.stop();
incremento = 1.02;
function zoom(x,y,ancho,alto, aceleracion) {
foto.onEnterFrame = function() {
this._x += (x-this._x)/aceleracion;
this._y += (y-this._y)/aceleracion;
this._width += (ancho-this._width)/aceleracion;
this._height+= (alto-this._height)/aceleracion;
if (Math.abs(x-this._x)<0.5 && Math.abs(y-this._y)<0.5 && Math.abs(ancho-this._width)>0.5 && Math.abs(alto-this._height)>0.5) {
this._x = x;
this._y = y;
this._width = ancho;
this._height = alto;
delete this.onEnterFrame;
}
};
};
{
if (foto.hitTest(_xmouse,_ymouse)){
Alto = foto._height/incremento;
Ancho = foto._width/incremento;
x = _xmouse- ((_xmouse-foto._x) / incremento);
y= _ymouse- ((_ymouse-foto._y) / incremento);
zoom(x,y,Ancho,Alto,3);
zoom(x,y,Ancho,Alto,3);
}
};
}[/i]

5.Un boton que ocupe todo el escenario (obvio solamente en zona activa), para hacer un start drag

Pero me surgen los siguientes incovenientes.

Con los dos codigos anteriores no se como colocarle un limite al Zoom ya se in u out. La foto a medida que uno le da mas clicks crece mas y mas pero no tiene un limite, lo mismo sucede con el zoom out, empieza a hacerce mas y mas pequeña dejando el escenario vacio.

El otro es con el Drag, no se como controlarlo apropiadamente pues le doy valores y el MC con la foto se sale del stage o deja partes en blanco. Me gustaria que tuviera un limite tambien para que eso no sucediera.


En resumen:

1. Como hago para ponerle un limite al Zoom in y al Zoom Out?
2. Como controlo el drag para que el MC no se salga del stage?

No se si me explico.


De antemano Muchas GRACIAS!!!

Por Novato en el tema

27 de clabLevel



Genero:Masculino  

2003

msie
Citar            
MensajeEscrito el 12 Dic 2006 06:10 am
Si la foto es panorámica entonces ya se sale del stage de por sí, o, por lo menos me lo parece a mi. En caso contrario, en el startDrag puedes especificar las coordenadas tope a las que puede llegar el objeto arrastrado. Por otro lado, para el caso del escalado te aconsejo que emplees _xscale e _yscale, que le indican al objeto un escalado en porcentaje. Te ahorras programación e incrementas la sencillez de script.
Me tengo que ir, por lo que no tengo tiempo para una respuesta más larga, pero si tienes dudas...postea :lol:

Por Pachi

8 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 12 Dic 2006 12:49 pm
Lo del startDrag no lo entiendo muy bien, pero efectivamente se sale del stage, influye en algo?

Por el otro lado con _yscale y x_scale lo intente pero no me daba un "zoom" creible lo que hacia era deformar la foto, ademas de eso cada vez que le daba click se movia la foto un poco.

Gracias...pero sigo esperando una ayudita..:P

Por Novato en el tema

27 de clabLevel



Genero:Masculino  

2003

msie
Citar            
MensajeEscrito el 13 Dic 2006 08:06 am
Esta es la definición de la función startDrag en la ayuda de Flash

startDrag(target:Object, [lock:Boolean, left:Number, top:Number, right:Number, bottom:Number]) : Void

Como ves hay 5 parámetros extra para el startDrag que no se suelen utilizar generalmente. El primero es el movieclip a arrastrar, el segundo le indica a startDrag si debe o no centrar el objeto arrastrado en el puntero del ratón. El resto de parámetros indica el límite de movimiento del clip arrastrado. "left" para el límite izquierdo, "top" para el límite superior, "right" para el derecho y "bottom" para el límite inferior.

Por otro lado, las propiedades _xscale y _yscale están directamente relacionadas con la anchura y altura del clip. Así , si modificas la altura o anchura originales del clip se modifican _xscale e _yscale en consonancia. Es decir, realmente estás modificando _xscale e _yscale aunque no te des cuenta. Yo he hecho más de un zoom con _xscale e _yscale y van de escándalo. Muy, muy "reales". Quizá el "secreto" es el incremento que se le da a _xscale e _yscale, nada más.
La deformación de la imagen va a ser la misma si modificas _xscale e _yscale que si lo haces modificando la anchura y la altura del clip. Flash utiliza un escalado a pixel para imágenes, así que el efecto va a ser igualmente horrible a menos que uses formas.

Un saludo.

Por Pachi

8 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 02 Ene 2007 09:14 pm
Por favor una ayudita!!!!


Sobre todo para detener el zoom + y - pues no se como hacerlo. Ademas este codigo a diferencia del _yscale le agrega easing por eso es que lo quiero dejar asi.


Please se los agradezco

Por Novato en el tema

27 de clabLevel



Genero:Masculino  

2003

msie

 

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