Ver Mensaje Individual
  #14 (permalink)  
Antiguo 01/10/2008, 17:35
Avatar de Lynxcraft
Lynxcraft
 
Fecha de Ingreso: noviembre-2007
Ubicación: yecla murcia
Mensajes: 1.346
Antigüedad: 16 años, 5 meses
Puntos: 51
Respuesta: b.onrollOver= function() {fondo._x=5;} ayuda por favor

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_derecha70);
};
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_derecha70);
}; 
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(mover70);
};
b.onRollOut = function() {
    
clearInterval(intervalo);
};
b2.onRollOver = function() {
    
direccion=false
    intervalo 
setInterval(mover70);
};
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
__________________
Sobran las ideas cuando faltan ganas de trabajar en ellas
Lynxcraft