ActionScript - ZOOM + ARRASTRE. Necesito ayuda

 
Vista:

ZOOM + ARRASTRE. Necesito ayuda

Publicado por Karlos (1 intervención) el 15/10/2005 14:17:21
Quiero hacer por medio de dos botones zoom (uno de aumento y otro de disminución) que un objeto o imagen dentro de un Clip de película responda a estas acciones y a su vez que se pueda arrastrar siempre por una misma zona o área del escenario de proporciones X e Y, respetando unas restricciones en el arrastre a este área las cuales tendrán que adaptarse o modificarse cuando el objeto del Clip de película cambie su escala al haber hecho un zoom.

Podeis dejarme las respuestas en esta dirección:
[email protected]

Un saludo a todos
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Alejandro

Control de zoom y arrastre de objetos en un Clip de película

Publicado por Alejandro (369 intervenciones) el 21/06/2023 22:33:54
Para lograr el comportamiento deseado en ActionScript, puedes seguir los siguientes pasos:

1. Crea un nuevo archivo de ActionScript en tu entorno de desarrollo.

2. Agrega un Clip de película al escenario y coloca el objeto o imagen dentro de este Clip de película.

3. Crea dos botones en el escenario, uno para aumentar el zoom y otro para disminuirlo. Asigna a cada botón un nombre de instancia único, como "btnZoomIn" y "btnZoomOut", respectivamente.

4. Abre el panel de acciones de tu entorno de desarrollo y vincula el código ActionScript al fotograma donde se encuentran los elementos.

5. Define variables para almacenar la escala actual del objeto y las restricciones del área de arrastre:

1
2
3
4
5
var scaleFactor:Number = 1; // Escala inicial del objeto
var minX:Number = 0; // Límite izquierdo del área de arrastre
var maxX:Number = 500; // Límite derecho del área de arrastre
var minY:Number = 0; // Límite superior del área de arrastre
var maxY:Number = 300; // Límite inferior del área de arrastre

6. Agrega los controladores de eventos para los botones de zoom:

1
2
btnZoomIn.addEventListener(MouseEvent.CLICK, zoomIn);
btnZoomOut.addEventListener(MouseEvent.CLICK, zoomOut);

7. Implementa las funciones `zoomIn` y `zoomOut` para ajustar la escala del objeto y actualizar las restricciones del área de arrastre:

1
2
3
4
5
6
7
8
9
function zoomIn(event:MouseEvent):void {
  scaleFactor *= 1.2; // Aumenta la escala en un 20%
  actualizarRestricciones();
}
 
function zoomOut(event:MouseEvent):void {
  scaleFactor /= 1.2; // Disminuye la escala en un 20%
  actualizarRestricciones();
}

8. Crea una función llamada `actualizarRestricciones` para ajustar las restricciones del área de arrastre según la escala actual:

1
2
3
4
5
6
7
8
9
10
function actualizarRestricciones():void {
  var scaledWidth:Number = obj.width * scaleFactor;
  var scaledHeight:Number = obj.height * scaleFactor;
 
  // Ajusta los límites del área de arrastre según la escala
  minX = stage.stageWidth / 2 - scaledWidth / 2;
  maxX = stage.stageWidth / 2 + scaledWidth / 2;
  minY = stage.stageHeight / 2 - scaledHeight / 2;
  maxY = stage.stageHeight / 2 + scaledHeight / 2;
}

9. Agrega la funcionalidad de arrastre para el objeto dentro del Clip de película:

1
2
3
4
5
6
7
8
9
10
obj.addEventListener(MouseEvent.MOUSE_DOWN, comenzarArrastre);
stage.addEventListener(MouseEvent.MOUSE_UP, detenerArrastre);
 
function comenzarArrastre(event:MouseEvent):void {
  obj.startDrag(false, new Rectangle(minX, minY, maxX - minX, maxY - minY));
}
 
function detenerArrastre(event:MouseEvent):void {
  obj.stopDrag();
}

10. ¡Eso es todo! Ahora, cuando hagas clic en los botones de zoom, el objeto dentro del Clip de película cambiará de escala y las restricciones de arrastre se ajustarán en consecuencia. Además, podrás arrastrar el objeto dentro del área definida.
Ten en cuenta que este código es solo un ejemplo básico y puede requerir adaptaciones según tus necesidades específicas. Asegúrate de tener los elementos correctos en el escenario y de ajustar las restricciones y las proporciones X e Y según tus preferencias.

¡Espero que esto te sea útil!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar