Тебе действительно нужно переделать весь этот класс. У вас есть весь ваш код и методы, определенные непосредственно в конструкторе, некоторые имена экземпляров не определены и т. Д. Мне интересно, как вы получили это для компиляции. В качестве обозначения не ставьте Class в названии вашего класса AS.
Вам нужен класс ColorBox, который обрабатывает такие простые вещи, как ролловер и т. Д., Для самостоятельного управления цветом. Оставьте создание / размещение поля вне одного класса ColorBox.
Вот переделка того же класса, которая отлично работает в Flash Player 10. Я разделил вещи на два класса. Некоторые из названий / стилей, с которых вы начали, все еще в игре. Я не переписывал каждую строку.
ColorBox - это коробка. Вот и все. Он не делает ничего, кроме управления цветом.
ColorBoxRoot - корневой класс документа. Установите свой FLA для этого класса и позвольте разорвать. Откройте новый флаг для проверки. Я удалил код кнопки, а также код текстового поля, но добавил трассировку, где раньше было текстовое поле.
Надеюсь, это поможет!
// ColorBox.as
пакет {
import flash.display.MovieClip;
импорт flash.display.Sprite;
импорт flash.events. *;
[Event(name="colorChange")]
public class ColorBox extends MovieClip{
// CONSTANTS
public static const COLOR_CHANGE:String = "colorChange";
public static const DEFAULT_WIDTH:uint = 20;
public static const DEFAULT_HEIGHT:uint = 20;
// PROPERTIES
private var _boxColor:uint = 0xFFFFFF;
public function get boxColor():uint{ return _boxColor; }
private var _lineColor:uint = 0x666666;
// CONSTRUCTOR
public function ColorBox(){
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
// EVENT LISTENERS
private function onAddedToStage(event:Event):void{
stage.addEventListener(MouseEvent.MOUSE_DOWN, setGrey);
stage.addEventListener(MouseEvent.MOUSE_UP, resetColors);
updateDisplay();
addEventListener(MouseEvent.ROLL_OVER, setGrey);
addEventListener(MouseEvent.ROLL_OUT, setDarkGrey);
}
// PRIVATE METHODS
private function resetColors(event:Event=null):void{
_boxColor = 0xFFFFFF;
updateDisplay();
}
private function setGrey(event:MouseEvent):void {
_boxColor = 0xCCCCCC;
updateDisplay();
dispatchEvent(new Event(COLOR_CHANGE));
}
private function setDarkGrey(event:MouseEvent):void {
_boxColor = 0x666666;
updateDisplay();
dispatchEvent(new Event(COLOR_CHANGE));
}
private function updateDisplay():void {
graphics.clear();
graphics.lineStyle(1, _lineColor);
graphics.beginFill(_boxColor, 1);
graphics.drawRect(0,0,20,20);
graphics.endFill();
}
}
}
// ColorBoxRoot.as
пакет {
импорт flash.events.Event;
импорт flash.display.MovieClip;
/**
* Document root class; Create a new FLA (empty) and set this class as the document root
*/
public class ColorBoxRoot extends MovieClip{
// STAGE OBJECTS
//public var Grey_btn:DisplayObject;
//public var DarkGrey_btn:DisplayObject;
// CONSTRUCTOR
public function ColorBoxRoot(){
addEventListener(Event.ADDED_TO_STAGE, onAddedToStage);
}
// EVENT LISTENERS
/**
* Called once the swf stage is ready
*/
private function onAddedToStage(event:Event):void{
initializeUI();
createGrid();
}
// PRIVATE METHODS
/**
* Always try to initialize your UI in a method so you can recall it later to "reset" things, if needed
*/
private function initializeUI():void{
//Grey_btn.buttonMode = true;
//DarkGrey_btn.buttonMode = true;
}
/**
* Creates the ColorBox grid
*/
private function createGrid():void{
var xpos:Number;
var xposStart:Number = 20; // Initial Placement of grid along x axis
var ypos:Number = 100; // Initial Placement of grid along y axis
var xNum:Number = 10; // Size of Grid across in squares
var yNum:Number = 10; // Size of Grid across in squares
var colorBox:ColorBox;
for (var yaxis:Number = 1; yaxis <= yNum; yaxis++) {
xpos = xposStart;
for (var xaxis:Number = 1; xaxis <= xNum; xaxis++){
// Draw the square
colorBox = new ColorBox();
colorBox.addEventListener(ColorBox.COLOR_CHANGE, onBoxColorChange);
colorBox.name = "box" + xaxis + "_" + yaxis; //jcbii: give it an identifiable name; just for fun
colorBox.x = xpos;
colorBox.y = ypos;
addChild(colorBox);
xpos += ColorBox.DEFAULT_HEIGHT; //jcbii: never hardcode these values; use dynamic values as much as possible
}
ypos += ColorBox.DEFAULT_WIDTH; //jcbii: never hardcode these values; use dynamic values as much as possible
}
}
private function onBoxColorChange(event:Event):void{
trace(event.target.name, ColorBox(event.target).boxColor);
}
}
}