Comunidad de diseño web y desarrollo en internet online

deslizamiento de fondo

Citar            
MensajeEscrito el 03 Nov 2010 03:57 pm
saludos a tod@s de nuevo

estoy peleandome con un trocito de codigo y me hago un lio... a ver si alguien me puede echar una mano...

se trata de una imagen de fondo que se adapta al ancho de la pantalla. debido a que las pantallas cada vez son mas panoramicas, hay unos trozos (superior e inferior) de la imagen que no se ven y quiero que al mover el raton la imagen se mueva mostrandolos.

el codigo para que se mueva la imagen lo tengo claro. lo que no me aclaro es con la manera de definir los limites. os pongo el codigo y a ver si podeis ayudarme...

milchisimas gracias

Código ActionScript :

var aqui = this;

function mueveFondo() {
   //
   var yyFondo = fondo._y;
   var altoFondo = fondo._height;
   var altoStage = Stage.height;
   var eje:Number = altoFondo / 2;
   with (fondo) {
      y = yyFondo;
      _y = yyFondo;
   }
   //
   var dif = altoFondo - altoStage;
   //
   if (altoStage >= altoFondo) {
      trace("no hace nada");
   } else {
      if (_root._ymouse > (Stage.height / 2)) {
         fondo.onEnterFrame = function() {
            with (fondo) {
               y = -eje + aqui._ymouse;
               //if (y == (yyFondo - dif)){
               //   y = yyFondo - dif;
               //   _y = yyFondo - dif;
               //} else if (y > (yyFondo - dif)) {            
                  _y += (y - _y) * 0.1;
               //}
            }
         };
      } else if (_root._ymouse < (Stage.height / 2)) {
         fondo.onEnterFrame = function() {
            with (fondo) {
               y = -eje - aqui._ymouse;
               //if (y == (yyFondo + dif)){
               //   y = yyFondo + dif;
               //   _y = yyFondo + dif;
               //} else if (y < (yyFondo + dif)) {               
                  _y += (y - _y) * 0.1;
               //}
            }
         };
      }
   }
}

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 03 Nov 2010 03:59 pm
habia olvidado decir que el codigo asi como esta funciona bien (claro esta, la imagen no tiene topes y se sale por arriba o por abajo). las lineas comentadas son las que he puesto como limites y son las que hacen que, al descomentarlas, el fondo haga cosas raras. los limites no los tengo bien definidos, aunque pensaba que si...

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 05 Nov 2010 04:06 pm
alguna orientacion?

gracias

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 05 Nov 2010 06:04 pm

Código ActionScript :

var aqui = this; 
 
function mueveFondo() { 
   // 
   var yyFondo = fondo._y; 
   var altoFondo = fondo._height; 
   var altoStage = Stage.height; 
   var eje:Number = altoStage / 2; 
   with (fondo) { 
      y = yyFondo; 
      _y = yyFondo; 
   } 
   // 
   var dif = altoFondo - altoStage; 
   // 
   if (altoStage >= altoFondo) { 
      trace("no hace nada"); 
   } else { 
   fondo.onEnterFrame = function() { 
           if (_root._ymouse > eje) { 
      if(this._y < 0){            
         this._y ++;
         //solo te puse el límite, luego haces los ajustes para moverlo según la posición del mouse
      }else{
         delete this.onEnterFrame;
      }
            } else { 
      if(this._y + altoFondo > altoStage){            
         this._y --;
         //solo te puse el límite, luego haces los ajustes para moverlo según la posición del mouse
      }else{
         delete this.onEnterFrame;
      }    
            } 
      }; 
}

algo así, creo

Por nasho

Claber

908 de clabLevel

1 tutorial

Genero:Masculino  

Web Developer

firefox
Citar            
MensajeEscrito el 08 Nov 2010 01:24 pm
milgracias, creo que ya lo veo...

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 09 Nov 2010 08:05 pm
no me aclare con lo de nasho, pero he simplificado algo el codigo y me detecta los topes y se detiene al encontrarse con uno de los dos, pero una vez detenido no sigue moviendose. que me falta para que siga moviendose?

supongo que es reiniciar las operaciones

Código ActionScript :

y = -eje - aqui._ymouse;
_y += (y - _y) * 0.1;


pero no se donde ponerlas... los enterframe no son lo mio...

milchisimas gracias

Código ActionScript :

var aqui = this; 
 
function mueveFondo() { 
   // 
   var yyFondo = fondo._y; 
   var altoFondo = fondo._height; 
   var altoStage = Stage.height; 
   var eje:Number = altoFondo / 2; 
   with (fondo) { 
      y = yyFondo; 
      _y = yyFondo; 
   } 
   // 
   var dif = (altoFondo - altoStage)/2; 
   // 
   if (altoStage >= altoFondo) { 
      trace("no hace nada"); 
   } else { 
   fondoDins.onEnterFrame = function() {
      with (fondo) {
         if (_y >= (yyFondo - dif)) {
            y = (yyFondo - dif);
            _y = (yyFondo - dif);
         } else if (_y <= (yyFondo + dif)) {
            y = (yyFondo + dif);
            _y = (yyFondo + dif);
         } else {
            y = -eje - aqui._ymouse;
            _y += (y - _y) * 0.1;
         }
      }
   };
   } 
}

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox
Citar            
MensajeEscrito el 10 Nov 2010 01:03 pm
hola de nuevo

he encontrado una solución que puede no ser ortodoxa, pero me funciona, asi que, la posteo por si a alguien le sirve...

gracias a tod@s

Código ActionScript :

var aqui = this;  
  
function mueveFondo() {  
   //  
   var yyFondo = fondo._y;  
   var altoFondo = fondo._height;  
   var altoStage = Stage.height;  
   var eje:Number = altoStage / 2;  
   fondo._y = yyFondo;  
   }  
   //  
   var dif = altoFondo - altoStage;  
   //  
   aqui.onMouseMove = function() {
      if (altStage >= altFondo) {
         delete fondo.onEnterFrame;
      } else {
         fondo._y += ((-eje - aqui._ymouse) - fondo._y) * 0.1;
         if (fondo._y <= (yyFondo - dif)) {
            fondo._y = (yyFondo - dif);
            delete fondo.onEnterFrame;
         } else if (fondo._y >= (yyFondo + dif)) {
            fondo._y = (yyFondo + dif);
            delete fondo.onEnterFrame;
         } else {
            fondo.onEnterFrame = function() {
               this._y += ((-eje - aqui._ymouse) - this._y) * 0.1;
            };
         }
      }
   };
} 

Por kaquna

68 de clabLevel



Genero:Femenino  

firefox

 

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