将对象置于前端,同时在父级上保留相同的子索引。 AS3 / FLEX

时间:2012-09-26 17:35:16

标签: actionscript-3 flash flex actionscript

当我们点击图像时,它应该作为所选图像出现在前面,但我不想更改该图像的索引值

canvas1.setChilIndex(Image(event.target), numChildern-1) 

上述行正在更改所选图像的索引值并将其设置为最大值-1(例如:5-1 = 4作为索引值)。我需要替代上面一行,为图像保留相同的索引。

感谢任何帮助。

3 个答案:

答案 0 :(得分:1)

您可以做的是,在您的点击处理程序中存储单击的项目的索引,然后在下一次单击(或随时),将项目发送回其先前的索引:

var previousImg:Image;
var previousIndex:int;

function selectImage(img:Image):void {
    deselectImage(); //if there is already a selected image, put it back before moving this new one to the top

    previousImg = img;    
    previousIndex = canvas1.getChildIndex(img);
    canvas1.addChild(img); //brings it to the front
}

function deselectImage():void {
    if(previousImg){
        canvas1.setChildIndex(previousImage, previousIndex);
        previousImg = null;  //null the var in case you call this method manually
    }
}

所以在你的点击处理程序中,这样做而不是你问题中的那一行:

selectImage(Image(event.target));

使用此方法,只要您调用selectImage,它就会将最后一次点击一个回到它所属的位置。如果您愿意,也可以手动拨打deselectImage

答案 1 :(得分:0)

这是不可能的,因为在flash中,子索引是绘制顺序的唯一标准。

如果你想保持添加图像的顺序,你可以存储图像,例如,在数组中,然后每个下一个项目将按照添加的顺序具有索引。

答案 2 :(得分:0)

当我看到你的问题时,我有与LondonDrugs和Roman建议的相同的想法。但是,你的问题很简单,所以答案是不可能的。

如果我不知道应用程序的流程,情况会非常复杂。

例如,如果您在选择图像后的运行时将图像添加到画布,那么您希望回滚哪个索引顺序?

我的建议: 您可以设置要保持索引顺序的切割点,然后使用循环查找所有图像的索引并将其保留在数组中。用户完成播放后,将索引回滚到切割点。