Comunidad de diseño web y desarrollo en internet online

problema para mover un clip con el teclado

Citar            
MensajeEscrito el 12 Oct 2006 12:50 pm
supongo que esto es el ABC de cualquier juego en flash pero despues de mirar unos cuantos tutoriales no lo consigo, seguramente pq tienen mas complicacion de la que yo necesito e intento simplificarlo lo más posible pero parece ser que me paso...
creo un clip de pelicula llamado bola con 4 fotogramas clave en el interior en cada uno la bola cambia de color. pongo stop(); en cada uno de ellos y este codigo fuera del clip:

Código :

stop();
if (Key.isDown(Key.LEFT)){
   bola.gotoAndStop(1);
   if (bola._x >= 0){
      bola._x = bola._x - 10;
      }else{
   bola._x=960;
   }
}
if (Key.isDown(Key.UP)){
   bola.gotoAndStop(2);
   if (bola._y >= 0){
   bola._y = bola._y - 10;
   }else{
   bola._y=550;
   }
}
if (Key.isDown(Key.RIGHT)){
   bola.gotoAndStop(3);
   if (bola._x <= 960){
   bola._x = bola._x + 10;
   }else{
   bola._x=0;
   }
}

if (Key.isDown(Key.DOWN)){
   bola.gotoAndStop(4);
   if (bola._y <= 550){
   bola._y = bola._y + 10;
   }else{
   bola._y=0;
   }
}


luego me metere con las colisiones pero hasta que no consiga hacer que se mueva....
gracias de antemano.

Por larry55

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2006 01:09 pm
Meté todos los ifs dentro de un onEnterFrame, te quedaría así:

Código :

onEnterFrame = function () {
      //
      // Tu código (pero no el stop)
      //
};


Si no funciona, agragá un _root. antes del onEnterFrame :wink:

Por HernanRivas

Claber

3416 de clabLevel

26 tutoriales

 

Argentina

msie
Citar            
MensajeEscrito el 12 Oct 2006 02:16 pm
genial, muchas gracias, funciono sin el root, ahora a por las colisiones.
gracias

Por larry55

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 12 Oct 2006 11:04 pm
como era de esperar he tenido nuevos problemas con las colisiones. he añadido esto al codigo anterior:

Código :

with (_root.bola) {
      if (_root.m5.hitTest(getBounds(_root).xMax, _y, true)) {
          m5._visible=false;
      }
      if (_root.m5.hitTest(getBounds(_root).xMin, _y, true)) {
          m5._visible=false;
      }
      if (_root.m5.hitTest(_x, getBounds(_root).yMax, _x, true)) {
          m5._visible=false;
      }
      if (_root.m5.hitTest(_x, getBounds(_root).yMin, _x, true)) {
          m5._visible=false;
      }
   }

y funciona, haciendo que m5 desaparezca, pero no es eso lo que quiero que haga. lo que quiero que haga son dos cosas diferentes, una, que tocando m5 vaya al fotograma 2 por decir algo. pero si cambio m5.visible= false; por gotoAndStop(2); lo que hace es cambiar de color a la bola, osea, que va al fotograma 2 del clip de la bola no al de la escena.
la otra cosa que quiero hacer es que al tocarse no dejase pasar a la bola (pretendo hacer un rail del que no pueda salir).
gracias

Por larry55

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Oct 2006 11:34 am
Para que vaya al fotograma 2 del clip principal, _root.gotoAndStop(2)
Para lo de los raíles, seguro que esto te ayuda:
http://www.cristalab.com/foros/viewtopic.php?t=18593&highlight=hittest

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 19 Oct 2006 08:08 pm
bueno, despues de varios dias intentando solucionar los problemas para no aburrir al personal con dudas qeu pudiese solucionar solo, he llegado a la conclusion de que no puedo :P.
he conseguido hacer lo del "rail" de una forma un poco chapucera quizas, pero por ahora me vale, simplemente al tocar por arriba hago que baje, al tocar por abajo que suba etc.
el problema viene con lo que no son los muros... osea con aquellos clips que al tocar deberian hacer otras cosas. pregunte como se hacia para ir al fotograma (2) pq pensaba que sabiendo eso sabria hacer lo demas, pero parece que no.
por ejemplo:
with (_root.bola) {
if (_root.callejon.hitTest(getBounds(_root).xMax, _y, true)) {
removeMovieClip ("bola")
var clip = nivel.attachMovie("m", "m", nivel.getNextHighestDepth());
clip._x = 150;
clip._y = 50;
}
si callejon fuese un boton, bola desapareceria y se cargaria en las cordenadas sin problemas, pero no funciona, en cambio algo como:
with (_root.bola) {
if (_root.callejon.hitTest(getBounds(_root).xMax, _y, true)) {
i=2
_root.loadMovie(ruta+i+ext, "contenedorMapa");
}
si funciona haciendo que se cambie la imagen de fondo, pero tp lo hace como lo haria un boton pq carga la imagen pero borra todo lo demas, tanto la bola como los muros.
otro fallo que no se como arreglar esque al borrar bola se produce esto

Error: No se pudo efectuar la acción 'with' porque el objeto especificado no existe.

como podria hacer para que esto no pasase, pq en ocasiones descargaria bola y no la cargaria hasta mas adelante.

dejando claro lo que quiero hacer: quiero una habitacion con muros que no me dejen pasar (que ya se hacer) y puertas que al tocarlas, descarguen los muros y al personaje y cambien la imagen de fondo, la disposicion de los muros y la situacion inicial del personaje.
algo asi: (pero que funcionase claro)
omito xMin yMax e yMin.
with (_root.bola) {
if (_root.callejon.hitTest(getBounds(_root).xMax, _y, true)) {
i=2;
removeMovieClip ("personaje")
removeMovieClip ("muro")
_root.loadMovie(ruta+i+ext, "contenedorMapa");
var clip = nivel.attachMovie("personaje", "personaje", nivel.getNextHighestDepth());
clip._x = 150;
clip._y = 50;
var clip = nivel.attachMovie("muroEntrada", "muro", nivel.getNextHighestDepth());
clip._x = 1;
clip._y = 1;
}
}
seguramente todo el problema sea por el with (_root.bola), no logro saber como funciona.

bueno muchisimas gracias por la ayuda anterior y muchas mas si me ayudais en esto, que quizas sea mas trabajo de lo que pienso...

Por larry55

7 de clabLevel



 

firefox
Citar            
MensajeEscrito el 19 Oct 2006 08:11 pm
perdon, no se si hace falta que lo aclare pero, cuando digo que con botones funciona ese codigo me refiero a clips que se ejeutan al pulsar con el raton sobre ellos.

Por larry55

7 de clabLevel



 

firefox

 

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