【问题标题】:AS3 Check if two movie clips are the same colour?AS3 检查两个影片剪辑的颜色是否相同?
【发布时间】:2013-05-06 11:48:37
【问题描述】:

我正在尝试做一个点点滴滴的游戏,但我遇到了障碍。

如何检查两个影片剪辑的颜色是否相同?使用 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。

有什么建议吗? 谢谢:)

【问题讨论】:

  • 我会在您的 MC 中使用自定义参数或支持数据,这些数据会说明 MC 是什么颜色,而不需要围绕 MC 的内容进行任何鼓舞。当您希望 MC 更改框架或颜色变换时,您可以更新该参数。并且只要其中一个 MC 的颜色发生变化,就为您的任何一对 MC 调用一个检查方法。

标签: actionscript-3 if-statement conditional colortransform


【解决方案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;
       }
    }
}

这不是通用代码,但它回答了您的问题。

【讨论】:

  • 谢谢!很有魅力。我还设法让它通过改变点的可见性来工作,但我更喜欢这个。再次感谢您!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多