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

Fotogramas aleatorios

Estas en el tema de Fotogramas aleatorios en el foro de Flash y Actionscript en Foros del Web. Hola a todos, Quisiera encontrar un código para que con la acción de un botón la película corra aleatoriamente, de ahí en adelante, de un ...
  #1 (permalink)  
Antiguo 29/03/2006, 08:05
 
Fecha de Ingreso: marzo-2006
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Fotogramas aleatorios

Hola a todos,

Quisiera encontrar un código para que con la acción de un botón la película corra aleatoriamente, de ahí en adelante, de un fotograma A CUALQUIER OTRO a través de la línea del tiempo.

Si pueden sugerirme alguno por favor también pásenme el antídoto.

Agradecimiento anticipado
  #2 (permalink)  
Antiguo 29/03/2006, 08:38
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 11 meses
Puntos: 1
Prueba esto...

Código:
var mínimo:Number = 1 //Fotograma mínimo
var máximo:Number = 200 //Fotograma máximo
this.onEnterFrame = function (){
	var num:Number = 0
        //Si num está por debajo del mínimo o es 0, el while continuará...
        //No es posible un número más grande que máximo
	while (!num || num<mínimo){
		num = Math.round(Math.random()*máximo)
	}
	gotoAndStop(num)
}
function antídoto (){
	delete this.onEnterFrame
}
Espero haber entendido bien tu problema y que te sirva mi solución
  #3 (permalink)  
Antiguo 29/03/2006, 08:55
 
Fecha de Ingreso: diciembre-2005
Ubicación: Redondela (Galicia)
Mensajes: 368
Antigüedad: 18 años, 11 meses
Puntos: 1
Versión más eficiente del anterior (Gracias a luistar )

Código:
var mínimo:Number = 1
var máximo:Number = 200
this.onEnterFrame = function (){
	gotoAndStop(Math.round(Math.random()*(máximo-mínimo+1)+mínimo))
}
function antídoto (){
	delete this.onEnterFrame
}
  #4 (permalink)  
Antiguo 29/03/2006, 09:18
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
y aquí otra versión:
Código:
//---------------------->
var random_entre:Function = function(minimo:Number,maximo:Number):Number{
	return Math.floor(Math.random()*(maximo-minimo+1))+minimo;
}
//---------------------->
MovieClip.prototype.muevete_random = function(){
	var fotograma_inicio:Number = random_entre(0,this._totalframes);
	var fotograma_final:Number = random_entre(0,this._totalframes);
	
	this.gotoAndStop(fotograma_inicio);

	this.onEnterFrame = function(){
		if(this._currentframe == fotograma_final) delete this.onEnterFrame;

		if(fotograma_final - fotograma_inicio > 0) this.nextFrame();
		else this.prevFrame();
	}
	
	trace('de '+fotograma_inicio+' a -> '+fotograma_final);
}

//---------------------->
//ejemplo
this.onMouseUp = function(){
	pelicula.muevete_random();
}
//---------------------->
stop();
para usarlo solo tienese que llamar al método: muevete_random();
de cualquier MovieClip
podría ser: _root.muevete_random();
descarga ejemplo
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #5 (permalink)  
Antiguo 29/03/2006, 09:33
 
Fecha de Ingreso: marzo-2006
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Sonrisa

Gracias Sanva por tu respuesta

Efectivamnente, funciona tu código, pero sólo si lo escribo en la línea del tiempo, donde tengo otro código que se cohibe al ingresar el tuyo.
Permiteme expresarme mejor.

Tengo una galería de fotos a lo largo de mi línea de tiempo. Una foto para cada fotograma, y en mi capa acciones un código para generar una pausa de n segundos para todos y cada uno de los fotogramas:

stop();
clearInterval(elID);
function seguir() {
nextFrame();
}
elID = setInterval(seguir, 6000);

Con esto, escrito sólo una vez (en el 1er. frame de la capa acciones), la película corre en orden, de fotograma a fotograma, deteniéndose en cada uno de ellos durante 6 segundos.
Ahora bien, lo que deseo es darle al usuario una alternativa para que on (release) un botón, el orden de aparición de los fotogramas sea ahora aleatorio, sin perder desde luego la cualidad de pausa expresada con el setInterval para la exposición de las fotos.
Lo que ahora busco entonces es adaptar tu código a la ventana de acciones del botón, siempre y cuando pueda respetarse el setInterval.

Si tienes una solución y tu tiempo lo permite, te agradeceré mucho me la hagas saber.
  #6 (permalink)  
Antiguo 29/03/2006, 09:52
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
hola
del ejemplo anterior cambia el código por éste
Código:
//---------------------->
var random_entre:Function = function(minimo:Number,maximo:Number):Number{
	return Math.floor(Math.random()*(maximo-minimo+1))+minimo;
}
//---------------------->
MovieClip.prototype.muevete_random = function(demora:Number){
	var el_mc:MovieClip = this;

	var fotograma_inicio:Number = random_entre(0,el_mc._totalframes);
	var fotograma_final:Number = random_entre(0,el_mc._totalframes);
	
	el_mc.gotoAndStop(fotograma_inicio);

	var muevete:Function = function(){
		if(el_mc._currentframe == fotograma_final) clearInterval(comienza_a_moverte);

		if(fotograma_final - fotograma_inicio > 0) el_mc.nextFrame();
		else el_mc.prevFrame();
	}
	
	var comienza_a_moverte:Number = setInterval(muevete,demora);

	trace('de '+fotograma_inicio+' a -> '+fotograma_final);
}

//---------------------->
//ejemplo
this.onMouseUp = function(){
	pelicula.muevete_random(1000);
}
//---------------------->
stop();
__________________
Si digo que soy mentiroso. ¿Lo soy?
  #7 (permalink)  
Antiguo 29/03/2006, 11:01
 
Fecha de Ingreso: marzo-2006
Mensajes: 12
Antigüedad: 18 años, 8 meses
Puntos: 0
Pregunta

Gracias luistar por tu ilustración, pero, disculpando mis preguntas de novato, ¿dónde debo escribir ese código? ¿qué debo colocar en el panel de acciones del botón? ¿debo darle a este un nombre de instancia?


______________________________
Imposible responder categóricamente sí o no sin conoceros
pero si eres mentiroso esta pudo ser la primer verdad de tu vida;
si no lo eres esta pudo ser la primer mentira de tu vida.
  #8 (permalink)  
Antiguo 29/03/2006, 12:17
Avatar de luistar  
Fecha de Ingreso: marzo-2005
Ubicación: Argentina
Mensajes: 939
Antigüedad: 19 años, 8 meses
Puntos: 0
las dos primeras funciones

random_entre y MovieClip.prototype.muevete_random

los pones al principio de todo

y luego ya puedes usarlo en cualquier parte de la pelicula
por ejemplo desde un boton:

//ejemplo
boton.onRelease = function(){
pelicula.muevete_random(6000);
}

aquí te paso el ejemplo actualizado
__________________
Si digo que soy mentiroso. ¿Lo soy?
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 16:18.