FLEX:在鼠标上方更改图像颜色

时间:2010-05-04 19:29:01

标签: flex

当我将鼠标移到它上面时,我想改变图像的颜色。

所以我准备了2张图片,这是eventListener:

   private function mouseOverHandler(e:MouseEvent):void {

          e.target.source = "@Embed(source='../icons/userIconOver.png')";

}

不幸的是,当我移动鼠标时,我只看到一个空白图像(错误,图像未找到)。但是编译器没有给我任何错误,我尝试使用原始图像的相同路径,并且在运行时从根目录引用时也删除“../”。但仍然没有。

当然,图像存储在那里。

但是,如果我可以应用效果将颜色从蓝色变为橙色到我的图像(通过保留透明度),我可以用不同的方式解决

由于

2 个答案:

答案 0 :(得分:2)

这不是做你想做的最简单的方法。样式表是为此而构建的,因此请将皮肤样式用于各种状态。例如:

.backButton{
    upSkin: Embed(source="BackButton.png"); 
    downSkin: Embed(source="BackButtonDown.png");
    overSkin: Embed(source="BackButtonOn.png");
    disabledSkin: Embed(source="BackButton.png");

    selectedUpSkin: Embed(source="BackButtonDown.png"); 
    selectedDownSkin: Embed(source="BackButtonDown.png");
    selectedOverSkin: Embed(source="BackButtonDown.png");
    selectedDisabledSkin: Embed(source="BackButtonDown.png");
}

比每次需要时以编程方式更改状态要容易得多。

答案 1 :(得分:0)

虽然我认为Robusto的解决方案是最好的,但现有代码的问题在于您将源指向字符串。您没有使用MXML,因此编译器不会为您解析嵌入代码,您需要单独嵌入图像:

(在班级的顶部:)

[Embed(source='../icons/userIconOver.png')]
public var myImageRef:Class

(在您的事件处理程序中)

e.target.source = myImageRef;