Ver Mensaje Individual
  #2 (permalink)  
Antiguo 22/03/2003, 17:13
argentum
 
Fecha de Ingreso: marzo-2003
Ubicación: Valencia, Venezuela
Mensajes: 23
Antigüedad: 21 años, 1 mes
Puntos: 0
Me respondo una pregunta

Saludos.
Ya que no he obtenido respuestas hasta el momento para aliviar parte de mi dolor de cabeza, y viendo que ha tenido algunas visitas el post, voy a responder una de mis interrogantes con el fin de mostrarles una solucion parcial al problema que yo mismo tenia.
Por cierto sigo sin entender sobre el prototype, me pueden explicar eso aun, por otra parte he visto algun codigo de los componentes de flash y no entiendo que les hace privados o publicos a los metodos y propiedades, esa pregunta pueden responderla tambien, Gracias
Ahora si con respecto al rollo de los objetos y el caso especial del movie clip, Segun Macromedia (tomado de un articulo de macromedia que no recuerdo cual fue), los Movie Clip no son considerados objetos como tal, por lo que no se les usa el metodo de objetos al que hacia referencia en mi pregunta, para los movieclip solamente se puede usar el metodo createEmptyMovieClip("NombreInstancia",NumerodePro fundidad); entre otros prefabricados, con esto se crea una instancia de un movieClip, hasta el momento todo muy bien el asunto planteado era como obtengo todos los beneficios de un movieClip (sobre todo el metodo onEnterFrame), y ademas agrego mis propias características, principalmente metodos para hacer el efecto de apagado, o movilizacion de movieclip, etc.
Entonces retomando, hasta el momento creamos una nueva instancia de un MovieClip (que segun macromedia, las clases son objetos ya encarnados, es decir, instancias, a diferencia de otros lenguajes que una clase se diferencia de su instancia), en fin, tenemos una instancia, el asunto es que se desea sobreescribir el metodo onEnterFrame (Override, en ActionScript no hace falta decirlo de manera explicita por los niveles de jerarquia que forman los objetos), para logar un efecto de desaparicion.
por otra parte deseo hacer un movieClip particular, es decir, que tenga la forma deseada y que no se haya puesto jamas sobre la "scena".
Para esto se escriben dos funciones generales que seran adjuntadas a cualquier elemento, las funciones seran paint() (que dibujara el objeto deseado), y onEnterFrame (que hara el efecto de desplazamiento en la linea de tiempo), finalmente estas funciones generales pasaran ahora a ser metodos del "Objeto" MyMovieClip, que es mi clip personal. esto se logara agregando a MyMovieClip.paint=_root.paint; (se usa _root ya que esta función fue definida en el nivel 0 y por orden de busqueda el interprete buscaria primero el metodo dentro de esta funcion y no en un nivel inferior), por otra parte adjuntaremos el metodo de transicion de la linea de tiempo onEnterFrame, de la siguiente manera: MyMovieClip.onEnterFrame=_root.onEnterFrame; (notese que en ninguna momento se esta escribiendo el par de parentesis cuando se hace la asignacion, en _root.onEnterFrame; se obvian los parentesis, esto se debe a que se realiza una asignacion mas no una ejecucion de una funcion, finalmente resta pintar nuestro propio movieclip y hacerlo desaparecer.
A continuación se mostrara el codigo que puede copiar y pegar en un nuevo proyecto de flash Mx, en un solo frame y con solo layer, es decir tal como se abra el proyecto solo hay que copiarlo seleccionando el unico frame que esta disponible y despues hacerlo correr.
En el primer Frame seleccionelo, luego seleccione el editor de codigo y pegue el siguiente programa:

function paint() { /*Funcion que pinta un triangulo, este codigo fue tomado de un ejemplo de pintar con funciones de Macromedia Flash, del manual de referencia de Flash, ojo solo estas funciones de pintado*/
beginFill (0x0000FF, 50);
lineStyle (5, 0xFF00FF, 100);
moveTo (this._x, this._y);
lineTo (300, 300);
lineTo (100, 300);
lineTo (this._x, this._y);
endFill();
moveTo(this._x,this._y);
lineTo(this._x+this._width,this._y);
}

/*esta funcion permite la transicion de la linea de tiempo, va haciendo transparente el movieClip al cual sera adjuntado*/
function onEnterFrame() {
this._alpha=this._alpha-10;
if (this._alpha<=0) {delete this.onEnterFrame}
}
/* Ahora si creamos la instancia deseada*/
/* con esta funcion creamos la instancia deseada, nuestro propio MovieClip, la unica diferencia es que por defecto este movieclip esta vacio con algunas propiedades pedefinidas, como visible en true, xscale en 100, width en 0, etc, a diferencia de otros lenguajes de programacion como ComponentPascal que todo lo envian a nil, o como Delphi que puede o no tener informacion valida, o c++ que deja cualquier informacion que se ubicara antes en ese trozo de memoria donde se esta cargando el nuevo, que por lo general era cero */
createEmptyMovieClip("MyMovieClip",0);/* el movie clip se llamara MyMovieClip y estara en el nivel 0 */
MyMovieClip.onEnterFrame = _root.onEnterFrame;/* se adjunta el metodo onEnterFrame a nuestro MovieClip */
MyMovieClip.paint=_root.paint; /* se adjunta el metodo de pintado de la instancia */
MyMovieClip.paint();/* ahora se manda a dibujar la instancia*/
MyMovieClip.onEnterFrame();/* se manda a hacer el efecto de paso en la linea de tiempo, virtualmente ya que fisicamente no se mueve la linea de tiempo, esto es un hilo de ejecucion o handler, un evento especial que se ejecuta independiente del resto del programa. */
Stop();/* se detiene las linea de tiempo fisica y suceden los efectos que se quieren */



Por otra parte existe la forma de adjuntar eventos a un movieclip o su caso especial un Boton, a través de la insercion o registro del elemento en el listener del Key, para mirar cuando se presiona una tecla, en cualquier instancia creada en tiempo de ejecución y propia (personal). Pero esto es algo que debo mirar un poco mas para explicarlo, ya que la verdad voy por paso, y este era el primer paso que queria avanzar.

Alen Acosta.