2013-04-12 60 views
0

我正在制作两个拾色器框。通过这两个颜色选择器框,我正在改变颜色特定的电影剪辑。我使用以下代码:访问AS3中的特定对象

for (var i:int = 0; i < 1; i++) 
{ 
    color_picker(i) 
} 
var colorBox:ColorPicker; 
var mc:MovieClip= new MovieClip() 
addChild(mc) 

function color_picker(p) 
{ 
    colorBox = new ColorPicker(); 
    mc.addChild(colorBox); 
    colorBox.x = 0 
    colorBox.y = p * 40; 
    p++; 
    colorBox.addEventListener(ColorPickerEvent.CHANGE, changeColor1) 
} 

var colorTransform1:ColorTransform = new ColorTransform(); 
function changeColor1(Event:ColorPickerEvent) 
{ 
    var color = "0x" +Event.currentTarget.selectedColor.toString(16); 
    colorTransform.color = color; 
    cards.getChildAt(0).transform.colorTransform = colorTransform; 
} 

通过此我我只访问最后一个拾色器框。 请指引我

回答

0

,因为你修改彩盒指针,当你说

colorBox = new ColorPicker(); 

您可以创建一个数组,并存储所有colorPickers那里,(或者不那么好看,但更简单的方法,尝试定义colorBox1和colorBox2。)

function color_picker(p) { 
    array.push(new ColorPicker()) 
    colorBox = array[array.length-1] 
    mc.addChild(colorBox); 
    colorBox.x = 0 
    colorBox.y = p * 40; 
    p++; 
    colorBox.addEventListener(ColorPickerEvent.CHANGE, changeColor1) 
} 
+0

您可以编辑这个? –

+0

是的。新增样本。 – csomakk

0
var mc:MovieClip= new MovieClip() 
addChild(mc) 
for (var i:int = 0; i < 1; i++) 
{ 
    color_picker(i) 
} 
function color_picker(p) 
{ 
    var colorBox = new ColorPicker(); 
    mc.addChild(colorBox); 
    colorBox.x = 0 
    colorBox.y = p * 40; 
    //p++; //NO NEED TO INCREMENT THIS VALUE, IT'S GETTING FROM THE LOOP 
    colorBox.addEventListener(ColorPickerEvent.CHANGE, changeColor1) 
} 
var colorTransform1:ColorTransform = new ColorTransform(); 
function changeColor1(Event:ColorPickerEvent) 
{ 
    var color = "0x" +Event.currentTarget.selectedColor.toString(16); 
    colorTransform.color = color; 
    cards.getChildAt(0).transform.colorTransform = colorTransform; 
}