несколько объектов во вспышке (обнаружение объекта в событии) - PullRequest
0 голосов
/ 28 мая 2011

Я хочу создать что-то вроде царапины с 3 вариантами. Первый сайт отправляет информацию о том, какое поле является правильным. Затем Flash заменяет 2 фрагмента ролика «неправильным» изображением, а 1 - «хорошим». Я уже создал Evect нуля, но только работает на 1 объект. Я не знаю почему?

Я даже пытался дублировать функции событий. Лучший способ - получить индекс элемента. но как передать это в функцию события?

В основном это всего 3 черные плитки с изображениями на них. Но почему работает только первый объект?

Мой код:

function getFlashVars():Object {
    return Object(LoaderInfo(this.loaderInfo).parameters);
}

var m = 0;

function stopRys(myszka:MouseEvent):void {
    m = myszka.currentTarget.tabIndex;
    cover[m].removeEventListener(MouseEvent.MOUSE_MOVE, tworzMaske);
    image[m].removeEventListener(MouseEvent.MOUSE_MOVE, tworzMaske);
}

function startRys(myszka:MouseEvent):void {
    m = myszka.currentTarget.tabIndex;
    cover[m].addEventListener(MouseEvent.MOUSE_MOVE, tworzMaske);
    image[m].addEventListener(MouseEvent.MOUSE_MOVE, tworzMaske);
}

function tworzMaske(myszka:MouseEvent):void {
    m = myszka.currentTarget.tabIndex;
    image[m].visible = true;
    rysuj[m].graphics.lineStyle(1);
    rysuj[m].graphics.beginFill(0x000000);
    rysuj[m].graphics.drawCircle(mouseX, mouseY, 50);
    image[m].mask = rysuj[m];
}

var key1 = getFlashVars().key1;

var intWidth:Number = 200;
var intHeight:Number = 200;
var cover = new Array();
var image = new Array();
var rysuj = new Array();
var i:Number = 0;

for (i=0; i<3; i++) {
    cover[i] = new MovieClip();
    image[i] = new MovieClip();
    rysuj[i] = new Sprite();

    cover[i]._x = intWidth*i;
    cover[i]._y = 0;
    cover[i].tabIndex = i;
    cover[i]._width = intWidth;
    cover[i]._height = intHeight;
    cover[i].graphics.beginFill(0x000000);
    cover[i].graphics.drawRect(intWidth*i,0,intWidth,intHeight);
    cover[i].graphics.endFill();

    image[i]._x = intWidth*i;
    image[i]._y = 0;
    image[i].tabIndex = i;
    image[i]._width = intWidth;
    image[i]._height = intHeight;
    var myBitmapDataObject:przegrana = new przegrana(200, 200);
    var myImage:Bitmap = new Bitmap(myBitmapDataObject);
    image[i].addChild(myImage);

    addChild(cover[i]);
    addChild(image[i]);
    addChild(rysuj[i]);

    image[i].visible = false;

    image[i].addEventListener(MouseEvent.MOUSE_DOWN, startRys);
    cover[i].addEventListener(MouseEvent.MOUSE_DOWN, startRys);
    image[i].addEventListener(MouseEvent.MOUSE_OUT, stopRys);
    image[i].addEventListener(MouseEvent.MOUSE_UP, stopRys);

}

EDIT:

Теперь у меня есть странная проблема. События работают только на первом объекте так же, как и во всем флэш-фильме.

1 Ответ

0 голосов
/ 28 мая 2011

Вы не можете передавать пользовательские аргументы даже слушателям. Чтобы узнать, какой объект отправил событие, вы можете использовать myszka.target.

...