Flexlib ImageMap 实现区域变色偏方-图文

时间: 2010-05-21 / 分类: Flex / 浏览次数: 2,612 views / 8个评论 发表评论

 

话说最近使用flex做界面。因为刚用不久,对其不是特别了解。项目中用到了使用Flexlib 库中的ImageMap 可以实现html中的热点区域。现在想实现鼠标点击某个区域,或者鼠标移到某个区域,该区域就变色。效果图如下。

clip_image002

但是要实现这样 的功能,ImageMap 本身是不提供的。那该怎么办呢?

根据查看ImageMap的源代码。以及同事的提示。我们可以根据现有的点进行绘制。将绘制出来的新图层覆盖到上面就可以了。

其部分代码如下:

public function givBh(evt:ImageMapEvent):void{

var sprite:UIComponent =new UIComponent();

if(this.getChildren().length>1){

this.removeChildAt(1);

}

var g:Graphics=sprite.graphics;

g.beginFill(0×110000,0.5);

drawPoly(g,evt.item.coords.split(‘,’));

g.endFill();

this.addChild(sprite);

}

private function drawPoly(g:Graphics, coords:Array):void { g.moveTo(coords[0], coords[1]);

for(var i:int=2; i<coords.length; i+=2) {

g.lineTo(coords[i], coords[i+1]);

}

g.lineTo(coords[0], coords[1]);

}

通过代码我们可以知道。每次我们都new了一个UIcomponent,然后把它添加到画板上,但是这样做就会导致每个都添加了,不能去掉。所以,在每次添加之前,我们都进行了判断,更具他的孩子个数我们就可以知道他目前有没有区域添加了颜色。如果有,我们就先把他移除。当然这种判断要因自己的程序而定制。好像也可以按名次取。大家可以试试。

这样以后,再在<ImageMap>中添加上属性:shapeClick="givBh(event)" 或者shapeOver="givBh(event)"。就可以实现点击变色或者鼠标移上去就变色。

本文由weidays原创。

8个评论

  1. 香香
    2011/08/08 于 15:00:14

    我用的是flex 4.0

  2. 香香
    2011/08/08 于 14:56:21

    我试了下你的方法,但是不行.这行 g.beginFill(0×110000,0.5); 报错 说 :
    此行的多个标记:
    -1093: 语法错误。
    -1084: 语法错误: rightparen 应在 110000 之前。
    -g

  3. student
    2011/03/14 于 10:33:22

    我试了下你的方法,但是不行。你是把代码写在MXML里的吗?我出来的效果就是原来 的图片没了,在右下脚出现了选择的区域。

  4. 奴才
    2011/03/09 于 11:05:53

    哥,这个我还是不懂,你有没有源码给我参照一下,为啥我测试了,它不出效果呢,帮帮忙,谢谢啦

  5. winkoo
    2010/10/13 于 09:13:15

    这样会覆盖图片区域原有的链接

    • admin
      2010/10/13 于 16:30:55

      是的!

  6. tonlon
    2010/06/01 于 17:29:14

    沙发。。。
    可以上图不?

    • admin
      2010/06/01 于 17:33:26

      回复想上图?

发表评论

您的昵称 *

您的邮箱 *

您的网站