Comunidad de diseño web y desarrollo en internet online

AYUDA!!! - Mapa mosaico arrastrable como Google Maps

Citar            
MensajeEscrito el 28 Ago 2007 02:49 pm
Hola, me estoy VOLVIENDO LOCO... quiero lograr en flash el funcionamiento del motor de http://maps.google.com o http://maps.yahoo.com
Es decir.. recuadros (movieclips) individuales, que ocupan el escenario (y un poco mas para que no se vea cuando saltan al otro lado) Dragables, es decir "Arrastrables" con el mouse.

Código :

//=====Variables principales=====//
var cuadW:Number = 200;
var cuadH:Number = 200;
var mapa:MovieClip = _root.createEmptyMovieClip("mapa",1);
var centro:MovieClip = _root.mapa.createEmptyMovieClip("centro",2);
//===============================//

//=====Medicion del escenario=====//
//Stage.showMenu=false  << DESCOMENTAR
//Stage.align="TL"; << DESCOMENTAR
//Stage.scaleMode="noScale"; << DESCOMENTAR
var escW:Number = Stage.width;
var escH:Number = Stage.height;
var listener:Object = new Object();
listener.onResize = function(){
   //escW = Stage.width;
   //escH = Stage.height;
}
Stage.addListener(listener);
//===============================//

//=====Creo los cuadraditos=====//
crearCuadraditos = function(sW:Number,sH:Number,cW:Number,cH:Number){
   if (int(sW / cW) == (sW/cW)){
      cantX = int(sW / cW) + 2;
   }else{
      cantX = int(sW / cW) + 3;      
   }
   if (int(sH / cH) == (sH /cH)){
      cantY = int(sH / cH) + 2;
   }else{
      cantY = int(sH / cH) + 3;
   }
   cantTotal = cantX*cantY;
   var fila:Number = 0;
   var columna:Number = 0;
   for (var nro:Number = 1;nro<=cantTotal;nro++){
      var partevar:MovieClip = _root.mapa.attachMovie("cuad","parte"+nro,nro+2);
      partevar._x = (-cW) + cW*columna;
      partevar._y = (-cH) + cH*fila;
      if (nro/cantX == int(nro/cantX)){
         fila++;
         columna=0;
      }else{
         columna++;
      }
      partevar.onMouseMove = movParte;
   }
}
//===============================//

//=====Scroll del mapa=====//
var clikeado:Boolean = false;
movParte = function(){
   if (clikeado){
      if(!this.bandera){
         this.bandera = true;
         this.antX = this._x;
      }
      this.disX = _root.mapa.centro._xmouse;
      this._x = this.antX + this.disX;
      if (this._x < -2*cuadW){
         this.newX = escW;
         this._x = this.newX;
         this.antX = this.newX-this.disX;
      }
   }else{
      this.bandera = false;
   }
}

_root.onMouseDown = function(){
   _root.mapa.centro._x = _root.mapa._xmouse;
   _root.mapa.centro._y = _root.mapa._ymouse;
   clikeado = true;
}
_root.onMouseUp = function(){
   clikeado = false;
}
//===============================//

crearCuadraditos(escW,escH,cuadW,cuadH);


Ese es el codigo que hice hasta ahora.
Automaticamente el script mide el escenario y crea la cantidad de recuadros necesarios para ocupar el escenario (ordenarlos) y bordear con uno mas para tener espacio de hacer saltarlos hacia el otro lado a medida ke lo movemos.
Ahi solo funciona el movimiento horizontal (para facilitarme el debug) y solo hace saltar los cuadros cuando arrastramos el mapa hacia la izquierda.

El problema: Funciona cuando nos movemos lentamente. PERO cuando dezplasamos rapido la distancia entre _root.mapa.centro._xmouse aumento mientras el recuadro saltaba. por lo que los demas cuadros se siguieron dezplasando, por lo que se me corren.


Para probar mi codigo solo copien y peguen ese script en el fotograma 1 y cree un movieclip con un cuadrado de 200x200 pixels linkeado a actionscript como: "cuad"

Saludos, gracias y espero ke me ayuden :cry:

Por tomydb

92 de clabLevel

1 tutorial

 

Rosario, Argentina

firefox
Citar            
MensajeEscrito el 30 Ago 2007 02:31 pm
Que nadie me puede ayudar? :(

Por tomydb

92 de clabLevel

1 tutorial

 

Rosario, Argentina

firefox

 

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