AS3 Проверить, имеют ли два видеоклипа одинаковый цвет?

Я пытаюсь сделать игру со связью точек, и у меня возникла загвоздка.

Как я могу проверить, имеют ли два фрагмента ролика одинаковый цвет? Используя colorTransforms, я сделал так, что когда вы наводите курсор на одну точку, она становится зеленой, а если вы наводите курсор на следующую правильную точку, эта точка также становится зеленой, а остальные остаются красными.

Когда две точки одного цвета (зеленый), мне нужна функция, которая изменяет линию, соединяющую обе точки, на видимую. Как мне написать условные операторы?

Вот мой код:

line1.visible = false;

var red:ColorTransform = new ColorTransform();
red.color = 0xFF0000;

var green:ColorTransform = new ColorTransform();
green.color = 0x00FF00;

dot1.addEventListener(MouseEvent.MOUSE_OVER, color1Toggle, false, 0, true);
dot2.addEventListener(MouseEvent.MOUSE_OVER, color2Toggle, false, 0, true);

function color1Toggle(event:Event):void{
    dot1.transform.colorTransform = green;
    dot2.transform.colorTransform = red;
}

function color2Toggle(event:Event):void{
    dot2.transform.colorTransform = green;
}

Поэтому, когда точки dot1 и dot2 зеленые, я хочу, чтобы видимость line1 изменилась на true.

Какие-либо предложения? Спасибо :)


person Teegan Lincoln    schedule 06.05.2013    source источник
comment
Я бы использовал специальный параметр в ваших MC или вспомогательные данные, которые сказали бы, какого цвета MC, без каких-либо барабанных танцев вокруг содержимого MC. Вы обновляете этот параметр, когда хотите, чтобы ваш MC изменил рамку или преобразование цвета. И вызывайте метод проверки для любой пары ваших MC всякий раз, когда один из них меняет свой цвет.   -  person Vesper    schedule 06.05.2013


Ответы (1)


function color1Toggle(event:Event):void{
    dot1.transform.colorTransform = green;
    dot2.transform.colorTransform = red;
    checkSameColors()
}

function color2Toggle(event:Event):void{
    dot2.transform.colorTransform = green;
    checkSameColors()
}

function checkSameColors():void {
    if (dot2.transform.colorTransform.color ==   dot1.transform.colorTransform.color) {
       //same color
       if (dot1.transform.colorTransform.color == 0x00FF00   ) {
          //both are 0x00FF00
           line1.visible = true;
       }
    }
}

Это не общий код, но он отвечает на ваш вопрос.

person RafH    schedule 06.05.2013
comment
Спасибо! Работает шарм. Мне также удалось заставить его работать с изменением видимости точек, но мне это больше нравится. Еще раз спасибо! - person Teegan Lincoln; 06.05.2013