【问题标题】:How to set alpha value of drawRoundRect object如何设置drawRoundRect对象的alpha值
【发布时间】:2010-02-26 20:36:31
【问题描述】:

好的,我知道这实际上听起来很初级,但我不明白我在这里做错了什么。

我画了一个简单的圆角矩形

backing1.graphics.beginFill(bgColor);
backing1.graphics.lineStyle(borderSize, borderColor1);
backing1.graphics.drawRoundRect(position1, position1, sizeW-1, sizeH-1, cornerRadius1);
backing1.graphics.endFill();
//backing1.alpha = .1; //<-- tried setting alpha here didn't work

然后尝试将其添加到movieClip中

bgHolder = new MovieClip;
bgHolder.alpha = 0.1;
bgHolder.addChild(backing1);
addChild(bgHolder);

我使用的颜色仍然显示为 100% :(

完整的后台类代码

package display{
import flash.display.DisplayObject;
import flash.display.LineScaleMode;
import flash.display.JointStyle;
import flash.display.MovieClip;
import flash.display.Graphics;
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.Event;
import flash.utils.Timer;
import flash.text.TextField;
import flash.events.TimerEvent;

import model.*;

public class Background extends Sprite {
    private const position1:Number=0;
    private const position2:Number=1;

    public static var instance:Background;

    private var vTitle        :TextField = new TextField();
    private var tStorm        :TextField = new TextField();
    private var backing1      :Shape     = new Shape();
    private var backing2      :Shape     = new Shape();
    private var bgColor:uint=0xE8E7E7;
    private var borderColor1:uint=0xCCCCCC;
    private var borderColor2:uint=0xFFFFFF;
    private var borderSize:uint=1;
    private var cornerRadius1:uint=3;
    private var cornerRadius2:uint=1;
    private var sizeW:uint;
    private var sizeH:uint;
    private var bgHolder:MovieClip;

    public var titleString:String="";


    public function Background():void {
        if (stage) {
            init();
        } else {
            addEventListener(Event.ADDED_TO_STAGE, init);

        }
        instance=this;
    }

    private function init(e:Event = null):void {

        removeEventListener(Event.ADDED_TO_STAGE, init);

        bgHolder=new MovieClip  ;
        bgHolder.alpha=0.1;
        bgHolder.addChild(backing1);
        addChild(bgHolder);
        addChild(backing2);
        addChild(vTitle);
        addChild(tStorm);
    }

    public function drawBackground(w, h, mainTitle, color, otherText):void {
        sizeW=w;
        sizeH=h;
        bgColor=color;

        titleString=mainTitle;

        vTitle.defaultTextFormat=Fonts.PlayingTitle;
        vTitle.border=false;
        vTitle.embedFonts=false;
        vTitle.gridFitType="SUBPIXEL";
        vTitle.sharpness=100;
        vTitle.antiAliasType=flash.text.AntiAliasType.ADVANCED;
        vTitle.selectable=false;
        vTitle.mouseEnabled=false;
        vTitle.x=5;// 8-3=5 to align copy to video player
        vTitle.y=8;
        vTitle.width=sizeW-16;
        vTitle.height=30;
        vTitle.text=titleString;

        tStorm.defaultTextFormat=Fonts.TouchStormR;
        tStorm.border=false;
        tStorm.embedFonts=false;
        tStorm.gridFitType="SUBPIXEL";
        tStorm.sharpness=100;
        tStorm.antiAliasType=flash.text.AntiAliasType.ADVANCED;
        tStorm.selectable=false;
        tStorm.mouseEnabled=false;
        tStorm.x=8;
        tStorm.y=sizeH-20;
        tStorm.width=sizeW-16;
        tStorm.height=20;
        tStorm.text=otherText;

        backing1.graphics.beginFill(bgColor, 0.1);
        //backing1.graphics.beginFill(bgColor);
        backing1.graphics.lineStyle(borderSize, borderColor1);
        backing1.graphics.drawRoundRect(position1, position1, sizeW-1, sizeH-1, cornerRadius1);
        backing1.graphics.endFill();
        backing1.alpha=0.5;

        backing2.graphics.beginFill(bgColor);
        backing2.graphics.lineStyle(borderSize, borderColor2);
        backing2.graphics.drawRoundRect(position2, position2, sizeW-3, sizeH-3, cornerRadius2);
        backing2.graphics.endFill();
    }

    public function switchTitle(sentText):void {
        titleString=sentText;
        vTitle.text=titleString;
    }

}

}

【问题讨论】:

  • “backing1”到底是什么?一个精灵?
  • 这是一个 Shape 对象,用完整代码更新问题

标签: flash actionscript-3 colors alpha


【解决方案1】:

我不知道为什么设置 alpha 对你不起作用,但你可以在 beginFill 调用中设置 alpha:

backing1.graphics.beginFill(bgColor, 0.1);

【讨论】:

  • 尝试了同样的结果 :( 好的,所以我知道我没有发疯......刚刚发布了完整的代码
【解决方案2】:

我试过你的源代码,问题似乎是由backing2-Shape引起的。该精灵没有得到任何 alpha,并且被放置在支持 1 的上方,因此看起来不透明。当你删除

addChild(backing2);

您将看到 alpha。

【讨论】:

    猜你喜欢
    • 2012-07-04
    • 1970-01-01
    • 2011-11-12
    • 1970-01-01
    • 2015-04-29
    • 1970-01-01
    • 1970-01-01
    • 2014-06-04
    • 2019-03-24
    相关资源
    最近更新 更多