Stanmx

Buscando la accesibilidad

Solución a problema con hitTest

Publicado en flash actionscript el 15/08/06 a las 03:51 pm
Logo de Flash

Bueno, despues de una larga y desesperante investigación llegue a los siguientes resultados, los cuales publico por si alguien cae en el mismo problema y busca una solución rapida a su problema. (ni tan rapida, me tomo 6 dias encontrarla)

Definitivamente algo que no falla a la hora de programar en Macromedia Flash es la prueba y error y estar contantemente revisando que hace cada instrucción con la sección de ayuda que viene incluida en Flash. (F1 para mas referencia)

Como mencione en el post anterior tenia un problema con hitTest () el cual no podia controlar por el consumo de recursos.

Pues bien, lo primero que hice fue buscar por otro lado, otra forma de hacer lo que queria. Investigando en 5 foros y posteando en 3 de ellos, llego la solución y nuevas ideas. Principalmente de FlashLA.

Lo primero que hice fue meter mi scroll de movieclip y el movieclip de texto en un nuevo movieclip. A este movieclip lo meti en otro nuevo movieclip y le puse el nombre de instancia contenido. Todo esto lo aloje en una layer llamado contenidos.

Despues en un nuevo layer llamado actions coloque el siguiente codigo:

contenido._visible = 0;
contenido._alpha = 0;
this.onMouseMove = function() {
if((this._xmouse>=contenido._x)&&(this._xmouse<=contenido._x+contenido._width)
&&(this._ymouse>=contenido._y)&&(this._ymouse<=contenido._y+contenido._height)){
  contenido._visible=1  
   }else{
      contenido._visible = 0
	  contenido._alpha = 0
      }
};

contenido.onEnterFrame = function(){
	if (contenido._alpha<90) { 
	contenido._alpha+= 5; 
	} 	
}

Lo que hace este codigo es hacer invisible el movieclip contenido, y cuando pasas el cursor sobre el lo hace visible pero tambien le va subiendo el alpha de 0 a 90.

Debo decir que me ha funcionado de maravilla. En el transcurso de estos dias con Flash he aprendido bastante, quisas valga la pena hacer alguna aplicacion web con flash y actionscript.

12 comentarios

Octavio Alvarez

dijo el 15/08/06 a las 07:29 pm

Felicidades, Stan! Cuándo nos muestras el Flash como quedó? :)

stan

dijo el 16/08/06 a las 08:06 pm

En cuanto lo tenga listo lo mostrare.

kevin

dijo el 22/08/06 a las 06:05 pm

stan me podrias mandar todos los videos de alizee que tengas y yo te congratulare

stan

dijo el 23/08/06 a las 11:31 am

alexander: pues ya estuvieras descargando google earth, identificando tu pais, tu estado, tu municipio y por ultimo una zona que reconozcas y de ahi partir a encontrar el camino a casa.

Kevin: no tengo idea de que videos de alizee hablas. :S

Gerardo

dijo el 24/08/06 a las 12:51 pm

Mmmm igual no entendi bien pero lo que yo haria con el movie clip asi de entrada se me ocurre un boton invisible dentro del movie clip que contiene tu area de scroll asi nomas pongo la accion que quiereo dentro del onMouseOver lo segundo poner la propiedad para ese boton useHandCursor = false; para que no salga la manita (si no la quieres claro) y creo que seria mas o menos todo lo que a mi se me ocurre por el momento.

P.D. y respecto al codigo que tienes yo meteria la accion contenido.onEnterFrame dentro del onMouseMove en la parte donde se cumple la condicion de estar sobre el clip (asi solo ejecutarias el onEnterFrame cuando se cumpla la condicion de estar sobre el) y una vez que alcance el maximo alpha borraria ese onEnterFrame con "delete contenido.onEnterFrame" para que no me lo ejecute más hasta que se vuelve a repetir la accion de salir y volver a entrar al clip

Algo así

contenido._visible = 0;
contenido._alpha = 0;
this.onMouseMove = function() {
if ((this._xmouse>=contenido._x) && (this._xmouse<=contenido._x+contenido._width) && (this._ymouse>=contenido._y) && (this._ymouse<=contenido._y+contenido._height)) {
contenido._visible = 1;
contenido.onEnterFrame = function() {
if (contenido._alpha<90) {
contenido._alpha += 5;
}
if(contenido._alpha >=90){
delete contenido.onEnterFrame;
}
};
} else {
contenido._visible = 0;
contenido._alpha = 0;
}
};

Gerardo

dijo el 24/08/06 a las 12:52 pm

no se puso todo ahi va de nuevo....

contenido._visible = 0;
contenido._alpha = 0;
this.onMouseMove = function() {
if ((this._xmouse>=contenido._x) && (this._xmouse<=contenido._x+contenido._width) && (this._ymouse>=contenido._y) && (this._ymouse<=contenido._y+contenido._height)) {
contenido._visible = 1;
contenido.onEnterFrame = function() {
if (contenido._alpha<90) {
contenido._alpha += 5;
}
if(contenido._alpha >=90){
delete contenido.onEnterFrame;
}
};
} else {
contenido._visible = 0;
contenido._alpha = 0;
}
};

stan

dijo el 28/08/06 a las 10:22 am

Gerardo, interesante punto de vista, creeme que intente hacerlo de muchas maneras antes de hacerlo publico aqui. dure mas de una semana intentando resolver ese problema. Probare con lo que mencionas haber que sale :D

Gerardo

dijo el 29/08/06 a las 10:55 pm

Saludos stan,

Intente poner el codigo que hice modificando el tuyo, pero por alguna razon no lo despliega todo.

stan

dijo el 30/08/06 a las 10:18 am

Gerardo, lo revisare hoy por la tarde, ya que yo lo desarrolle en flash 8 y no en flash mx 2004.

Hay diferencias en el codigo.

Gerardo

dijo el 03/09/06 a las 12:22 am

Si mal no recuerdo no, de hecho el que te mande lo probe en flash 8 y no marco ningun error, por lo que asumo que esta correcto... espero te funcione

Kariz

dijo el 27/06/07 a las 07:30 pm

Hi, stanmx.com Flash Developers

Please help me this ;
I am downloading
http://www.braingiants.com/
contentslider.fla but
not chaging this "contentslider"
_xmouse and _ymouse not work flash why?

I want to; _xmouse and _ymouse scrolling "contentClip"
file fla or code.
Thank you very much.

//This is a original code:
Stage.scaleMode = "noScale";
var myListener = new Object();
myListener.onResize = function() {
updateLocations();
};
Stage.addListener(myListener);
updateLocations = function () {
initialWidth = Stage.width;
initialHeight = Stage.height;//75;
currentWidth = Stage.width;
currentHeight = Stage.height;
contentWidth = pHorizontal.pictureBig._width;
pHorizontal._y = 0;
if (pHorizontal._width newX = 0;
} else {
positionContent();
newX = Math.round(initialWidth/2-pHorizontal._width/2);
}
// end else if
};
updateLocations();
buffer = 0;
this.onMouseMove = function() {
if (this._xmouse>Math.floor((initialWidth-currentWidth)/2) && this._xmousepHorizontal._y && this._ymouse if (pHorizontal._width>currentWidth) {
positionContent();
}
// end if
}
// end if
};
positionContent = function () {
mousePercent = (this._xmouse+(currentWidth-initialWidth)/2)/currentWidth;
availMovement = pHorizontal._width-currentWidth+buffer*2;
newX = Math.floor(-mousePercent*availMovement)-(currentWidth-initialWidth)/2+buffer*2/2;
};
if (pHorizontal._width>currentWidth) {
newX = Math.floor((initialWidth-currentWidth)/2)+buffer;
} else {
newX = Math.floor(initialWidth/2-pHorizontal._width/2);
}
// end else if
holder = pHorizontal._x;
easeContent = function () {
if (newX != pHorizontal._x) {
destx = newX;
posx = holder;
velx = (destx-posx)/4;
holder = holder+velx;
pHorizontal._x = Math.round(holder);
}
// end if
};
pHorizontal.onEnterFrame = function() {
easeContent();
};
updateLocations();
stop();

Stan

dijo el 28/06/07 a las 11:07 am

@Kariz: Do you check this http://www.stanmx.com/263.html

Send me the .fla in a email, to checking in action and see if i can help you or not.

Aporta tu comentario

Tu Email no sera publicado.

Opcional.