Comunidad de diseño web y desarrollo en internet online

uso de this. en clases

Citar            
MensajeEscrito el 13 Ago 2006 10:51 pm
Hola, he leído varios tutoriales con ejemplos de clases en flash. Hasta ahora solo he podido hacer cosas con trace, quisiera usar las clases para otros propósitos mas elaborados.

Entiendo que hay una manera especial de usar this.algo pero no lo entiendo bien.

Podría alguien explicame este tema? o decirme donde hay alguna documentación al respecto. (Que no sean los livedoc de adobe, porque ya los consulté).

¡Gracias!

Por atlahua

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 13 Ago 2006 11:18 pm
this es para hacer referencia al objeto que estas utilizando... en clases no es la excepcion, se usa mas que todo para cuando renombras alguna propiedad o metodo, ejemplo

Código :

class MyClass{
      var prop:Number;
      function MyClass( prop:Number){
               trace(prop); // muestra el valor del parametro prop
               trace(this.prop); // muestra undefined
      }
}


Código :

import MyClass;
var clase = new MyClass(5);


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 14 Ago 2006 01:12 am
Maikel, te agradeczo la atención y el tiempo que invertiste en responder. El ejemplo es claro, pero creo que describí mal mi situación.

Tengo una animacion muy agradable para un clips hecha con AS. Quiero usar una clase, para poder utilizar esa acción en otros clips.

Tengo 3 dudas principales:

1.- ¿Es necesario utilizar extends MovieClip? ¿porqué?

2.- ¿que diferencia hay entre llamar a la clase con import o vincular el clip a la clase en la seccion de vincular con AS? ¿cual es mejor?

3.-¿Como llamo a la función desde flash (panel de acciones) para que se ejecute en cierto evento.? ¿la función de la clase, se carga en _root?

Gracias.

Aqui abajo esta mi codigo que quiero poner en una clase. Seguro que sabes que hice, pero lo comento por si le sirve a alguien mas.


Código :

//Código para extender el tamaño de un clip con easing
onClipEvent (load) {
   function deforma(sais:Number) {  //sais (de size... já) es el valor al que se quiere deformar la escala del clip
      if (this._xscale<sais) {
//mientras mas grande sea el numero en que se divide, se deformará mas lento
         this._xscale += ((sais-this._xscale)/3); 
      } else {
         this._xscale -= ((this._xscale-sais)/3);
      }
   }
   function normal() {   //esto devuelve al clip a su tamaño original
      this._xscale -= ((this._xscale-100)/8);
   }
   _root.resais = false; // al inicio no debe hacer nada, por eso esta en flase.
}
onClipEvent (enterFrame) {
   if (_root.resais == true) {  //el efecto se condiciona a un valor verdadero o falso
      deforma(1000);  //aqui se pasa el tamaño al que se quiere ampliar el clip.
   } else {
      normal();
   }
}
on (rollOver) {
   _root.resais = true;   //esto dispara la acción
}
on (rollOut) {
   _root.resais = false; //esto provoca que se ejecute la accion de restaurar el tamaño del clip.
}


¿como debería quedar la clase y como debería llamarlo en el .fla?


¡Gracias!

Por atlahua

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 14 Ago 2006 01:33 am

atlahua escribió:

1.- ¿Es necesario utilizar extends MovieClip? ¿porqué?

Vas hacer herencia, extends es para heredar lo debes hacer cuando quieras heredar... ¿Cuando lo debes hacer? mmm eso es lo debes determinar tu, cuando estes diseñando los objetos de tu aplicacion.

atlahua escribió:

2.- ¿que diferencia hay entre llamar a la clase con import o vincular el clip a la clase en la seccion de vincular con AS? ¿cual es mejor?

Supongo que te refieres a usar import en la definicion de la clase [en el archivo .as], pues una vez más usar import es porque decidiste usar composicion - que sencillamente es tener al menos una propiedad es instancia de la clase que estas "importando" - , vincular la clase es porque estas heredando la clase MovieClip, como dije al principio eso lo defines tu al definir los objetos, a veces es necesario heredar y otras veces lo mejor es usar composicion.


atlahua escribió:

3.-¿Como llamo a la función desde flash (panel de acciones) para que se ejecute en cierto evento.? ¿la función de la clase, se carga en _root?


No, debes crear un objeto (instancia como lo entiendas mejor) en el panel de acciones de dicha clase, y bueno ese objeto puede invocar los metodos publicos que le hayas definido, es lo que yo hice en el ejemplo anterior.

Te recomiendo leer esto:
Tutorial de programación orientada a objetos en ActionScript 2.0
y bueno conceptos de Programacion Orientada a Objetos, google te puede ayudar ;)

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 14 Ago 2006 01:56 am
Bueno olvidaba que pretendes heredar a MovieClip y es un poco diferente, no se si tengas problema con eso... asi que te doy un ejemplo super sencillo

ClipPelicula.as

Código :

class ClipPelicula extends MovieClip{
   function ClipPelicula(){
   }
   public function getCoords():Array{
      return [_x,_y];
   }
}


Clip es el movieclip en la biblioteca que esta vinculado a ClipPelicula

Código :

attachMovie("Clip","Clip1",getNextHighestDepth());
Clip1._x = 10;
Clip1._y = 100;
trace(Clip1.getCoords());


saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox

 

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