質問

i've created an array. Each element is a button object. Is there a possibility to hook mouseclick on every array at the same time? I mean something like this.

var Objects:Array = new Array
Objects[0] = new button(parameters)
Objects[1] = new button(parameters)
Objects[2] = new button(parameters)

Objects[n].addEventListener(MouseEvent.CLICK, Clicked(n));

function Clicked(n,...)
{
      THECODE PROCEEEEDS for Objects[n]
}

I know that's not the clearest and most correct writing, but I'm asking if this is possible in similiar way? And how to do it? I know I can hook every mouseclick and then check if the clicked under the mouse is one of the array elements with for loop, but I'm asking about this way.

役に立ちましたか?

解決

Yes. You are unable to directly pass an index into a listener, but you can retrieve that via calling indexOf() inside it.

for each (b in Objects) b.addEventListener(MouseEvent.CLICK, clicked);
// note, you just put function name here!
public function clicked(e:MouseEent):void {
    var i:int=Object.indexOf(e.target);
    if (i==-1) {
        // panic behavior
        return; 
    }
    // now you can parse that index into something valuable
}
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top