flex 3: передача значений в функцию с помощью окна предупреждения - PullRequest
2 голосов
/ 12 мая 2011

У меня есть функция, которая проверяет что-то, когда пользователь нажимает кнопку.если что-то найдено, появляется предупреждение о том, что оно найдено, и спрашивает, хотят ли они, чтобы это произошло, или отменяет действие, которое вызвало что-то.код выглядит следующим образом:

Alert.show(thisString1, "Conflict: Multiple Projects", 3, this, conflictAnswer);

при нажатии «Да» или «Нет» будет вызвана функция конфликта: ответ выглядит следующим образом:

private function conflictAnswer(event:CloseEvent):void
{
    if (event.detail == Alert.YES)
    {
        Alert.show(
    }
}

Мой вопросэто как передать некоторые переменные, которые содержатся в функции, которая отображает предупреждение?я попробовал что-то вроде этого:

Alert.show(thisString1, "Conflict: Multiple Projects", 3, this, conflictAnswer(Event, var1, var2));


private function conflictAnswer(event:CloseEvent, varA, varB):void
{
    if (event.detail == Alert.YES)
    {

    }
}

но это не сработало.

Кто-нибудь может мне помочь?

Спасибо Brds

РЕДАКТИРОВАТЬ После прочтения первого ответа я пришел к следующему:

answers[0] = cPositions[i][0];
answers[1] = cPositions[i][1];
var anAlert:Alert = Alert.show(thisString1, "Conflict: Multiple Projects", 3, this, conflictAnswer);
anAlert.data = {answers:Array};

, а затем функция dialogAnswer выглядит следующим образом:

private function conflictAnswer(event:CloseEvent):void
{
    var projectID:Number = event.currentTarget.answers[0];
    var positionID:Number = event.currentTarget.answers[1];
    if (event.detail == Alert.YES)
    {
        Alert.show(String(projectID + " | " + positionID));
    }
}

но это не работает ... есть идеи?

1 Ответ

3 голосов
/ 12 мая 2011

Alert.show() возвращает экземпляр предупреждения, в котором есть поле data, в котором вы можете установить свои данные:

var anAlert:Alert = Alert.show(thisString1, "Conflict: Multiple Projects", 3, this, conflictAnswer);
anAlert.data = {var1:var1, var2:var2};

Затем в обработчике событий вы можете получить свой объект данных:

var myData:Object = event.currentTarget.data;
var var1:Object = myData.var1;
var var2:Object = myData.var2;

Для вашего кода это будет выглядеть следующим образом:

answers[0] = cPositions[i][0];
answers[1] = cPositions[i][1];
var anAlert:Alert = Alert.show(thisString1, "Conflict: Multiple Projects", 3, this, conflictAnswer);
anAlert.data = {answers:answers};

, а затем:

private function conflictAnswer(event:CloseEvent):void
{
    var projectID:Number = event.currentTarget.data.answers[0];
    var positionID:Number = event.currentTarget.data.answers[1];
    if (event.detail == Alert.YES)
    {
        Alert.show(String(projectID + " | " + positionID));
    }
}
...