Я сделал простые кнопки перетаскивания цветов, где, если пользователь перетаскивает определенные кнопки, он будет определять цвет на основе того, какой пользователь перетаскивает и применять его к объекту, где пользователь опустите цвет. Тем не менее, я не могу понять, почему цвет меняется на черный, когда я выбираю кнопку и перетаскиваю ее на один объект в сцене, он станет черным, даже если я уже определил цвет кнопок.Изменение цвета объектов на основе цвета as3
Как я могу это решить?
Вот код, который я использую (я использую это на CS6):
var array_objects:Array = new Array(firstRectangle_mc, secondRectangle_mc, thirdRectangle_mc, fourthRectangle_mc);
var hit_object:Array = new Array();
var color_x:int;
var color_y:int;
addListeners(red_btn, black_btn, yellow_btn);
function addListeners(... objects):void
{
var color:Array = new Array("0xFF0000", "0x000000", "0xFFFF00");
for (var i:int = 0; i < objects.length; i++)
{
var input:TextField = new TextField();
input.text = color[i];
input.visible = false;
objects[i].addChild(input);
objects[i].addEventListener(MouseEvent.MOUSE_DOWN, onColorMouseDown);
objects[i].addEventListener(MouseEvent.MOUSE_UP, onColorMouseUp);
}
}
function onColorMouseDown(e:MouseEvent):void
{
hit_object = [];
color_x = e.currentTarget.x;
color_y = e.currentTarget.y;
e.currentTarget.startDrag();
}
function onColorMouseUp(e:MouseEvent):void
{
e.currentTarget.stopDrag();
for (var i:int = 0; i < array_objects.length; i++)
{
if (e.currentTarget.hitTestObject(array_objects[i]))
{
hit_object.push(array_objects[i]);
}
}
e.currentTarget.x = color_x;
e.currentTarget.y = color_y;
var changeColor:ColorTransform = hit_object[hit_object.length - 1].transform.colorTransform;
changeColor.color = e.currentTarget.text;
hit_object[hit_object.length - 1].transform.colorTransform = changeColor;
}
Вот ссылка на демо:
Ваш ответ высоко ценится!
Большое спасибо
Вы пытаетесь назначить строковое значение для целого var. Это приведет к 0, поэтому ваш цвет будет всегда черным. Вы должны использовать: 'changeColor.color = parseInt (e.currentTarget.text, 16);' –