jeje molestia ninguna de todos modos esto también me ayuda para aprender he ir practicando
, lo primero descargarte este archivo en el cual iremos trabajando
archivo Código PHP:
b.onrollOver= function() {
onEnterFrame=function(){
fondo._x += 5;
if (fondo._x>600){
onEnterFrame=Null
}
}
}
b.onrollOut=function(){
onEnterFrame=null;
}
b2.onrollOver=function(){
onEnterFrame=function(){
fondo._x-=5;
if (fondo._x<100){
onEnterFrame=null
}
}
}
b2.onrollOut=function(){
onEnterFrame=null;
}
primero hablaremos de tu función Xd al darle barias veces al boton este sobrepasa el limite, la razón en la siguiente
cuando inicias la función
onEnterFrame = function () { lo primero que le ordenas es que mueva el fondo 5x
fondo._x += 5; una ves que lo ha movido le pides que haga una condición
if(fondo._x>600) { luego anulas el enter frame
onEnterFrame = Null;
}
bueno si ases esto tienes que tener en cuenta el orden en que va cada evento dentro de una función si le ordenas primero que se desplace y luego le pides que si as sobrepasado el limite pare pues parara pero el desplazamiento ya lo ha echo
ahora solo moveremos de lugar las ordenes y le pedimos que realice primero la condición, si no ha sobrepasado esta moverá el mc
fondo si lo ha echo se parara,para ello tendremos que utilizar la condición else el código quedaría así
codigo1 Código PHP:
b.onRollOver = function() {
onEnterFrame = function () {
if (fondo._x>600) {
onEnterFrame = Null;
}else{
fondo._x += 5;
}
};
};
b.onRollOut = function() {
onEnterFrame = null;
};
b2.onRollOver = function() {
onEnterFrame = function () {
if (fondo._x<100) {
onEnterFrame = null;
}else{
fondo._x -= 5;
}
};
};
b2.onRollOut = function() {
onEnterFrame = null;
};
otra forma de poder realizar esta función seria poner el limite directamente dentro de la condición pero esto crearía una cierta diferencia
codigo2 Código PHP:
b.onRollOver = function() {
onEnterFrame = function () {
fondo._x += 5;
if (fondo._x>600) {
fondo._x = 600;
}
};
};
b.onRollOut = function() {
onEnterFrame = null;
};
b2.onRollOver = function() {
onEnterFrame = function () {
fondo._x -= 5;
if (fondo._x<100) {
fondo._x = 100;
}
};
};
b2.onRollOut = function() {
onEnterFrame = null;
};
como veras ahora la condiciones piden que al sobre pasar los limites estas detengan al mc
fondo tanto al ir a la derecha como a la izquierda
Que diferencia ay??
en el
codigo1 tiene que primero verificar la condición para poder avanzar de posición, así que utilizando el
código 1 aumenta la velocidad a 33
fondo._x += 33;
esto hará que el mc
fondo no llegue al limite y se quede unos pixeles fuera de el limite mientras que el código 2 le pide que se coloque justo en el limite
Conflictos con enterframe
ahora te mostrare un problema básico a la hora de utilizar el
onEnterFrame = null; descargarte este archivo,
este archivo tiene un nuevo mc que tiene por nombre de instance
manilla, y una nueva función que hace que el mc
manilla rote sin para el código es
para que realice este movimiento es
Código PHP:
onEnterFrame = function () {
manilla._rotation += 5;
}
en esta parte de la explicación debemos realizar una función que no pare la
manilla ya que el código
onEnterFrame = null; anula todos los enterframe que ay en la escena incluida al que mueve la manilla,
para ello utilizaremos otra función llamada
setInterval traducido a nuestro lenguaje seria algo así como (intervalo de tiempo para volver a realizar la función xxx)y
clearInterval que sirve para eliminar los intervalos y así no se reproduzcan indefinidamente, también crearemos funciones para el desplazamiento derecho he izquierdo estas remplazaran a los enterframes
Codigo3 Código PHP:
onEnterFrame = function () {
manilla._rotation += 5;
};
b.onRollOver = function() {
intervalo_der = setInterval(mover_derecha, 70);
};
b.onRollOut = function() {
clearInterval(intervalo_der);
};
b2.onRollOver = function() {
intervalo_izq=setInterval(mover_izquierda,70);
};
b2.onRollOut = function() {
clearInterval(intervalo_izq);
};
function mover_derecha() {
fondo._x += 5;
if (fondo._x>600) {
fondo._x = 600;
clearInterval(intervalo_der);
}
}
function mover_izquierda() {
fondo._x -= 5;
if (fondo._x<100) {
fondo._x = 100;
clearInterval(intervalo_izq);
}
}
primero creamos una función llamada
mover_derecha y tenemos que que añadir una nueva linea de código que
clearInterval(intervalo_der); para detener el intervalo
Código PHP:
function mover_derecha() {
fondo._x += 5;
if (fondo._x>600) {
fondo._x = 600;
clearInterval(intervalo_der);
}
}
para activar el intervalo lo aremos así primero le damos un nombre
intervalo_der y le asignamos la función que tiene que ejecutar
= setInterval(mover_derecha, y también le damos tiempo que se mide por mili segundos
70); esto tiene que ir dentro del botón
b.
Código PHP:
b.onRollOver = function() {
intervalo_der = setInterval(mover_derecha, 70);
};
bueno asta aquí la explicación aun me dejo muchas cosas pero creo que por hoy es suficiente XD
te dejo este código para ver como lo interpretas
Código PHP:
onEnterFrame = function () {
manilla._rotation += 5;
};
var direccion:Boolean;
b.onRollOver = function() {
direccion=true
intervalo = setInterval(mover, 70);
};
b.onRollOut = function() {
clearInterval(intervalo);
};
b2.onRollOver = function() {
direccion=false
intervalo = setInterval(mover, 70);
};
b2.onRollOut = function() {
clearInterval(intervalo);
};
function mover() {
if (direccion) {
fondo._x += 5;
if (fondo._x>600) {
fondo._x = 600;
clearInterval(intervalo);
}
} else {
fondo._x -= 5;
if (fondo._x<100) {
fondo._x = 100;
clearInterval(intervalo);
}
}
}
si no entiendes algo dímelo para mejorar mis explicaciones y así mejorar XD