Comunidad de diseño web y desarrollo en internet online

pincel que dibuja 4 lineas al tiempo

Citar            
MensajeEscrito el 27 Feb 2012 11:12 pm
buen dia,
el siguiente codigo lo construir para una aplicacion que estoy haciendo
la cuestio es que me funciona, pero se pone muy lento despues de que dibujo el tercer grupo de lineas...
aqui el codigo,
que creen que debo hacer para mejorar el rendimieno

Código ActionScript :

function cursorNuevo(event:MouseEvent):void {
      if (contenedor.hitTestPoint(mouseX,mouseY,true)) {
         Mouse.hide();
         palita1.visible=true;
         palita1.alpha=1;
         palita1.x=mouseX;
         palita1.y=mouseY;


         var grosor=3;
         var color=0xAE9883;
         var linea : Shape = new Shape();
         var linea2 : Shape = new Shape();
         var linea3 : Shape = new Shape();
         var linea4 : Shape = new Shape();
         linea.graphics.lineStyle(grosor,color,0.4);
         linea2.graphics.lineStyle(grosor,color,0.4);
         linea3.graphics.lineStyle(grosor,color,0.4);
         linea4.graphics.lineStyle(grosor,color,0.4);
            
         contenedor.objetos.addChild(linea);
         contenedor.objetos.addChild(linea2);
         contenedor.objetos.addChild(linea3);
         contenedor.objetos.addChild(linea4);

         var dibujando:Boolean=false;

         addChild(palita1);
         

         palita1.addEventListener(MouseEvent.MOUSE_DOWN , onDibujando);
         palita1.addEventListener(MouseEvent.MOUSE_UP , onDibujando);
         palita1.addEventListener(MouseEvent.MOUSE_MOVE , onDibujando);

         function onDibujando(evento:Event):void {
            if (evento.type=="mouseDown") {
               dibujando=true;
               linea.graphics.moveTo(contenedor.objetos.mouseX , contenedor.objetos.mouseY);
               linea2.graphics.moveTo(contenedor.objetos.mouseX+5 , contenedor.objetos.mouseY+5);
               linea3.graphics.moveTo(contenedor.objetos.mouseX+10 , contenedor.objetos.mouseY+10);
               linea4.graphics.moveTo(contenedor.objetos.mouseX+15 , contenedor.objetos.mouseY+15);
            }
            if (evento.type=="mouseUp") {
               dibujando=false;
            }
            if (evento.type=="mouseMove"&&dibujando) {

               linea.graphics.lineTo(contenedor.objetos.mouseX , contenedor.objetos.mouseY);
               linea2.graphics.lineTo(contenedor.objetos.mouseX+5 , contenedor.objetos.mouseY+5);
               linea3.graphics.lineTo(contenedor.objetos.mouseX+10 , contenedor.objetos.mouseY+10);
               linea4.graphics.lineTo(contenedor.objetos.mouseX+15, contenedor.objetos.mouseY+15);
            }

         }


      } 
else {
         palita1.visible=false;
         Mouse.show();
         
      }

   }


se que el codigo esta un poco largo, pero agradezco su respuestas...

Por hce

3 de clabLevel



Genero:Masculino  

Diseñador web

chrome
Citar            
MensajeEscrito el 28 Feb 2012 12:19 am
Mmm ... me parece que está mal formateado porque tienes una función metida dentro de otra. Quizás si le das formato legible (lo puedes copiar dentro del editor de Flash y le das al botón formato) podamos entenderla mejor

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Feb 2012 01:46 pm

Código ActionScript :

function cursorNuevo(event:MouseEvent):void {
   //cambio el pntero del mouse por un movieclip
   if (contenedor.hitTestPoint(mouseX,mouseY,true)) {
      Mouse.hide();
      palita1.visible=true;
      palita1.alpha=1;
      palita1.x=mouseX;
      palita1.y=mouseY;

      //variables de herramientas para pintar
      var grosor=3;
      var color=0xAE9883;
      var linea : Shape = new Shape();
      var linea2 : Shape = new Shape();
      var linea3 : Shape = new Shape();
      var linea4 : Shape = new Shape();
      linea.graphics.lineStyle(grosor,color,0.4);
      linea2.graphics.lineStyle(grosor,color,0.4);
      linea3.graphics.lineStyle(grosor,color,0.4);
      linea4.graphics.lineStyle(grosor,color,0.4);
      
      //el lapiz solo va pintar dentro de un tablero que se llama contenedor
      contenedor.objetos.addChild(linea);
      contenedor.objetos.addChild(linea2);
      contenedor.objetos.addChild(linea3);
      contenedor.objetos.addChild(linea4);
      
      //creo una variable boleana para decir que pinte o no
      var dibujando:Boolean=false;
      
      //agrego el movie clip que va a pintar al escenario
      addChild(palita1);
      
      //eventos para pintar
      palita1.addEventListener(MouseEvent.MOUSE_DOWN , onDibujando);
      palita1.addEventListener(MouseEvent.MOUSE_UP , onDibujando);
      palita1.addEventListener(MouseEvent.MOUSE_MOVE , onDibujando);
      
      //eventos para que cuando pinte el lapiz suene
      palita1.addEventListener(MouseEvent.CLICK , playsonido);
      palita1.addEventListener(MouseEvent.MOUSE_UP , sonidoSTOP);
      
      

      //funcion para que suene.. las variables estan inicializadas en otra parte del codigo que aqui no está
      function playsonido(evento:MouseEvent):void {
         canal=sonido.play();
      }
      function sonidoSTOP(evento:MouseEvent):void{
      canal.stop();
      }

      //fncion que dibuja 
      function onDibujando(evento:Event):void {
         if (evento.type=="mouseDown") {
            dibujando=true;
            linea.graphics.moveTo(contenedor.objetos.mouseX , contenedor.objetos.mouseY);
            linea2.graphics.moveTo(contenedor.objetos.mouseX+5 , contenedor.objetos.mouseY+5);
            linea3.graphics.moveTo(contenedor.objetos.mouseX+10 , contenedor.objetos.mouseY+10);
            linea4.graphics.moveTo(contenedor.objetos.mouseX+15 , contenedor.objetos.mouseY+15);
         }
         if (evento.type=="mouseUp") {
            dibujando=false;
            
         }
         if (evento.type=="mouseMove"&&dibujando) {

            linea.graphics.lineTo(contenedor.objetos.mouseX , contenedor.objetos.mouseY);
            linea2.graphics.lineTo(contenedor.objetos.mouseX+5 , contenedor.objetos.mouseY+5);
            linea3.graphics.lineTo(contenedor.objetos.mouseX+10 , contenedor.objetos.mouseY+10);
            linea4.graphics.lineTo(contenedor.objetos.mouseX+15, contenedor.objetos.mouseY+15);
         }

      }


   } 
   // aqui para devolver el mouse a su estado natural
   else {
      palita1.visible=false;
      Mouse.show();
      
   }

}



aqui vuelvo y pego el codigo mas ordenado y comentado...
agradezco sus amables respuestas

Por hce

3 de clabLevel



Genero:Masculino  

Diseñador web

chrome
Citar            
MensajeEscrito el 28 Feb 2012 01:59 pm
Ok, si mal no entiendo, dentro de una función declaras otras 3:

playsonido, sonidoSTOP y onDibujando

Eso mas allá de lo que haga tu código, es un error de estructura, ya que redeclara innecesariamente funciones en forma local dentro de otra. Reestructura eso para que cada función sea independiente y sea llamada en el momento necesario

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 28 Feb 2012 02:31 pm
si, jorge, muchas gracias por tu ayuda, mientras me respondías, segui el consejo de anoche, y saqué la funcion de pintar por fuera de cambiar el puntero del mouse, y se me arregló el problema..

de todas forma gracias,

ahora tengo otro problema, lo del sonido...
logro que suene cuando empiezo a pintar, pero no logro detenerlo cuando paro de pintar

gracias

Por hce

3 de clabLevel



Genero:Masculino  

Diseñador web

chrome
Citar            
MensajeEscrito el 28 Feb 2012 02:32 pm
Ok, cuando termines de rearmar el código con las funciones independientes ponlo y lo vemos

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox

 

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