2013-05-06 5 views
0

Я пытаюсь подключить игру с точками, и я столкнулся с этой проблемой.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, чтобы изменить к истине.

Любые предложения? Спасибо :)

+0

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

ответ

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; 
     } 
    } 
} 

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

+0

Спасибо! Работает в обаянии. Мне также удалось заставить его работать с изменением видимости точек, но мне это нравится лучше. Еще раз спасибо! –