Ver Mensaje Individual
  #6 (permalink)  
Antiguo 23/05/2010, 05:56
Avatar de Lynxcraft
Lynxcraft
 
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 17 años
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