ActionScript - Использование «is» сравнительно в операторе switch? - PullRequest
2 голосов
/ 24 сентября 2010

У меня много объектов одного и того же пользовательского класса, и еще много объектов другого пользовательского классаЯ хотел бы создать оператор switch, чтобы определить, к какому из классов принадлежит объект.следующий код не компилируется, поэтому я не уверен, возможно ли это.является единственной альтернативой использованию операторов if?

function mouseClickEventHandler(evt:MouseEvent):void
     {
     switch (evt.currentTarget)
            {
            case (is customClassA):  trace("is instance of customClassA");  break
            case (is customClassB):  trace("is instance of customClassB");
            }
     }

Ответы [ 2 ]

12 голосов
/ 24 сентября 2010

Это должно работать:

function mouseClickEventHandler ( evt:MouseEvent ):void
{
    switch ( evt.currentTarget.constructor )
    {
        case CustomClassA:
            trace("is instance of customClassA");
            break;

        case CustomClassB:
            trace("is instance of customClassB");
            break;
    }
}

См. Object.constructor .

3 голосов
/ 27 сентября 2010
function clickHandler (event:MouseEvent):void
{
    var target:Object = event.currentTarget;
    switch (true)
    {
        case (target is CustomClassA):
            trace("is instance of customClassA");
            break;

        case (target is CustomClassB):
            trace("is instance of customClassB");
            break;
    }
}

Не уверен, что нужны скобки

...