Есть у меня класс с помощью которого я создаю кнопки внутри флешки. Все работает хорошо,но необходимо сделать так что бы после нажатия кнопки она окрашивалась в другой цвет и после этого не реагировала на hover и клики. Если же нажать другую кнопку, та что была неактивна окрашивалась в исходный цвет и становилась опять активной. Знаю что все это решается через флаги, но вот как в моей ситуации поступить даже не представляю. Где их прописывать, внутри класса кнопок или в теле флешки?
вот так выглядит главный as скрипт(он находится в первом и единственном кадре моей флешки) :

Код AS3:
import flash.display.Sprite;
import flash.display.MovieClip;
import flash.events.Event;
import flash.events.ProgressEvent;
import com.greensock.*;
import com.greensock.dataTransfer.*;
import com.usesystems.*;
var pre:Preload;
var xmlManager:XMLManager = new XMLManager();
xmlManager.addEventListener(Event.COMPLETE, onComplete);
xmlManager.load("banner.xml");
var imgName:Array=new Array ;
var btnName:Array=new Array ;
var descTxt:Array=new Array ;
var bgColor:Array=new Array ;
var imgLink:Array=new Array ;
var pictPos:Array=new Array ;
function onComplete(event:Event):void {
var objArray:Array=xmlManager.parsedObject.item;
for (var i:int=0; i<objArray.length; i++) {
imgName.push(objArray[i].img);
btnName.push(objArray[i].btnname);
descTxt.push(objArray[i].desc);
bgColor.push(objArray[i].bgcolor);
imgLink.push(objArray[i].href);
}
pre=new Preload(imgName);
pre.addEventListener("preloadProgress", onPreloadProgress);
pre.addEventListener("preloadComplete", onPreloadComplete);
//trace("current image is: "+imgName[0]);
}
function onPreloadProgress(e:Event) {
textfield.text=e.target.percLoaded+"% loaded";
this.loaderBar.width=e.target.percLoaded*2;
}
function onPreloadComplete(e:Event) {
this.loaderBar.width=100*2;
textfield.text="Loading complete";
pre.removeEventListener("preloadProgress", onPreloadProgress);
pre.removeEventListener("preloadComplete", onPreloadComplete);
//trace(pre.objects);
showImages(pre.objects);
showButtons();
}
function showImages(o:Array) {
var photoContainer:MovieClip = new MovieClip();
var imgWidth=600;
var imgHeight=stage.stageHeight;
photoContainer.x=295;
photoContainer.y=0;
//photoContainer.alpha=0;
addChild(photoContainer);
for (var i:int=0; i<o.length; i++) {
o[i].width=imgWidth;
o[i].height=imgHeight;
o[i].y=imgHeight*i;
pictPos.push(imgHeight*i);
photoContainer.addChild(o[i]);
}
//trace(pictPos[1]);
}
function showButtons() {
var btn:uButton;
var btnHeight=stage.stageHeight/btnName.length;
for (var i:int=0; i<btnName.length; i++) {
addChild(btn=new uButton(btnName[i],0xb72947,0x6b6d75,0x545660,294,btnHeight-1,"Arial",11,0xffffff,btnHeight*i));
}
}
а вот так класс кнопок:

Код AS3:
package com.usesystems{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFormat;
import flash.events.MouseEvent;
import flash.text.TextFormatAlign;
import flash.text.TextFieldAutoSize;
import flash.ui.Mouse;
import com.greensock.*;
public class uButton extends Sprite {
public var text:TextField;
public function uButton(label:String,activeColor:int=0xddbbff,color:int=0xbbddff,
hoverColor:int=0xffddbb,width:int=200,height:int=200,
font:String="Helvetica",fontSize:Number=24,fontColor:int=0x333333,
buttonY:Number=0,buttonX:Number=0):void {
var box:Sprite=new Sprite ;
box.graphics.beginFill(color);
box.graphics.drawRect(0,0,width,height);
box.mouseChildren=false;
x=buttonX;
y=buttonY;
text=new TextField ;
text.selectable=false;
var newTextFormat:TextFormat=new TextFormat(font,fontSize,fontColor);
text.defaultTextFormat=newTextFormat;
text.text=label.toUpperCase();
text.autoSize=TextFieldAutoSize.LEFT;
text.y=height/2-text.textHeight/2;
addChild(box);
addChild(text);
addEventListener(MouseEvent.MOUSE_DOWN, buttonOnClick);
addEventListener(MouseEvent.MOUSE_UP, buttonOutClick);
addEventListener(MouseEvent.ROLL_OVER, buttonOnHover);
addEventListener(MouseEvent.ROLL_OUT, buttonOutHover);
function buttonOnHover(e:MouseEvent = null):void {
Mouse.cursor="button";
changeColor(box,hoverColor);
}
function buttonOutHover(e:MouseEvent = null):void {
Mouse.cursor="arrow";
changeColor(box,color);
}
function buttonOnClick(e:MouseEvent):void {
addEventListener(MouseEvent.ROLL_OUT, buttonOutRoll);
}
function buttonOutRoll(e:MouseEvent):void {
removeEventListener(MouseEvent.ROLL_OUT, buttonOutRoll);
}
function buttonOutClick(e:MouseEvent):void {
changeColor(box,activeColor);
removeEventListener(MouseEvent.ROLL_OUT, buttonOutRoll);
}
function changeColor(object:Object,color:int):void {
TweenMax.to(object, 0.2, {tint:color});
}
}
}
}