Насколько я понимаю, в вашем коде используется простой объект MovieClip
(cal_mc имеет тип MovieClip
).
Краткий ответ: Нет свойства "color" на MovieClip
, поэтому ваше первое условие не выполняется.
Длинный ответ:
MovieClips по определению являются динамическими объектами, поэтому они могут иметь свойства, определенные во время работы вашего кода:
var custom:MovieClip = new MovieClip();
custom.potato = "I am a potato!"; // creates a new property "potato" and assigns it the value of "I am a potato".
trace(custom.potato); // outputs "I am a potato";
В MovieClip
нет свойства "color", поэтому ваш оператор условия ложен в теоретическом состоянии, но практически flash не выдает никаких ошибок, поскольку MovieClip
s может иметь свойства, назначенные во время выполнения, поэтому flash не могу знать, если вы не определили «цвет» где-либо.
Есть несколько решений:
- Либо создать пользовательский класс, расширяющий
MovieClip
, который будет содержать свойство color
, и некоторые методы для рисования нужной графики и логики для назначения правильного значения свойству color
по завершении рисования.
- Если ваша
MovieClip
- простая фигура, я предполагаю, что это - визуализируйте объект от MovieClip
до Bitmap
, а затем выберите первый пиксель (поскольку все пиксели простых фигур имеют одинаковый цвет ) из Bitmap
с bitmapData
.
Вот код для последнего: (этот код может потребовать доработки, это схема)
function sampleColorFromDisplayObject(display:DisplayObject):uint
{
var bd:BitmapData = new BitmapData(display.width, display.height, false, 0xFF0000);
bd.draw(display, new Matrix());
var color:uint = bd.getPixel(0, 0);
bd.dispose();
return color;
}
Имейте в виду, что из-за различных возможных форм и размеров этот код может потребовать доработки и может не работать должным образом с некоторыми формами. Я сделал так, чтобы код работал с максимально возможным количеством фигур, увеличив размер bitmapData и выбрав первый пиксель для учета определенных типов кругов и форм, определенных в IDE flash.