Foros del Web » Creando para Internet » Flash y Actionscript »

Evento mouse no funciona + animación durante tiempo determinado

Estas en el tema de Evento mouse no funciona + animación durante tiempo determinado en el foro de Flash y Actionscript en Foros del Web. Hola! Tengo un problemilla que no consigo solucionar. Estoy haciendo un dado, y yo quiero que al hacer click sobre él, éste se mueva hasta ...
  #1 (permalink)  
Antiguo 17/05/2010, 11:41
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Evento mouse no funciona + animación durante tiempo determinado

Hola!
Tengo un problemilla que no consigo solucionar. Estoy haciendo un dado, y yo quiero que al hacer click sobre él, éste se mueva hasta el resuktado obtenido. Lo que tengo hasta ahora es que el dado hace lo indicado pero no al clickarlo con el mouse, si no dandole a reproducir en flash.

Además, me gustaría que la animación fuese un poco más larga, es decir, que el dado diese alguna vuelta más antes de detenerse en el resultado obtenido. No se muy bien como debería hacer esto, he pensado 2 opciones:

1.Que recorra la linea de tiempo más de una vez hasta detenerse
(que por mucho que investigo no sé como se hace)

2. Que la animación dure un determinado tiempo. Lo he intentado
utilizando temporizadores, pero no soy muy diestra en el tema y
no ha funcionado.



Aquí dejo mi código, a ver si alguien me puede ayudar. Muchisimas gracias de antemano




dado.fla

Código:
var d:Dado= new Dado();
var aux:int;

d.calcularValor();
aux= d.getValor();
gotoAndPlay(1);
trace(aux);
switch (aux) {

	case 1 :
		gotoAndStop(2);
		break;

	case 2 :
				gotoAndStop(3);

		break;


	case 3 :
				gotoAndStop(4);

		break;


	case 4 :
				gotoAndStop(5);

		break;


	case 5 :
				gotoAndStop(6);

		break;


	case 6 :
						gotoAndStop(7);

		break;
}







dado.as


Código:
package {
	import flash.display.MovieClip;
	import flash.events.MouseEvent;


	public dynamic class Dado extends MovieClip {

		private var n:int;

		public function Dado() {
			addEventListener(MouseEvent.CLICK, lanzarDado);
		}

		public function calcularValor():void {
			n=Math.round (Math.random()*5)+1;

		}

		public function getValor():int {
			return n;
		}

		public function lanzarDado(event:MouseEvent):void {
			calcularValor();


		}


	}




}
  #2 (permalink)  
Antiguo 20/05/2010, 04:50
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

alguien tiene alguna idea?
gracias
  #3 (permalink)  
Antiguo 20/05/2010, 13:51
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

puedes hacer algo parecido ha esto
Código PHP:
var keyLabel:Array=new Array("dado1","dado2","dado3","dado4","dado5","dado6")
var 
dado=new Dado();
addChild(dado);
dado.x=50;
dado.y=50;
var 
n:int=1
var timerStop:Timer=new Timer(1000*3,1)
timerStop.addEventListener(TimerEvent.TIMER,detectStopDado)
dado.stop()
dado.addEventListener(MouseEvent.CLICK,initTimerStopDado)
function 
initTimerStopDado(event:MouseEvent){
    
dado.removeEventListener(MouseEvent.CLICK,initTimerStopDado)
    
n=random()
    
dado.play()
    
timerStop.reset()
    
timerStop.start()
}
function 
detectStopDado(event:TimerEvent){
    
dado.addEventListener(Event.ENTER_FRAME,StopDado)
}
function 
StopDado(event:Event){
    if(
dado.currentFrameLabel==keyLabel[n]){
        
dado.stop()
        
dado.removeEventListener(Event.ENTER_FRAME,StopDado)
        
dado.addEventListener(MouseEvent.CLICK,initTimerStopDado)
    }
}
function 
random():int {
    return (
Math.round(Math.random()*5)==Math.round(Math.random()*5))?Math.round(Math.random()*5):Math.round(Math.random()*5);

ejemplo

http://crea-flash.com/index.php?opti...&id=5&Itemid=8
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft

Última edición por Lynxcraft; 20/05/2010 a las 18:54
  #4 (permalink)  
Antiguo 22/05/2010, 10:00
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Muchas gracias, a ver si lo puedo aplicar bien a mi caso

Gracias de nuevo
  #5 (permalink)  
Antiguo 22/05/2010, 10:54
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Pues la verdad es que no sé muy bien como puedo implementarlo, porque yo lo hago cn la clase Dado (tengo que hacerlo así para poder hacer más de una instancia de él)

Estoy perdida....Si me podeis echar una mano....
Gracias
  #6 (permalink)  
Antiguo 23/05/2010, 05:56
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

te podría ayudar pero realmente no se como lo tienes planteado por ejemplo cuando pones los eventos de gotoAndStop dentro del switch , ad donde te diriges exactamente a una animación de dado?..

por otro lado si quieres utilizar el ejemplo que te e dado te puedo añadir una función que se ejecute cada ves que el dado se detenga devolviendo el valor real del dado que seria del 1-6;

primero renombra la vinculación del dado y coloca mcDado


el .as Dado

Código PHP:


package 
{
    
import flash.display.MovieClip;
    
import flash.events.MouseEvent;
    
import flash.events.TimerEvent
    import flash
.utils.Timer
    import flash
.events.Event
    
public dynamic class Dado extends MovieClip {
        public var 
n:int=0;
        public var 
keyFrames:Array=new Array("dado1","dado2","dado3","dado4","dado5","dado6");
        public var 
mcDado:MovieClip;
        public var 
MinSegundos:Number=3;//este es el tiempo minimo de animacion del dado el tiempo maximo dependera de los frames que tenga la animacion
        
public var timerStop:Timer;
        public var 
functionEnd:Function=function(n:int):void{};
        public var 
functionEndParam:Array=new Array();
        public function 
Dado(func:Function=null,param:Array=null):void {
            
functionEnd=(func!=null)?func:functionEnd;
            
functionEndParam=(param)?param:functionEndParam;
            
mcDado=new miMcDado();//este Movie deve estar vinculado en la biblioteca y tienes que tener los keyFrames y guales a los de arriba 
            
addChild(mcDado);
            
timerStop=new Timer(1000*MinSegundos,1);
            
timerStop.addEventListener(TimerEvent.TIMER,detectStopDado);
            
mcDado.stop();
        }
        public function 
start():void {
            
initTimerStopDado();
        }
        public function 
addFunction(func:Function):void {
            
functionEnd=func;
        }
        public function 
addFunctionParam(param:Array):void {
            
functionEndParam=param;
        }
        public function 
getValor():int {
            return 
n+1;
        }
        private function 
initTimerStopDado() {
            
n=random();
            
mcDado.play();
            
timerStop.reset();
            
timerStop.start();
        }
        private function 
detectStopDado(event:TimerEvent) {
            
mcDado.addEventListener(Event.ENTER_FRAME,StopDado);
        }
        private function 
StopDado(event:Event) {
            if (
mcDado.currentFrameLabel==keyFrames[n]) {
                
mcDado.stop();
                
mcDado.removeEventListener(Event.ENTER_FRAME,StopDado);
                var 
paramTemp:Array=functionEndParam.slice()
                
paramTemp.unshift(getValor());
                
functionEnd.apply(functionEnd,paramTemp)
            }
        }
        private function 
random():int {
            return (
Math.round(Math.random()*5)==Math.round(Math.random()*5))?Math.round(Math.random()*5):Math.round(Math.random()*5);
        }

    }

y estos son uno ejemplos de como aplicarlo

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=(stage.stageWidth)/2
dado
.y=(stage.stageHeight)/2
dado
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

con dos dados

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.start()
var 
dado2=new Dado(resultado,['Hola Mundo']);
addChild(dado2);
dado2.x=200
dado2
.y=100
dado2
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

si quieres hacer click sobre un dado

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.addEventListener(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param

si quieres que dada dado ejecute una funcion distinta

Código PHP:
import Dado
var dado=new Dado(resultadoDado1);
addChild(dado);
dado.x=100
dado
.y=100

var dado2=new Dado(resultadoDado2);
addChild(dado2);
dado2.x=200
dado2
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
    
dado2.start()
}
function 
resultadoDado1(n:int):void{
    
trace("El resutado del dado1 es:"+n
}
function 
resultadoDado2(n:int):void{
    
trace("El resutado del dado2 es:"+n

si quieres cambiar de parametros cada ves que se ejecute la funcion

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param
    
dado.addFunctionParam(['soy el nuevo parametro con el nuevo resultado '+n])

y por ultimo si quieres cambiar de funcion cada ves que te entregue el resultado

Código PHP:
import Dado
var cuenta:int=0
var dado=new Dado(funcion1);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
funcion1(n:int):void{
    
trace("soy la funcion1 y el resultado del dado es:"+n
    
dado.addFunction(funcion2)
}
function 
funcion2(n:int):void{
    
trace("soy la funcion2 y el resultado del dado es:"+n
    
dado.addFunction(funcion1)

existen mas combinaciones pero eso te dejo a ti XDXD bueno espero que esto te sirva saludos
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #7 (permalink)  
Antiguo 23/05/2010, 06:01
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Ha se me olvidaba si quieres saber el resultado antes de que se acabe la funcion seria asi

Código PHP:
import Dado
var dado=new Dado(resultadoDado1);
addChild(dado);
dado.x=100
dado
.y=100
dado
.addEventListener(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
    
trace(dado.getValor())
}
function 
resultadoDado1(n:int):void{
    
trace("El resutado Final es:"+n

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #8 (permalink)  
Antiguo 24/05/2010, 09:34
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

¡Hola!
Muchas gracias por tu ayuda, voy a ver que puedo hacer con tu respuesta.

Respecto a que quiero hacer con goToAndStop, en la linea de tiempo tengo 7 imagenes, una por cada posicion del dado(la de estado de reposo y las del 1 al 6). La del estado de reposo del dado(que es una imagen en la que el dado está de canto de manera que no se ve ningún número en concreto), está en el fotograma 1, la imagen en la que se ve el 1 en el fotograma 2, y así sucesivamente hasta llegar al 6.En el escenario estas imagenes están superpuestas unas sobre las otras.
Lo que yo pretendo es que al reproducir la .swf aparezca el dado en estado de reposo y que al clickar sobre él aparezca un resultado tras la animación.
Lo que me ocurre es que el dado no responde al hacer click sobre él, solo lo hace cuando lo pongo a reproducir en la ventana de flash. Además la animación me parece muy pobre ya que solo se mueve del fotograma en el que está hasta el que tiene que ir, por lo que si sale 2 veces seguidas el mismo número, no hace reproducción alguna.

Espero haber expuesto mejor mi problema :)

Muchisimas gracias
  #9 (permalink)  
Antiguo 25/05/2010, 13:17
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Cita:
Iniciado por Lynxcraft Ver Mensaje
te podría ayudar pero realmente no se como lo tienes planteado por ejemplo cuando pones los eventos de gotoAndStop dentro del switch , ad donde te diriges exactamente a una animación de dado?..

por otro lado si quieres utilizar el ejemplo que te e dado te puedo añadir una función que se ejecute cada ves que el dado se detenga devolviendo el valor real del dado que seria del 1-6;

primero renombra la vinculación del dado y coloca mcDado


el .as Dado

Código PHP:


package 
{
    
import flash.display.MovieClip;
    
import flash.events.MouseEvent;
    
import flash.events.TimerEvent
    import flash
.utils.Timer
    import flash
.events.Event
    
public dynamic class Dado extends MovieClip {
        public var 
n:int=0;
        public var 
keyFrames:Array=new Array("dado1","dado2","dado3","dado4","dado5","dado6");
        public var 
mcDado:MovieClip;
        public var 
MinSegundos:Number=3;//este es el tiempo minimo de animacion del dado el tiempo maximo dependera de los frames que tenga la animacion
        
public var timerStop:Timer;
        public var 
functionEnd:Function=function(n:int):void{};
        public var 
functionEndParam:Array=new Array();
        public function 
Dado(func:Function=null,param:Array=null):void {
            
functionEnd=(func!=null)?func:functionEnd;
            
functionEndParam=(param)?param:functionEndParam;
            
mcDado=new miMcDado();//este Movie deve estar vinculado en la biblioteca y tienes que tener los keyFrames y guales a los de arriba 
            
addChild(mcDado);
            
timerStop=new Timer(1000*MinSegundos,1);
            
timerStop.addEventListener(TimerEvent.TIMER,detectStopDado);
            
mcDado.stop();
        }
        public function 
start():void {
            
initTimerStopDado();
        }
        public function 
addFunction(func:Function):void {
            
functionEnd=func;
        }
        public function 
addFunctionParam(param:Array):void {
            
functionEndParam=param;
        }
        public function 
getValor():int {
            return 
n+1;
        }
        private function 
initTimerStopDado() {
            
n=random();
            
mcDado.play();
            
timerStop.reset();
            
timerStop.start();
        }
        private function 
detectStopDado(event:TimerEvent) {
            
mcDado.addEventListener(Event.ENTER_FRAME,StopDado);
        }
        private function 
StopDado(event:Event) {
            if (
mcDado.currentFrameLabel==keyFrames[n]) {
                
mcDado.stop();
                
mcDado.removeEventListener(Event.ENTER_FRAME,StopDado);
                var 
paramTemp:Array=functionEndParam.slice()
                
paramTemp.unshift(getValor());
                
functionEnd.apply(functionEnd,paramTemp)
            }
        }
        private function 
random():int {
            return (
Math.round(Math.random()*5)==Math.round(Math.random()*5))?Math.round(Math.random()*5):Math.round(Math.random()*5);
        }

    }

y estos son uno ejemplos de como aplicarlo

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=(stage.stageWidth)/2
dado
.y=(stage.stageHeight)/2
dado
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

con dos dados

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.start()
var 
dado2=new Dado(resultado,['Hola Mundo']);
addChild(dado2);
dado2.x=200
dado2
.y=100
dado2
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

si quieres hacer click sobre un dado

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.addEventListener(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param

si quieres que dada dado ejecute una funcion distinta

Código PHP:
import Dado
var dado=new Dado(resultadoDado1);
addChild(dado);
dado.x=100
dado
.y=100

var dado2=new Dado(resultadoDado2);
addChild(dado2);
dado2.x=200
dado2
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
    
dado2.start()
}
function 
resultadoDado1(n:int):void{
    
trace("El resutado del dado1 es:"+n
}
function 
resultadoDado2(n:int):void{
    
trace("El resutado del dado2 es:"+n

si quieres cambiar de parametros cada ves que se ejecute la funcion

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param
    
dado.addFunctionParam(['soy el nuevo parametro con el nuevo resultado '+n])

y por ultimo si quieres cambiar de funcion cada ves que te entregue el resultado

Código PHP:
import Dado
var cuenta:int=0
var dado=new Dado(funcion1);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
funcion1(n:int):void{
    
trace("soy la funcion1 y el resultado del dado es:"+n
    
dado.addFunction(funcion2)
}
function 
funcion2(n:int):void{
    
trace("soy la funcion2 y el resultado del dado es:"+n
    
dado.addFunction(funcion1)

existen mas combinaciones pero eso te dejo a ti XDXD bueno espero que esto te sirva saludos



Muchas gracias una vez más por tu ayuda Lynxcraft pero tu solución me resulta muy complicada. Yo quería hacerlo de una manera más sencilla(tal y como explico en el post anterior), aunque quizá esté intentando un imposible(soy bastante novata en este lenguaje).


Si alguien me pudiese decir porque no funciona cuando se hace click sobre el dado, es decir porque no funciona el evento, le estaría eternamente agradecida
ya que es lo que mas me preocupa. El tema de alargar la animación es secundario.


Muchas muchas gracias a tod@s y sobre todo a ti Lynxcraft.
  #10 (permalink)  
Antiguo 26/05/2010, 08:21
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

XDXD bueno no se me ocurre nada mas para poderte ayudar pero lo del mouse es muy raro quizá sea porque lo tienes asignas dentro del mismo dado y colocas la función en fotogramas distintos
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #11 (permalink)  
Antiguo 25/06/2010, 12:05
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Cita:
Iniciado por Lynxcraft Ver Mensaje
te podría ayudar pero realmente no se como lo tienes planteado por ejemplo cuando pones los eventos de gotoAndStop dentro del switch , ad donde te diriges exactamente a una animación de dado?..

por otro lado si quieres utilizar el ejemplo que te e dado te puedo añadir una función que se ejecute cada ves que el dado se detenga devolviendo el valor real del dado que seria del 1-6;

primero renombra la vinculación del dado y coloca mcDado


el .as Dado

Código PHP:


package 
{
    
import flash.display.MovieClip;
    
import flash.events.MouseEvent;
    
import flash.events.TimerEvent
    import flash
.utils.Timer
    import flash
.events.Event
    
public dynamic class Dado extends MovieClip {
        public var 
n:int=0;
        public var 
keyFrames:Array=new Array("dado1","dado2","dado3","dado4","dado5","dado6");
        public var 
mcDado:MovieClip;
        public var 
MinSegundos:Number=3;//este es el tiempo minimo de animacion del dado el tiempo maximo dependera de los frames que tenga la animacion
        
public var timerStop:Timer;
        public var 
functionEnd:Function=function(n:int):void{};
        public var 
functionEndParam:Array=new Array();
        public function 
Dado(func:Function=null,param:Array=null):void {
            
functionEnd=(func!=null)?func:functionEnd;
            
functionEndParam=(param)?param:functionEndParam;
            
mcDado=new miMcDado();//este Movie deve estar vinculado en la biblioteca y tienes que tener los keyFrames y guales a los de arriba 
            
addChild(mcDado);
            
timerStop=new Timer(1000*MinSegundos,1);
            
timerStop.addEventListener(TimerEvent.TIMER,detectStopDado);
            
mcDado.stop();
        }
        public function 
start():void {
            
initTimerStopDado();
        }
        public function 
addFunction(func:Function):void {
            
functionEnd=func;
        }
        public function 
addFunctionParam(param:Array):void {
            
functionEndParam=param;
        }
        public function 
getValor():int {
            return 
n+1;
        }
        private function 
initTimerStopDado() {
            
n=random();
            
mcDado.play();
            
timerStop.reset();
            
timerStop.start();
        }
        private function 
detectStopDado(event:TimerEvent) {
            
mcDado.addEventListener(Event.ENTER_FRAME,StopDado);
        }
        private function 
StopDado(event:Event) {
            if (
mcDado.currentFrameLabel==keyFrames[n]) {
                
mcDado.stop();
                
mcDado.removeEventListener(Event.ENTER_FRAME,StopDado);
                var 
paramTemp:Array=functionEndParam.slice()
                
paramTemp.unshift(getValor());
                
functionEnd.apply(functionEnd,paramTemp)
            }
        }
        private function 
random():int {
            return (
Math.round(Math.random()*5)==Math.round(Math.random()*5))?Math.round(Math.random()*5):Math.round(Math.random()*5);
        }

    }

y estos son uno ejemplos de como aplicarlo

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=(stage.stageWidth)/2
dado
.y=(stage.stageHeight)/2
dado
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

con dos dados

Código PHP:
import Dado
var dado=new Dado(resultado,['Hola Mundo']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.start()
var 
dado2=new Dado(resultado,['Hola Mundo']);
addChild(dado2);
dado2.x=200
dado2
.y=100
dado2
.start()
function 
resultado(n:int,param:String):void{
    
trace("El resutado del dado es:"+n+" \n El valor del parametro es:"+param

si quieres hacer click sobre un dado

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
dado
.addEventListener(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param

si quieres que dada dado ejecute una funcion distinta

Código PHP:
import Dado
var dado=new Dado(resultadoDado1);
addChild(dado);
dado.x=100
dado
.y=100

var dado2=new Dado(resultadoDado2);
addChild(dado2);
dado2.x=200
dado2
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
    
dado2.start()
}
function 
resultadoDado1(n:int):void{
    
trace("El resutado del dado1 es:"+n
}
function 
resultadoDado2(n:int):void{
    
trace("El resutado del dado2 es:"+n

si quieres cambiar de parametros cada ves que se ejecute la funcion

Código PHP:
import Dado
var dado=new Dado(resultadoDado1,['soy el paramatro1']);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
resultadoDado1(n:int,param):void{
    
trace("El resutado del dado1 es:"+n+"\nEsto es el valor del Parametro actual:"+param
    
dado.addFunctionParam(['soy el nuevo parametro con el nuevo resultado '+n])

y por ultimo si quieres cambiar de funcion cada ves que te entregue el resultado

Código PHP:
import Dado
var cuenta:int=0
var dado=new Dado(funcion1);
addChild(dado);
dado.x=100
dado
.y=100
addEventListener
(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
}
function 
funcion1(n:int):void{
    
trace("soy la funcion1 y el resultado del dado es:"+n
    
dado.addFunction(funcion2)
}
function 
funcion2(n:int):void{
    
trace("soy la funcion2 y el resultado del dado es:"+n
    
dado.addFunction(funcion1)

existen mas combinaciones pero eso te dejo a ti XDXD bueno espero que esto te sirva saludos

Hola de nuevo!!
Lyncraft,tras mirar tu codigo,he conseguido entenderlo .
He conseguido k el dado funcione en .fla, el problema es cuando kiero hacerlo con la clase...K es exactamente lo k tengo k poner aki?

Código HTML:
 mcDado=new miMcDado();//este Movie deve estar vinculado en la biblioteca y tienes que tener los keyFrames y guales a los de arriba

Muchisimas gracias
  #12 (permalink)  
Antiguo 28/06/2010, 08:19
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

el miMcDado() es un movieClip que contiene las animaciones de los dados entra en la biblioteca y mira como esta formado, puedes cambiar las imágenes por las que quieres siempre y cuando respetes los nombres de los key frames.
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #13 (permalink)  
Antiguo 29/06/2010, 05:37
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Gracias por tu respuesta, pero sigue sin salirme....

Tengo la clase .as tal y como tu me pusiste


Código:
package { 
    import flash.display.MovieClip; 
    import flash.events.MouseEvent; 
    import flash.events.TimerEvent 
    import flash.utils.Timer 
    import flash.events.Event 
    public dynamic class DiceCluedo extends MovieClip { 
        public var n:int=0; 
        public var keyFrames:Array=new Array("dado1","dado2","dado3","dado4","dado5","dado6"); 
        public var mcDado:MovieClip; 
        public var MinSegundos:Number=3;//este es el tiempo minimo de animacion del dado el tiempo maximo dependera de los frames que tenga la animacion 
        public var timerStop:Timer; 
        public var functionEnd:Function=function(n:int):void{}; 
        public var functionEndParam:Array=new Array(); 
        public function DiceCluedo(func:Function=null,param:Array=null):void { 
            functionEnd=(func!=null)?func:functionEnd; 
            functionEndParam=(param)?param:functionEndParam; 
            mcDado= dadoC;//este Movie deve estar vinculado en la biblioteca y tienes que tener los keyFrames y guales a los de arriba  
            addChild(mcDado); 
            timerStop=new Timer(1000*MinSegundos,1); 
            timerStop.addEventListener(TimerEvent.TIMER,detectStopDado); 
            mcDado.stop(); 
        } 
        public function start():void { 
            initTimerStopDado(); 
        } 
        public function addFunction(func:Function):void { 
            functionEnd=func; 
        } 
        public function addFunctionParam(param:Array):void { 
            functionEndParam=param; 
        } 
        public function getValor():int { 
            return n+1; 
        } 
        private function initTimerStopDado() { 
            n=random(); 
            mcDado.play(); 
            timerStop.reset(); 
            timerStop.start(); 
        } 
        private function detectStopDado(event:TimerEvent) { 
            mcDado.addEventListener(Event.ENTER_FRAME,StopDado); 
        } 
        private function StopDado(event:Event) { 
            if (mcDado.currentFrameLabel==keyFrames[n]) { 
                mcDado.stop(); 
                mcDado.removeEventListener(Event.ENTER_FRAME,StopDado); 
                var paramTemp:Array=functionEndParam.slice() 
                paramTemp.unshift(getValor()); 
                functionEnd.apply(functionEnd,paramTemp) 
            } 
        } 
        private function random():int { 
            return (Math.round(Math.random()*5)==Math.round(Math.random()*5))?Math.round(Math.random()*5):Math.round(Math.random()*5); 
        } 

    } 
}
Pero me sigue dadndo error aqui

Código:
   mcDado= dadoC;
dadoC es el movieclip que tengo en la biblioteca en el .fla

¿por que me puede estar dadno este error?
gracias
  #14 (permalink)  
Antiguo 29/06/2010, 08:51
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

porque tienes que anteponer la palabra new

mcDado=new dadoC


y por otro lado el movie tienes que estar vinculado

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #15 (permalink)  
Antiguo 29/06/2010, 09:14
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Gracias Lynxcraft.
Ahora si me sale pero al reproducir la pelicula me salen 2 dados: uno k funciona correctamente y otro que esta moviendose todo el tiempo....¿como puedo eliminar este segundo dado?

muchisimas gracias
  #16 (permalink)  
Antiguo 29/06/2010, 10:06
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

seguro que abras creados dos new Dado(); elimina uno y ya no te saldrá el otro
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #17 (permalink)  
Antiguo 29/06/2010, 12:03
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Muchas gracias!!!!!
El problema era que lo habia creado también en el stage

Muchisimas gracias
  #18 (permalink)  
Antiguo 02/07/2010, 05:33
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Tengo una ultima duda...

como puedo obtener el valor del dado en una variable, de forma que se lo pueda pasar a una clase para poder mover asi las fichas de mi juego? esk de la forma que me lo expones(con el trace)sale en la ventana de salida, pero a mi m gustaria obtenerlo como una variable

Muchas gracias por tu ayuda y paciencia
  #19 (permalink)  
Antiguo 02/07/2010, 08:33
Avatar de Lynxcraft  
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

si quieres saver el valor antes que el dado se pare seria asi
Código PHP:

import Dado
var dado=new Dado(resultadoDado1);
addChild(dado);
dado.x=100
dado
.y=100
dado
.addEventListener(MouseEvent.CLICK,mouseClik)
function 
mouseClik(event:MouseEvent):void{
    
dado.start()
    
variable_a_la_que_quiero_pasar_el_valor_antes_de_que_termine_la_animacion=dado.getValor()
}
function 
resultadoDado1(n:int):void{

variable_a_la_que_quiero_pasar_el_valor_cuando_termine_la_animacion=n

__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft
  #20 (permalink)  
Antiguo 04/07/2010, 04:00
Avatar de andmai  
Fecha de Ingreso: enero-2010
Mensajes: 84
Antigüedad: 14 años, 3 meses
Puntos: 1
Respuesta: Evento mouse no funciona + animación durante tiempo determinado

Muchas gracias!!!!

Etiquetas: determinado, durante, mouse, eventos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:31.