Comunidad de diseño web y desarrollo en internet online

Problema con 'mouseX' 'mouseY' cuando hago zoom

Citar            
MensajeEscrito el 24 Ago 2013 12:37 am
Tengo un flash en el que tengo una imagen dentro de un MovieClip y con un boton agrego el Zoom y hasta ahi funciona bien, intente ponerle un "lapiz" con el cual dibujar, el lapiz lo creo en un Shape y lo meto dentro del MovieClip y si uso el "lapiz" y hago zoom queda muy bien, el problema es cuando el movie clip esta en "ZOOM"... e intento hacer lineas sobre el... hace las lineas... pero el puntero del mouse esta x un lado y las lineas van apareciendo por otro lado. Alguien me puede ayudar?, no se masomenos que modificar para que funcione bien.

Aqui les dejo el Codigo:

antes he estado utilizando un Arrastrar y soltar pero lo desactive para solo probar el "lapiz"

Hoja1 es un MovieClip(donde esta la imagen que agrando achico)
masc_libro, es la mascara del libro (hace q solo se vea esa parte cuando hago zoom)

Código ActionScript :

import flash.display.MovieClip;

stop();

MovieClip(root).btn_lumas.addEventListener(MouseEvent.CLICK,zomas);
MovieClip(root).btn_lumenos.addEventListener(MouseEvent.CLICK,zomas);


function Arras(e:MouseEvent){
   e.target.startDrag();   
}

function Solt(e:MouseEvent, Mc_fun:MovieClip){
   
      if(Mc_fun.y>5)
      {
         Mc_fun.y=2;
      }
      if(Mc_fun.y<-410)
      {
         Mc_fun.y=-400;
      }
      if(Mc_fun.x<-682)
      {
         Mc_fun.x=-682;
      }
      if(Mc_fun.x>5)
      {
         Mc_fun.x=2;
      }      
      e.target.stopDrag();
}

function zomas(evt:Event):void
{
   if(Hoja1.scaleX>=2) 
   {
      addEventListener(Event.ENTER_FRAME, peke);
      //Hoja1.removeEventListener(MouseEvent.MOUSE_DOWN,Arras);
      //Hoja1.removeEventListener(MouseEvent.MOUSE_UP,function(e:MouseEvent){Solt(e,Hoja1)});
      
      
   
   }
   else 
   {
      addEventListener(Event.ENTER_FRAME, gig);      
      //Hoja1.addEventListener(MouseEvent.MOUSE_DOWN,Arras);
      //Hoja1.addEventListener(MouseEvent.MOUSE_UP,function(e:MouseEvent){Solt(e,Hoja1)});
      

   }
} 

function gig(evento:Event):void
{      
   Hoja1.scaleX = Hoja1.scaleY += 0.06;      
   
   Hoja1.x=(masc_libro.width - Hoja1.width)/2;
   Hoja1.y=(masc_libro.height - Hoja1.height)/2;
      
   if(Hoja1.scaleX>=2) 
   {
      Hoja1.scaleX = Hoja1.scaleY = 2;         
      removeEventListener(Event.ENTER_FRAME, gig);   
      MovieClip(root).btn_lumas.visible=false;
      MovieClip(root).btn_lumenos.visible=true;
   }
} 

function peke(evento:Event):void
{

   Hoja1.scaleX = Hoja1.scaleY -= 0.06;
   Hoja1.x=(masc_libro.width - Hoja1.width)/2;
   Hoja1.y=(masc_libro.height - Hoja1.height)/2;
   
   if(Hoja1.scaleX<=1) 
   {
      
      Hoja1.scaleX = Hoja1.scaleY = 1;
      removeEventListener(Event.ENTER_FRAME, peke);
      MovieClip(root).btn_lumas.visible=true;
      MovieClip(root).btn_lumenos.visible=false;
   }
}

import flash.display.Shape;
import flash.events.MouseEvent;
import flash.display.MovieClip;

var dibujo: MovieClip= new MovieClip();
Hoja1.addChild(dibujo);

//Version una sola linea//
//dibujo.graphics.lineStyle(1,0x00000, 1);

//Con mas lineas//
var grosor:Number = 1;
var color:Number = 0x00000;
dibujo.graphics.lineStyle( grosor,color,1);

var dibujar:Boolean = false;

Hoja1.addEventListener(MouseEvent.MOUSE_DOWN, fDibujar );
Hoja1.addEventListener(MouseEvent.MOUSE_UP, fDibujar);
Hoja1.addEventListener(MouseEvent.MOUSE_MOVE, fDibujar);

function fDibujar(event:MouseEvent){
   if(event.type == 'mouseDown'){
      dibujo.graphics.moveTo(mouseX,mouseY);
      dibujar = true;
   }
   if(event.type == 'mouseUp'){
      dibujar = false;
   }
   if(event.type == 'mouseMove' && dibujar ){
      dibujo.graphics.lineTo(mouseX,mouseY);
   }
}

Por DJYovera

14 de clabLevel



 

Diseñador Web, Programador basico

chrome
Citar            
MensajeEscrito el 26 Ago 2013 11:18 am
La posición del Mouse siempre se toma en forma global, mientras que las coordenadas dentro de un MovieClip son locales. Para convertir de una a otra se usa MovieClip.localToGlobal y MovieClip.globalToLocal. Luego si el MC está escalado, la posición sobre la que se encuentra el Mouse también está escalada, es decir es el punto por la escala.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome

 

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