相信你一定遇到过这样的问题,那就是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";

浙公网安备 33010602011771号