1

検索機能付きのアプリを作成しています。検索条件に一致するものを配列からロードして画像を表示します。すべての画像はライブラリから読み込まれます。ボタンのように画像をクリックできるようにしたい。クリックしたら、フレーム 3 に移動し、どの画像がクリックされたかを変数整数に変更して、フレーム 3 の写真に関する情報を表示できるようにします。

imagesArray[i].addEventListener(MouseEvent.CLICK, imageClick);
function imageClick(event:MouseEvent):void
{
    gotoAndStop(3);
    current = i;
}

または同様の、ありがとう

4

2 に答える 2

0

はい、しかしそれは簡単ではありません。まず、ビットマップはイベントを処理しないため、リスナーを直接ビットマップ オブジェクトに割り当てることはできません。次に、そのような構文で使用できる「i」はありません。その「i」を自分で決定する必要があります。event.targetこれを行うには、クリックされたオブジェクトであるプロパティを解析します。Bitmap各オブジェクトを個別のオブジェクトにラップしSprite、これらのスプライトにリスナーを割り当ててから、解析event.targetして関連するオブジェクト参照を取得し、呼び出しでインデックスを取得して、indexOf()グローバルcurrent変数に割り当てます。

for (i=0;i<imageArray.length;i++) {
    var sp:Sprite=new Sprite();
    sp.addChild(imageArray[i]);
    // position "sp" correctly here
    addChild(sp);
    sp.addEventListener(MouseEvent.CLICK, imageClick);
}
function imageClick(e:Event):void {
    var content=e.target.getChildAt(0); // the object that was wrapped
    var i:int=imageArray.indexOf(content);
    if (i==-1) return; // OW, out of array
    current=i;
    gotoAndStop(3);
}
于 2013-08-13T10:03:31.753 に答える
0

関数がforループと同時に実行されないため、「current」を「i」に設定しても機能するかどうかはわかりません。

[i] を使用しているため、イベント リスナーを for ループに追加したと思いますか?

あなたができることは次のとおりです。

for (var i:int = 0; i < (howeverManyTimesToRun); i++)
{
    imagesArray[i].addEventListener(MouseEvent.CLICK, imageClick);
    imagesArray[i].myIndex = i;
}

そして、関数内(forループの外)

function imageClick (e:MouseEvent) {
    gotoAndStop(3);
    current = e.currentTarget.myIndex;
}

また、 for ループに追加したい場合があります

imagesArray[i].buttonMode = true;

マウスが画像の上に移動したときに、マウス カーソルを手の形に変更します。

于 2013-08-13T10:08:00.573 に答える