tutorial - Cómo funcionan las clases de Actionscript 3
codigos actionscript 3.0 para juegos (3)
La función que recibe el mismo nombre que la clase es el constructor. Es opcional, por lo que puede dejarlo fuera si no lo necesita. Se agregará un constructor predeterminado, que esencialmente no hace nada.
El constructor le permite escribir código que se ejecuta inmediatamente después de que se crea una instancia de la clase (es decir, cuando otro bit de código ejecuta el new ClassName()
. Normalmente lo usaría para inicializar algunas variables que utiliza la clase. Definir un constructor también le permite manejar argumentos de constructor, qué otro código puede pasar cuando usan el new
operador.
Necesito ayuda para entender cómo funcionan las clases en Actionscript 3. Entiendo que empiezas con "paquete" y por qué y luego vas a importar las librerías necesarias, y luego nombras la clase y declaras si es pública / privada y extiendes cualquier cosa.
Después de eso es lo que no entiendo. Parece que escribe " nombre de clase de función (pública) ()
No entiendo por qué haces esto y qué incluye las llaves.
Probablemente me haya perdido un poco de lectura anterior porque he leído un poco, pero parece que no puedo entenderlo.
¿Alguien podría tratar de explicarme? Gracias.
La función que tiene el mismo nombre que clase es un constructor . En llaves, básicamente es parte del código que se ejecutará instantáneamente cuando se creará el objeto. Intente buscar información sobre constructores, ellos existen, creo que en cada lenguaje de programación orientado a objetos (puedo estar equivocado), por lo que tiene muchos recursos.
También puedes leer sobre este concepto en Wikipedia .
Clases de ActionScript 3
La declaración del package
.
De acuerdo, entonces, como mencionaste, una clase debe estar envuelta por un package
1 . Esto nos da el primer bloque, donde necesita definir la clase.
package
{
// Your class here.
}
La declaración del package
refleja la ubicación de la clase relativa a .fla
2 . Por ejemplo, si tiene una carpeta "clases" dentro del mismo directorio que el proyecto .fla, las clases dentro de esa carpeta necesitarán una declaración de paquete que refleje eso:
package classes
{
// Your class here.
}
Definiendo la clase
Dentro de una declaración de paquete, puede insertar una clase. No confunda esto con el paquete en sí, que puede contener muchas clases; cada clase solo necesita tener su propio archivo con la misma declaración del paquete.
Una definición de clase se compone de hasta 5 partes:
- El espacio de nombres Una clase puede ser
internal
opublic
. Las clases dentro del mismo paquete solo pueden verinternal
claseinternal
, mientras quepublic
clasespublic
se pueden ver desde cualquier lugar del proyecto. - El nombre de la clase.
- Una clase base (opcional). Si se define una clase base, su nueva clase actuará como una extensión de esa clase, heredando todas las cualidades de la clase base.
- Una interfaz para implementar (opcional). Las interfaces son un tema avanzado, por lo que le sugiero que las olvide por ahora hasta que su AS3 y su OOP hayan evolucionado.
Si quisieras crear una clase llamada "Persona" dentro de las classes
paquete, terminaríamos con:
package classes
{
public class Person
{
// Class qualities here.
}
}
Propiedades
Las clases pueden contener propiedades. Las propiedades se definen con la palabra clave var
. Pueden pertenecer a uno de varios espacios de nombres (incluido el suyo) y se utilizan para contener valores que pertenecen a su clase. Las propiedades se encuentran comúnmente agrupadas juntas en la parte superior de su clase.
Nuestra clase de Person
puede disfrutar de las propiedades de height
y weight
:
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
}
}
Se puede acceder a estas propiedades a través de cualquier instancia de Person
que crees. Cada instancia tendrá su propio conjunto de estas propiedades.
Constructores de clase (creo que esto es lo que preguntas).
Los constructores se utilizan para contener la lógica que debe ejecutarse tan pronto como se crea una instancia de su clase. El constructor de la clase tiene el mismo nombre que la clase en sí. Debe ser public
y no devuelve nada. Los constructores pueden aceptar argumentos, que generalmente se utilizan para pasar referencias a dependencias para esa clase o valores requeridos.
package classes
{
public class Person
{
// Properties.
public var height:Number = 1.70;
public var weight:Number = 67.5;
// Constructor.
public function Person(height:Number, weight:Number)
{
this.height = height;
this.weight = weight;
}
}
}
Métodos .
Los métodos se utilizan para mantener la lógica que se puede ejecutar al llamar a ese método. Los métodos a menudo devuelven valores y pueden aceptar argumentos. Los métodos pueden pertenecer a cualquier espacio de nombre al que espere que las propiedades puedan pertenecer.
Es posible que deseemos poder determinar fácilmente el IMC de cada instancia de Person
que creamos, por lo que deberíamos crear un método para eso:
package classes
{
public class Person
{
// Properties.
public var height:Number = 170;
public var weight:Number = 65.5;
// Constructor.
public function Person(height:Number, weight:Number)
{
this.height = height;
this.weight = weight;
}
// Determine my BMI and return the result.
public function getBMI():Number
{
return weight / (height * height);
}
}
}
Instancias .
Ahora que hemos definido nuestra nueva clase, podemos crear instancias de esta clase utilizando la new
palabra clave. Esto se puede hacer desde cualquier lugar que pueda acceder a la clase Person
, que en este caso está en cualquier parte del proyecto porque hemos hecho que la clase sea public
.
Aunque la clase es public
, acceder a ella desde cualquier lugar fuera del paquete al que pertenece requerirá el uso de una declaración de import
. Esta declaración deberá ser utilizada dentro de cualquier clase que pertenezca a un paquete diferente. La declaración de import
sigue el mismo nombre utilizado para el package
e incluye el nombre de la clase que desea incluir al final:
import classes.Person;
Una vez que haya importado Person
, puede crear instancias de la misma y asignarlas a una variable con diferentes valores de height
y weight
:
var marty:Person = new Person(71, 1.76);
var bruce:Person = new Person(96.4, 1.72);
Entonces podemos obtener el IMC para cada persona que usa su método getBMI()
:
trace(marty.getBMI()); // 22.9
trace(bruce.getBMI()); // 32.6
1 Puede colocar clases fuera de un paquete al que se puede hacer referencia en el mismo archivo .as.
2 Puede agregar más rutas de origen, y los paquetes pueden ser relativos a eso.