1

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

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

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

任何帮助表示赞赏。

4

3 回答 3

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手动调用。

于 2012-09-26T18:28:03.030 回答
0

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

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

于 2012-09-26T17:55:23.277 回答
0

当我看到您的问题时,我的想法与上面 LondonDrugs 和 Roman 建议的想法相同。但是,您的问题很简单,因此无法回答。

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

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

My suggestion: You can set a cut point that you want to keep the order of index, then use a loop to find the index of all the image and keep it in an array. When the user finished playing, roll the index back to the cut point.

于 2012-09-27T01:30:52.557 回答