Comunidad de diseño web y desarrollo en internet online

Problema con detección de Rollover

Citar            
MensajeEscrito el 05 Ene 2009 02:45 pm
Tengo un problema al intentar detectar y activar un rollover que esta situado dentro de un mc que se activa con otro Rollover.
m2 es un objeto que esta situado dentro de m1 en el fotograma 10, lo que quiero es que al pasar el raton por m1 este se active y vaya frame por frame hasta el frame 10, una vez ahi, pueda detectar a m2 y hacer el trece, ya que en ningun momento deja de detectar a m1.

Código :

m1.onRollOver = function(){
   this.onEnterFrame = function(){
    if (this._currentframe != 10)
        this.nextFrame();
   }
}

m1.m2.onRollOver = function(){
        trace("esto funciona");
}

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 03:09 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 03:19 pm
Lo siento pero el problema que tengo no creo que tenga mucho que ver con lo que me expones. fijate que yo estoy hablando de dos rollovers, uno dentro de otro, en ningun momento hay evento de boton.

solisarg escribió:

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 04:13 pm
El rollOver es un evento de botón, al igual que el rollOut y el onPress

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 04:26 pm
Igualmente no le encuentro relción con el problema que yo tengo, alomejor sera que no soy tan experto como tu como muchos de los que pedimos ayuda por aqui, por eso pedimos un poco mas de tiempo y atención. Creo que no es tan complicado escrivir dos cortas lineas de texto, porque mi problema no creo que sea mucho mas extenso, en vez de decir... rompete la cabeza leyendo un par de paguinas de codigo del cual no entiendes ni 3/4 de las palabras.
Gracias por tu atencion.

solisarg escribió:

El rollOver es un evento de botón, al igual que el rollOut y el onPress

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 04:33 pm
Mira los dos encabezados de tus funciones:

m1.onRollOver = function(){
...
}
m1.m2.onRollOver = function(){
...
}

Contenedor: m1
Contenido: m1.m2

Ambos con evento de ratón, el primero inhibe al segundo. Mismo caso que el otro POST

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 04:42 pm
he probado de cambiar el orden pero sigue exactamente igual, sin ningun cambio, funciona todo exactamente igual, asi que eso de que el primero inhibe al segundoes erroneo.

Código :

m1.m2.onRollOver = function(){
        trace("esto funciona");
}
m1.onRollOver = function(){
   this.onEnterFrame = function(){
    if (this._currentframe != 10)
        this.nextFrame();
   }
}


solisarg escribió:

Mira los dos encabezados de tus funciones:

m1.onRollOver = function(){
...
}
m1.m2.onRollOver = function(){
...
}

Contenedor: m1
Contenido: m1.m2

Ambos con evento de ratón, el primero inhibe al segundo. Mismo caso que el otro POST

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 04:50 pm
El orden de la declaración da igual, el problema es el mismo. Básicamente no puedes poner eventos de ratón en un clip cuyo contenedor ya los tiene, tienes que ponerlo fuera, etc
Noto animosidad en tu respuesta, conclusiones rápidas y ganas de polemizar, si esa es la actitud abre un POST nuevo y prometo no contestarte.

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 04:55 pm
Perdon por si he escrito algo que te ha ofendido. Entonces tu respuesta es que lo que yo quiero hacer no se puede hacer? ya que todo esto esta puesto en el frame 1 de la escena.

solisarg escribió:

El orden de la declaración da igual, el problema es el mismo. Básicamente no puedes poner eventos de ratón en un clip cuyo contenedor ya los tiene, tienes que ponerlo fuera, etc
Noto animosidad en tu respuesta, conclusiones rápidas y ganas de polemizar, si esa es la actitud abre un POST nuevo y prometo no contestarte.

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 05:08 pm
Nop, es un típico problema de los menúes desplegables. Si quieres que el contenido reviba también eventos, tendrás que usar por ejemplo hitTest o poner ambos al mismo nivel, no uno contenido dentro de otro

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 05:51 pm
No hay manera y estuve probando un par de veces con el hitTest pero al hacer rollout no vuelve a funcionar el rollon.



Archivo FLA

solisarg escribió:

Nop, es un típico problema de los menúes desplegables. Si quieres que el contenido reviba también eventos, tendrás que usar por ejemplo hitTest o poner ambos al mismo nivel, no uno contenido dentro de otro

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 06:00 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 06:07 pm
el codigo que hay en la escena 1 primer fotograma es este, m1 es el cuadrado, m2 la redonda. como lo debo poner para que me detecte el onrollover encima de la redonda?

Código :

m1.m2.onRollOver = function(){
        trace("esto funciona");
}

m1.onRollOver = function(){
   this.onEnterFrame = function(){
    if (this._currentframe != 10)
        this.nextFrame();
   }
}
m1.onReleaseOutside = m1.onRollOut = function()
{this.onEnterFrame = function()
    {if (this._currentframe != 1)
        {this.prevFrame();}
}}


solisarg escribió:

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 06:11 pm
estuve probando un par de veces con el hitTest


Pon lo que probaste con el hitTest, lo que pusiste ya explicamos por que no funciona

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 06:32 pm
era algo parecido, lo que no lo guarde y estuve como un par de horas para que me saliera sin llegar a funcionar.

Código :

onRollOver = function(){
   {if(m1.hitTest(_xmouse, _ymouse, true))
        m1.nextFrame();}
   {if(m1.m2.hitTest(_xmouse, _ymouse, true))
      trace("esto funciona");
   }
}


solisarg escribió:

estuve probando un par de veces con el hitTest


Pon lo que probaste con el hitTest, lo que pusiste ya explicamos por que no funciona

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 07:14 pm
Estás usando un rollOver para detectar un hitTest que deberías chequear constantemente.
Ac
a va un ejemplo de dos cuadraditos todo en código para que copies y pegues en el primer frame de una peli nueva. En el rollOver se cambia el alpha, al hacer hitTest al cuadradito del medio se cambia de color. No le puse comentarios y dibujar los cuadraditos por code lo hacen un poqco largo, pero es simplongo:

Código ActionScript :

var contenedor:MovieClip = this.createEmptyMovieClip("contenedor", 1)
with(contenedor){
   beginFill(0xff0000)
   lineTo(200, 0)
   lineTo(200, 200)
   lineTo(0, 200)
   lineTo(0, 0)
   endFill()
}
var contenido:MovieClip = contenedor.createEmptyMovieClip("contenido", 1)
contenido._x = 50
contenido._y = 50
contenido.nr = 0
with(contenido){
   beginFill(0x00ff00)
   lineTo(100, 0)
   lineTo(100, 100)
   lineTo(0, 100)
   lineTo(0, 0)
   endFill()
}
contenido.onEnterFrame = function(){
  if(this.hitTest(_xmouse, _ymouse, true)) var col = new Color(this).setRGB(0x0000FF)
  else var col = new Color(this).setRGB(0x00FF00)
}
contenedor.onRollOver = function(){
  this._alpha = 50
}
contenedor.onRollOut = function(){
  this._alpha = 100
}


Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 08:01 pm
Me parece que empiezo a entender, ahora la pregunta seria ¿como se pone un objeto de dentro de un mc en un contenedor? porque al parecer esto no funciona.

Código ActionScript :

m1.onRollOver = function()
   {this.onEnterFrame = function()
   {if (this._currentframe != 10)
       this.nextFrame();
}}

m1.m2.onEnterFrame = function(){
   if(this.hitTest(_xmouse, _ymouse, true))
    trace("esto funciona");
}

m1.onReleaseOutside = m1.onRollOut = function()
{this.onEnterFrame = function()
    {if (this._currentframe != 1)
        {this.prevFrame();}
}}





solisarg escribió:

Estás usando un rollOver para detectar un hitTest que deberías chequear constantemente.
Ac
a va un ejemplo de dos cuadraditos todo en código para que copies y pegues en el primer frame de una peli nueva. En el rollOver se cambia el alpha, al hacer hitTest al cuadradito del medio se cambia de color. No le puse comentarios y dibujar los cuadraditos por code lo hacen un poqco largo, pero es simplongo:

Código ActionScript :

var contenedor:MovieClip = this.createEmptyMovieClip("contenedor", 1)
with(contenedor){
   beginFill(0xff0000)
   lineTo(200, 0)
   lineTo(200, 200)
   lineTo(0, 200)
   lineTo(0, 0)
   endFill()
}
var contenido:MovieClip = contenedor.createEmptyMovieClip("contenido", 1)
contenido._x = 50
contenido._y = 50
contenido.nr = 0
with(contenido){
   beginFill(0x00ff00)
   lineTo(100, 0)
   lineTo(100, 100)
   lineTo(0, 100)
   lineTo(0, 0)
   endFill()
}
contenido.onEnterFrame = function(){
  if(this.hitTest(_xmouse, _ymouse, true)) var col = new Color(this).setRGB(0x0000FF)
  else var col = new Color(this).setRGB(0x00FF00)
}
contenedor.onRollOver = function(){
  this._alpha = 50
}
contenedor.onRollOut = function(){
  this._alpha = 100
}


Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 08:19 pm
No hace falta que cites cada vez que respondes.

Siguiendo la lógica, si yo pongo

Código ActionScript :

contenedor.contenido.onEnterFrame = function(){ 
  if(this.hitTest(_xmouse, _ymouse, true)) var col = new Color(this).setRGB(0x0000FF) 
  else var col = new Color(this).setRGB(0x00FF00) 
} 


En vez de lo que puse (es decir uso la ruta para declarar el onEnterFrame) si funciona, entonces revisa lo que hiciste, faltará nombre de instancia, o lo de adentro no está donde tiene que estar, etc

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 08:45 pm
como tengo que decir al contenedor que tnga m1? y al contenido m1.m2?

Código :

var contenedor:MovieClip = this.createEmptyMovieClip("contenedor", 1)
with(contenedor){
   this.m1
}
var contenido:MovieClip = contenedor.createEmptyMovieClip("contenido", 1)
with(contenido){
   this.m1.m2
}

contenido.onEnterFrame = function(){
   if(this.hitTest(_xmouse, _ymouse, true))
    trace("esto funciona");
}
contenedor.onRollOver = function()
   {this.onEnterFrame = function()
   {if (this._currentframe != 10)
       this.nextFrame();
}}
contenedor.onReleaseOutside = m1.onRollOut = function()
{this.onEnterFrame = function()
    {if (this._currentframe != 1)
        {this.prevFrame();}
}}



solisarg escribió:

No hace falta que cites cada vez que respondes.

Siguiendo la lógica, si yo pongo

Código ActionScript :

contenedor.contenido.onEnterFrame = function(){ 
  if(this.hitTest(_xmouse, _ymouse, true)) var col = new Color(this).setRGB(0x0000FF) 
  else var col = new Color(this).setRGB(0x00FF00) 
} 


En vez de lo que puse (es decir uso la ruta para declarar el onEnterFrame) si funciona, entonces revisa lo que hiciste, faltará nombre de instancia, o lo de adentro no está donde tiene que estar, etc

Jorge

Por alphasky

32 de clabLevel



 

msie7
Citar            
MensajeEscrito el 05 Ene 2009 08:56 pm
Nooooooo !
Mi ejemplo es con código para que puedas hacer Copy&Paste, supongo que tu tienes los MC creados en Flash, simplemente pon un MC dentro de la línea de tiempo del otro con su correspondiente nombre de instancia

No cites en las respuestas ... ¿ya lo dije?

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 05 Ene 2009 09:04 pm
ya veo donde esta el problema. yo expongo que lo que tu llamas contenido no aparece hasta el ultimo frame. tu lo cargas desde el principio. mirate el swf que hay mas arriba

Por alphasky

32 de clabLevel



 

msie7

 

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