hola luco!
El error que te da al escribir los archivos de clase, se debe a que debes reemplazar todo lo que hay en el cuadro "Clase base" por el nombre de tu clase.
Es decir, reemplazar "flash.display.MovieClip" por esto "BotonAnimado". Ahora bien, es importante que la clase "BotonAnimado" extienda de MovieClip, sino te seguirá dando el otro error que también me comentas ("BotonAnimado debe ser una subclase de flash.display.MovieClip")
Para que quede más claro, te copio el código que escribí (basado en tu código) para realizar lo que te comentaba en mi respuesta anterior (y
aquí te dejo el link para descargar los archivos).
Primero la clase Main (Main.as), que es la clase de mi documento:
Código ActionScript :
package
{
import flash.display.MovieClip;
/**
* ...
* @author Debosotnas
*/
public class Main extends MovieClip
{
public var Boton1:BotonAnimado;
public var Boton2:BotonAnimado;
public var Boton3:BotonAnimado;
public function Main()
{
}
}
}Ahora la clase del/los botones (BotonAnimado.as):
Código ActionScript :
package
{
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.MouseEvent;
/**
* ...
* @author Debosotnas
*/
public class BotonAnimado extends MovieClip
{
var volver:Boolean;
public function BotonAnimado()
{
addEventListener(MouseEvent.CLICK, botonClick);
addEventListener(MouseEvent.MOUSE_OVER, botonMouseEncima);
addEventListener(MouseEvent.MOUSE_OUT, botonMouseFuera);
addEventListener(Event.ENTER_FRAME, siempre);
}
function botonClick(e:MouseEvent):void{
trace("pulsado");
}
function botonMouseEncima(e:MouseEvent):void{
volver = false
play();
}
function botonMouseFuera(e:MouseEvent):void{
volver = true;
}
function siempre(event:Event) {
if(currentFrame == totalFrames){
stop();
}else if(currentFrame == 9){
volver = false;
}
if(volver){
prevFrame();
}
}
}
}
Esta solución para el problema de "varias instancias (distintas en diseño) de la misma clase", te servirá para otros usos.
En cuanto al resultado que buscas lograr (el "oscurecer" un botón), lo puedes realizar de forma más eficiente con alguna librería de Tween como por ejemplo TweenMax. Te dejo el ejemplo de cómo se podría utilizar esta librería para lograr oscurecer un movieclip:
En la clase
BotonAnimado, se modificaría así los siguientes métodos:
Código ActionScript :
function botonMouseEncima(e:MouseEvent):void{
TweenMax.to(this, .7, {colorTransform:{brightness:1}});
}
function botonMouseFuera(e:MouseEvent):void{
TweenMax.to(this, .7, {colorTransform:{brightness:0.3}});
}
En el constructor, ya no necesitarías el método para el enterFrame, y te recomendaría utilizar MOUSE_OVER y MOUSE_OUT para los eventos de posición de mouse. También agregaría una línea de TweenMax para setear el nivel de "oscuridad" inicial para el botón. El constructor quedaría así:
Código ActionScript :
addEventListener(MouseEvent.CLICK, botonClick);
addEventListener(MouseEvent.MOUSE_OVER, botonMouseEncima);
addEventListener(MouseEvent.MOUSE_OUT, botonMouseFuera);
TweenMax.to(this, 0, {colorTransform:{brightness:0.3}});Saludos!