Comunidad de diseño web y desarrollo en internet online

paleta de dibujo en un fla funcionando

Citar            
MensajeEscrito el 25 Sep 2008 04:26 am
hola nuevamente!!! :cool:
tengo una duda que ojala y me puedan ayudar a resolver, sigo con mi trabajo =) y ahora lo que estoy haciendo es que en mi escena tengo varias introducciones de texto pero el problema es que tengo o mas bien quiero agregar una paleta de dibujo para que el niño pueda trazar los ejes de un poligono, asi que pense en crear la tabla de dibujo a mano alzada, que ya lo tengo bien estudiado jeje.. pero ahora mi problema es este, mi paleta funciona perfecto si la hago y programo en un fla nuevo, pero al ingresarlo a mi programa a "pawel" no jala, asi que este es mi codigo:

Código :

//aqui yo ya modifique mi clip para que quede de 5x5 para que cuadre en mi escena y no sea muy grande la pantalla
_root.createEmptyMovieClip("line",1);
//en este root, puse en vez de create.. un movie mio es decir _root.dibujolinea("line",1);

//inclui esto para que funcione ya puse mi grosor de linea y mi color(azul)
_root.onMouseDown = function(){
   line.moveTo(_xmouse,_ymouse);
   line.lineStyle(2,0x000099,100);
   this.onMouseMove = function(){
      line.lineTo(_xmouse,_ymouse);
      updateAfterEvent();
   }
}
_root.onMouseUp = function(){
   this.onMouseMove = null;
}

ahora mi problema no es la tabla de dibujo porque funciona perfect en una nueva pelicula, mi problema es que no puedo hacer que funcione en mi proyecto... alguien sabe porque? o como es que puedo exportar esta escena a la vieja y hacer que funcione cuando ya este publicada la escena

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Sep 2008 05:10 am
Casi apostaría que es un problema de rutas. Esos _roots seguramente cambiaron al integrar la paleta al proyecto. Revisa las rutas y evita usar _root.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox
Citar            
MensajeEscrito el 25 Sep 2008 05:16 am
no te entendi.. estaria mejor si uso _parent? me podras explicar mas claramente.. aun no entiendo mucho esto de la programacion gracias

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Sep 2008 07:04 am
ya despues de mucho ya logre que funcione en mi hoja original, pero ahora no puedo lograr que al cambiar de frame se limpie mi hoja.. es decir quiero que se quede pintada el frame anterior pero no el nuevo ya que tienen que volver a poner el mismo ejercicio pero ahora con un nuevo poligono, tengo este codigo que opinan?

Código :


_root.createEmptyMovieClip("line",1);
_root.onMouseDown = function(){
   line.moveTo(_xmouse,_ymouse);
   line.lineStyle(2,0x000099,100);
   
   this.onMouseMove = function(){
      line.lineTo(_xmouse,_ymouse);
      updateAfterEvent();
   }
}
_root.onMouseUp = function(){
   this.onMouseMove = null;
}
this.onMouseMove = delete(_root.createEmptyMovieClip("line",1));
borra.onPress = function(){
   _root.line.clear();
}
updateAfterEvent();

lo que hace es que en cuanto levanto el mouse se borra la linea y lo que yo quiero es que se quede en ese frame pero que el nuevo frame sea limpio y el update no esta funcionando

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Sep 2008 03:13 pm
mi problema sigue... aun no puedo hacer que mi pantalla guarde el cambio hecho por el usuario, ya cree un boton que guarda por asi decirlo los cambios... en realidad lo que hace es que deshabilita la funcion de pintar, pero alguien sabe como puedo lograr que no se borre ya quite del codigo el update, pero aun asi no funciona

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 25 Sep 2008 08:34 pm
Alejandra, cuando pases al nuevo frame, en este pon la misma instrucción que tienes en el onPress del botón:

Código ActionScript :

line.clear();

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 Sep 2008 09:56 pm
pero esa instruccion lo que haria seria borrar la linea no? lo que yo quiero es que en el primer frame no se borre la linea cuando cambio al siguiente para que el prof pueda revisar que hicieron bien el trazo ya q no tengo otra manera de comprobar ni siquiera por medio de score...y asi sucesivamente... pero lo que hace es que pongo los trazos todo bien, cuando cambio al siguiente frame y regreso para comprobar los trazos se eliminan... sera que tengo que probar otra manera para dibujar? he pensado (pero no puedo lograr que salga) que si lo hago en un cuadro como un mc por separado problablemente se guardaria el cambio pero ahorita tengo la instruccion en todo el frame es decir toda la pantalla se vuelve para dibujar porque no se como hacer que solo un espacio sirva para este fin..._root.createEmptyMovieClip("line",1); esta linea hace que toda la pelicula se vuelva pantalla de dibujo y mi intension era que solo fuera un recuadro.. me puedes ayudar a conseguir esto?, o sabras en donde puedo conseguir un tuto que me ayude?

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Sep 2008 05:13 am
hEEELPPPP.. como elimino la accion _root.createEmptyMovieClip("line",1); ya cambie de frame y sigo dibujando pero ya no quiero hacerlo porque ahora estoy en seccion de pregunta y respuesta y ya de paso como vuelvo a activarla? por favor ayudenme! =(

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 27 Sep 2008 05:07 pm
Alejandra, de una forma resumida y sencilla describe que es lo que deseas hacer y que es el error que te da en este momento.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 28 Sep 2008 02:23 am
ok lo que queria hacer en esta escena es crear un cuadro (dentro de un frame que contiene preguntas) al cual se le pudiera dibujar con el mouse //pero esto solo en ese cuadro//, como no pude hice que toda la pantalla fuera de dibujo creando la instruccion de
_root.createEmptyMovieClip("line",1);///...etc...
esto lo hice en tres frames ya que eran respuestas y dibujos diferentes,
ahora en un nuevo frame solo quiero poner botones con roll over para que toquen las respuestas correctas pero que con el mouse no se dibuje, ya que si yo jalo la flecha dibuja la linea y no se como eliminar la primera funcion de
_root.createEmptyMovieClip("line",1);
y necesito volver a activarla en un nuevo frame que tambien debe ser de dibujo ya que el usuario tiene que dibujar unos poligonos... pero no se como hacerlo, he intentado probar varios tutoriales pero no me respeta mi tamaño de cuadro de dibujo ni respeta cuando digo que elimine la funcion

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 28 Sep 2008 02:57 am
Mira Alejandra, si trabajaras con funciones todo te sería más fácil, he tomado el código tuyo y lo he situado dentro de una función, de manera que pueda llamarla cuando quiera y me cree un área de dibujo y también he creado dos funciones más, una para borrar un dibujo que tengamos hecho en un área y otra para borrar completamente el área, aquí las tienes:

Código ActionScript :

//---Función de crear un área de dibujo
function buildDrawArea(nombre:String, posX:Number, posY:Number, ancho:Number, alto:Number, color:Number):Void {

   //---Crear el área de dibujo
   var area:MovieClip = _root.createEmptyMovieClip(nombre, _root.getNextHighestDepth());

   with (area) {

      beginFill(color,100);
      moveTo(0,0);
      lineTo(ancho,0);
      lineTo(ancho,alto);
      lineTo(0,alto);
      lineTo(0,0);
      endFill();

      _x = posX;
      _y = posY;

   }
   //---Crear el contendor de lineas
   var line:MovieClip = area.createEmptyMovieClip("line", area.getNextHighestDepth());

   //---Funciones de dibujo
   area.onMouseDown = function():Void  {

      var pX:Number;
      var pY:Number;

      line.lineStyle(2,0x000099,100);

      this.onMouseMove = function():Void  {

         if (this.hitTest(_root._xmouse, _root._ymouse, true)) {

            pX = (pX == undefined) ? line._xmouse : pX;
            pY = (pY == undefined) ? line._ymouse : pY;
            
            line.moveTo(pX, pY);
            line.lineTo(line._xmouse,line._ymouse);
            pX = line._xmouse;
            pY = line._ymouse;

         }else{
            
            pX = undefined;
            pY = undefined;
            
         }
         updateAfterEvent();

      };
      
   };

   area.onMouseUp = function() {

      delete this.onMouseMove;

   };

}

//---Función de resetear el área de dibujo
function resetDrawArea(nombre:String):Void{
   
   var area:MovieClip = _root[nombre];
   var line:MovieClip = _root[nombre].line;
   
   line.clear();
   
}

//---Función de borrar el área de dibujo
function deleteDrawArea(nombre:String):Void{
   
   var area:MovieClip = _root[nombre];
   
   area.removeMovieClip();
   
}


Ahora si quiero crear un área de dibujo de nombre "area1" en las coordenadas 100, 100 y de un tamaño de 200, 200 y un color de fondo gris claro, solamente debo llamar a la función con estos parámetros:

Código ActionScript :

buildDrawArea("area1", 100, 100, 200, 200, 0xCCCCCC);


Si quiero resetear el dibujo dentro del área de dibujo "area1", solo debo llamar a la segunda función:

Código ActionScript :

resetDrawArea("area1");


Y si quiero eliminar por completo el área de dibujo que he creado:

Código ActionScript :

deleteDrawArea("area1");


Espero te sirva para lo que deseas.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 30 Sep 2008 04:23 am
master me funciona perfecto hice algunas modificaciones con el tamaño y la ubicacion, =) pero ahora si quiero volver a llamar a la funcion.. solo le coloco funcion area1? esto de las funciones me confunde gracias por tu ayuda

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Sep 2008 04:59 am
disculpa si pregunte lo de la funcion ya entendi como jeje ...ahora solo estoy tratando de entender lo del borrar =)

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Sep 2008 05:36 am

Código :

  //---Función de resetear el área de dibujo 
     function resetDrawArea(nombre:String):Void{       
     var area:MovieClip = _root.[queda];   //aqui supongo que va el nombre de mi boton pero no jala
     var line:MovieClip = _root.[queda].line;        
     line.clear();     
     }  
     //---Función de borrar el área de dibujo 
     function deleteDrawArea(nombre:String):Void{       
     var area:MovieClip = _root.[nombre];        
     area.removeMovieClip();     
     }


no me queda muy clara esta parte del codigo ojala y puedas explicarme un poco mas claro porque cuando pongo los _root. mi codigo no hace nada
funciona si en mi boton pongo
on (press, release) {
_root.area1.clear();

}
pero desactiva todas las pantallas incluso si es que cambio la instruccion a "area2" y "area3"
ya no se que hice que bloque mi instruccion =(

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Sep 2008 10:30 am
Exactamente que estás tratando de hacer, escribes el código y dices que no te funciona y es lógico, las funciones que te di no debes varairlas, solo llamarlas.

Si explicas que estás tratando de hacer con el código anterior quizás te pueda ayudar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 01 Oct 2008 03:39 am
no, esta perfecto lo del codigo, lo probe ya con los cambios en cuanto a opacidad y colores, lo demas quedo igual, el problema es que: coloco en el primer frame todo el codigo y pongo mis botones, y hasta ahi todo perfecto, el problema empieza cuando llamo a la funcion en el siguiente frame, porque mis botones como que se cancelan osea ya no sirven //solo borran el frame anterior... y eso de alguna manera bloquea toda la pelicula...
lo que quiero hacer o bueno intento =) es.. que en el primer frame se dibuje algo y se quede en esa pantalla... pero no pase al siguiente frame sino que el siguiente frame sea nuevo y puedas dibujar otra cosa y asi sucesivamente con dos o tres frames mas.. asi que llame a la funcion y cambie el "area1" a area2, etc... mira en mi boton coloque el sig codigo
on (press, release) {
deleteDrawArea("area1");
}
no se si esto esta mal porque si no lo pongo directo en el boton este no funciona...y luego en el otro intente algo como esto
on (press, release) {
nullDrawArea("area1");
}
pero parece que estoy manejando mal eso del null, porque lo que necesito que haga ese boton es que bloquee la funcion de dibujo es decir que si mi usuario ya esta de acuerdo con lo que dibujo que presione este boton y ya no pueda cambiar es decir que no pueda copiar de otro compañero
el problema de todo esto es que no se si estoy llamando mal a la funcion con este codigo //no se como llamar funciones me hago bolas
buildDrawArea("area2",400,90,150,190,0x000099);
y yo pense que cambiando de "area1" a "area2" se lograria lo que necesito pero no porque el primer frame me lo encima en el segundo y asi hasta que tengo cuarenta areas de dibujo!

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 01 Oct 2008 09:27 am
Alejandra, por lo que me explicas sólo necesitas una sola área de dibujo, lo que necesitas es resetear el dibujo según tu conveniencia:

Código ActionScript :

on(press){
   _root.resetDrawArea("area1");
}


Si quisieras que al presionar un botón no se siga dibujando, esto no está implementado, se debería cambiar la función:

Código ActionScript :

//---Función de crear un área de dibujo 
function buildDrawArea(nombre:String, posX:Number, posY:Number, ancho:Number, alto:Number, color:Number):Void {

   //---Crear el área de dibujo 
   var area:MovieClip = _root.createEmptyMovieClip(nombre, _root.getNextHighestDepth());
   
   area.canDraw = true;

   with (area) {

      beginFill(color,100);
      moveTo(0,0);
      lineTo(ancho,0);
      lineTo(ancho,alto);
      lineTo(0,alto);
      lineTo(0,0);
      endFill();

      _x = posX;
      _y = posY;

   }
   //---Crear el contendor de lineas 
   var line:MovieClip = area.createEmptyMovieClip("line", area.getNextHighestDepth());

   //---Funciones de dibujo 
   area.onMouseDown = function():Void  {

      var pX:Number;
      var pY:Number;

      line.lineStyle(2,0x000099,100);

      this.onMouseMove = function():Void  {

         if (this.hitTest(_root._xmouse, _root._ymouse, true) && this.canDraw) {

            pX = (pX == undefined) ? line._xmouse : pX;
            pY = (pY == undefined) ? line._ymouse : pY;

            line.moveTo(pX,pY);
            line.lineTo(line._xmouse,line._ymouse);
            pX = line._xmouse;
            pY = line._ymouse;

         } else {

            pX = undefined;
            pY = undefined;

         }
         updateAfterEvent();

      };

   };

   area.onMouseUp = function() {

      delete this.onMouseMove;

   };

}


Después puedes tener estas dos funciones:

Código ActionScript :

//---Función de bloquear el área de dibujo
function blockDrawArea(nombre:String):Void {

   var area:MovieClip = _root[nombre];

   area.canDraw = false;

}

//---Función de habilitar el área de dibujo
function enableDrawArea(nombre:String):Void {

   var area:MovieClip = _root[nombre];

   area.canDraw = true;

}


Se utilizan de la misma forma que las anteriores, puedes hacer que no se pueda dibujar en el área de dibujo cuando llames a la primera o que se pueda continuar dibujando llamando a la segunda. Las puedes llamar directo desde el frame o desde dentro de un botón.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 02 Oct 2008 01:58 am

escribió:


//---Función de bloquear el área de dibujo
function blockDrawArea(nombre:String):Void {
var area:MovieClip = _root[nombre];
area.canDraw = false;
}
//---Función de habilitar el área de dibujo
function enableDrawArea(nombre:String):Void {
var area:MovieClip = _root[nombre];
area.canDraw = true;
}

yo supongo que _root[nombre] = nombre es igual al nombre de instancia de mi boton? es que la funcion asi no pela si la cambio a mi nombre de instancia borra es decir algo asi

Código :

function blockDrawArea(nombre:String):Void {  
var area:MovieClip = _root.borra;     
area.canDraw = false;  
} 

tampoco funciona y otra pregunta.. el nombre "area1" puedo sustituirlo por "area2", etc, dependiendo del numero de pantallas diferentes que tenga?

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 02 Oct 2008 08:08 pm
Mira Alejandra te he dado las funciones no para que las varíes, sino para que las utilices, no tienes que cambiar nada dentro, no se si te fijas que _root[nombre] depende de lo que hayas pasado a la función como "nombre", si creas un área de dibujo de esta manera:

Código ActionScript :

buildDrawArea("area1", 100, 100, 200, 200, 0xCCCCCC);


Para utilizar las funciones debes hacerlo con ese nombre:

Código ActionScript :

blockDrawArea("area1")


Si creas otra área de dibujo:

Código ActionScript :

buildDrawArea("alejandra", 100, 100, 200, 200, 0xCCCCCC);


Debes utilizar la función respectiva a esa área de dibujo:

Código ActionScript :

blockDrawArea("alejandra");

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 02 Oct 2008 11:16 pm
asi es como lo estoy haciendo, y asi las estoy llamando es decir area1, area2, etc... pero no funciona con el boton ni poniendo la instruccion en el boton, es mas lo unico que hace es encimarme area1 en area2 en area3 es decir no se van eliminando sino que solo se enciman y las lineas pues lo mismo de modo que ya en area4 tengo una revoltura divina...

Por noentiendonada

92 de clabLevel



 

msie7
Citar            
MensajeEscrito el 03 Oct 2008 08:55 pm
Mira si no quieres que se te encime un área con otra debes borrar la primera, para eso se hizo la función "deleteDrawArea", crear otra área no te va a eliminar la anterior, debes eliminarla tú misma por código.

Pero no tienes que crear varias áreas, puedes utilizar una sola y borrar solo el dibujo con "resetDrawArea". Y acuérdate que para llamar a estas funciones tienes que aclararle donde se encuentran, lo mismo "_root" que "_parent".

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 Feb 2009 04:41 am
disculpen... estoy haciendo una aplicacion así pero en AS3 (pues ya hice una en AS2), veran, necesito llamar una variable (color) que esta en el frame1 de la escena1, desde el 1 frame de un MovieClip:

Código :

btn.addEventListener(MouseEvent.CLICK, cambioColorLinea);
function cambioColorLinea(e:MouseEvent):void{
var color:Number = 0xFF0000;
}


con esto, quiero cambiar el color del "lineStyle" del Shape que dibuja, y quiero modificar eso desde el frame de ese MovieClip
pero no se como llamarlo desde el MovieClip, pues antes usaria un _root. o un _parent, pero aqui no se puede asi XD me podrian ayudar? gracias

Por hormy1

Claber

124 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Mar 2009 09:17 pm
pfff ya lo solucione XD

Por hormy1

Claber

124 de clabLevel



 

firefox

 

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