穿梭于丛林之间  
一个热爱设计的孩纸,有着程序猿的情节,干着穿山越岭工作。

相信你一定遇到过这样的问题,那就是ActionScript3.0~TextField类别中的alpha属性不会起作用,为什么会不起作用呢? 那是因为alpha属性在TextField类别中是有一些限制的,那就必须将字体嵌入才能使alpha属性起作用(指动态字体),为了想办法使它 alpha属性起作用且不用将字体嵌入,所以使用了一些小方法…

方法一:
那就是将TextField加在(addChild)MovieClip或Sprite容器中显示,可是这样还是不足够的,举个例子来说:

1 var sprite:Sprite = new Sprite(); 
2 var txtField:TextField = new TextField(); 
3 txtField.alpha = .5; 
4 txtField.appendText(”text”); 
5 addChild(sprite); 
6 sprite.addChild(txtField); 

 

这样写的话,虽然已经把textField给加入了Sprite里,但是alpha的属性还是不会起作用,因为我们还未将Sprite加上 Blendmode函数,我在这里有测试过…大部分的Blendmode函数中的属性都能使用,但是最好的方式是使用BlendMode.LAYER,因为它会强制为该显示对象创建一个透明度组。
所以我们现在把刚才的程序改成这样:

 
1 var sprite:Sprite = new Sprite(); 
2 var txtField:TextField = new TextField(); 
3 sprite.blendMode = BlendMode.LAYER;
4 txtField.alpha = .5; 
5 txtField.appendText(”text”); 
6 addChild(sprite); 
7 sprite.addChild(txtField);

方法二  

1 var a:TextField=new TextField();
2 a.text="aaa";
3 a.alpha=0.5;
4 a.selectable=false;
5 a.filters=[new DropShadowFilter(0,0,0,0,0,0)];
6 addChild(a);

从某处学来的好方法,用一个滤镜之后它就可以调整alpha了,滤镜设成没有效果
原文链接:http://bbs.9ria.com/thread-26152-1-1.html

最后总结  

    • 需要开启 运行时位图缓存 (加空滤镜就是开启它)
    • 或者 设置 blendMode ="layer";
posted on 2014-01-26 20:35  perrychum  阅读(223)  评论(0)    收藏  举报