Comunidad de diseño web y desarrollo en internet online

Asugnando una acción a un control deslizable

Citar            
MensajeEscrito el 22 May 2006 01:09 am
Hola,
Tengo en la capa acciones de la línea del tiempo principal el siguiente código que obliga a una película a ir avanzando, deteniéndose por 16 segundos en cada fotograma:

_root.aleatorio = false;
stop();
clearInterval(elID);
function seguir() {
if (!_root.aleatorio) {
nextFrame();
} else {
gotoAndStop(Math.round(Math.random()*20));
}
}
elID = setInterval(seguir, 10000);

//Con un botón controlo la película para que avance aleatoriamente, manteniendo la susodicha
espera de 16 segundos en cada fotograma, con el código:

on (release) {
_root.aleatorio = true;

}

//Por último, con otro botón modifico el tiempo de espera (a 5 seg.) para cada fotograma con el código:

on (release) {
stop();
clearInterval(elID);
function seguir() {
if (!_root.aleatorio) {
nextFrame();
} else {
gotoAndStop(Math.round(Math.random()*20));
}
}
elID = setInterval(seguir, 5000);

//Ahora bien, quisiera poder asignarle esta última acción a un control deslizable en lugar de a un botón. :shock: Llevo días intentándolo pero mi novatez no me lleva lejos. ¿Alguien sabe cómo
puedo resolver esto? Mucho he de agradecércelos.

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 22 May 2006 03:07 am
a que te refieres con control deslizable???

Por colaborame

50 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 22 May 2006 03:38 am
Algo como lo que se usa para subir y bajar el volumen drag y hitTest

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 22 May 2006 08:02 am
Coloca una recta en el stage donde quieras que actue el deslizador.
Toma su posición (ejemplo para deslizador horizontal) xdmin y xdmax la yd se mantendrá fija.
Supongamos esos valores : xdmin =450 ; xdmax = 600 : yd = 365;
Crea un MC con la forma del deslizador ( un rectangulito relleno valdrá basicamente). Instancia con el nombre deslizador.
La variable que cambiaremos es el tiempo del setInterval mediante la _x del deslizador.
Ahora calculemos la asignación del valor. recorrido: 150 (600-450) campo del lapso: 15000 (1 -16 segundos);
15000/150 = 100 ---> el divisor/multiplicador de la formula de asignación de lapso es 100.
le damos un valor mínimo de 50 (por ejemplo) al lapso de setInterval para que nunca sea 0 y se cuelgue.
Ahora, al mover el deslizador, cambiara el intervalo de tiempo.
Si quisieramos cambiar ( por código) el intervalo y/o el aleatorio, en el evento oportuno daremos las instruciones para cambiar la _x del deslizador( si queremos cambiar el lapso) y/o llamaremos a la función con el aleatorio que queramos;
ejemplo: boton.onPress = function {deslizador._x= 500; seguir(false)};

Estos serán en el ejemplo los controles:

Código :

deslizador._x= 600; deslizador._y= 365;

function seguir(aleatorio) {
   clearInterval(elID);
    elID = setInterval(seguir,50+(deslizador._x-450)*100, aleatorio);
   aleatorio ? gotoAndStop(Math.round(Math.random()*20)): nextFrame();
}
deslizador.onPress=function(){startDrag(this,true,450,365,600,365)}
deslizador.onMouseUp=function(){stopDrag(); seguir(true)}


Ahora.........modifica la forma del MC deslizador al gusto.

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 23 May 2006 05:27 pm
Gracias teseo por tu respuesta, te comento que encuentro tu amable sugerencia más sofisticada
de lo que necesito y más lejos de mi escasa comprensión del action script. Trataré de
explicarme mejor y más detalladamente, también para algún otro forista espontáneo que tenga
disposición para orientarme.

Teniendo en mi línea principal de la capa acciones...

_root.aleatorio = false;
stop();
clearInterval(elID);
function seguir() {
if (!_root.aleatorio) {
nextFrame();
} else {
gotoAndStop(Math.round(Math.random()*30));
}
}
elID = setInterval(seguir, 16000);


...deseo obtener sólo 5 variaciones del setInterval para que el usuario las active desde el escenario: 30000, 16000, 12000, 6000 y 1000

...si coloco ahora una fila de 5 botones asignándole a cada uno estas variantes me funciona
perfectamente escribiendo en ellos el código:

//ejemplo para la variación 1000:

on (release) {
stop();
clearInterval(elID);
function seguir() {
if (!_root.aleatorio) {
nextFrame();
} else {
gotoAndStop(Math.round(Math.random()*30));
}
}
elID = setInterval(seguir, 1000);
}

Ahora bien, deseo que en lugar de utilizar botones, el usuario pueda disponer de estas
variantes mediante un control deslizable para que al soltarlo en alguno de los 5 segmentos de
la fila obtenga el mismo resultado. Más siendo que no tengo la más remota idea de cómo crear
dicho deslizador arrastré uno desde el panel de bibliotecas comunes de Flash MX
(fader - round). Este contiene un mc y una carpeta con otros tres elementos, en uno de los cuales (fader knob) al agregarle una capa para acciones puedo controlar eventos de la línea
principal del tiempo si comienzo con (no sé de dónde lo saqué):

knobbutton.onRelease = function() {
if (_root.deslizador.hitTest(_root.objetivoN)) {

//comandos
}

...donde "deslizador" es un nombre de instancia de "fader - round" asignado en el escenario
principal, y "objetivoN" a otro para los segmentos 'target' donde se libera el deslizador...

Mi pregunta concreta es si puedo determinar dicho comportamiento desde knobbutton.onRelease, y ¿qué tendría que variar en el siguiente código para obtener el resultado?:

knobbutton.onRelease = function() {
if (_root.deslizador.hitTest(_root.objetivoN)) {
stop();
clearInterval(elID);
function seguir() {
if (!_root.aleatorio) {
nextFrame();
} else {
gotoAndStop(Math.round(Math.random()*30));
}
}
elID = setInterval(seguir, 1000);
}

...supongo que deben agregase 'prefijos' _root. en algunas líneas del código, pero ya intenté
muchas variantes y no me funciona. ¿Sabe alguien cómo pòdría escribirse esto corrcetamente?

Mucho se los agradeceré.

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 23 May 2006 10:36 pm
El consejo de Teseo me ha resultado formidable, debo decir, mucho más de lo que yo hubiera esperado. Sólo lo ajusté un poco para que se adaptara a mis expectativas y me quedó así (en la capa acciones de la línea de tiempo principal):

_root.aleatorio = false;
stop();
clearInterval(elID);
deslizador._x = 30;
deslizador._y = 433;
function seguir(aleatorio) {
stop();
clearInterval(elID);
if (!_root.aleatorio) {
nextFrame();
elID = setInterval(seguir, 500+(deslizador._y-433)*257);
} else {
elID = setInterval(seguir, 500+(deslizador._y-433)*257, aleatorio);
aleatorio ? gotoAndStop(Math.round(Math.random()*20)) : nextFrame();
}
}
deslizador.onPress = function() {
startDrag(this, true, 30, 433, 30, 550);
};
deslizador.onMouseUp = function() {
stopDrag();
seguir(true);
};

podrá notar el generoso forista que lo que deseo es un deslizador vertical, sólo tengo un problema que no he podido resolver, pues al bajar el deslizador el tiempo se amplía, y lo que busco es que suceda lo contrario, que estando arriba el tiempo sea lento y mientras se desliza hacia abajo rápido.

¿Qué parámetro debo variar para obtener este resultado?
¿Podría alguien compartir su opinión?

Mil gracias

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 24 May 2006 03:50 am
escribo en horas de sueño porque estoy del otro lado del planeta. Tal vez al despertar alguien haya hecho realidad mi sueño.
resumiendo, sólo deseo invertir el resultado obtenido de:

elID = setInterval(seguir, 500+(deslizador._y-433)*117)

para que un deslizador vertical varíe el tiempo desde arriba como el más lento hasta abajo como el más rapido, al contrario de lo que sucede con el código escrito, esto es, que comienze arriba arrojando un resutado de setInterval 30000 y el de 500 abajo.

dulces sueños

Por eoa

14 de clabLevel



Genero:Masculino  

msie
Citar            
MensajeEscrito el 24 May 2006 07:05 am
Si el deslizador varia digamos de 12-->100 (valor - minimo)
y tiene que variar de 100-->12 su valor será (máximo - valor)

El valor máximo de la _y creo que es, por lo visto en el código, 550.
luego ese valor es: 500 + (550-deslizador_y)*117
arriba tendra el máximo (pausa máxima-mas lento) y abajo valdrá en mínimo (pausa mínima-mas rápido)

Por Teseo

SWAT Team

1780 de clabLevel

14 tutoriales

Genero:Masculino   SWAT

firefox
Citar            
MensajeEscrito el 24 May 2006 03:28 pm
Un millón de gracias Teseo
Saludos de México

Por eoa

14 de clabLevel



Genero:Masculino  

msie

 

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