As3鼠标悬停背景不能按预期工作

时间:2012-09-14 21:02:10

标签: actionscript-3

我没有取得任何成功,在鼠标悬停时获得0.5 alpha的背景,Sprite作为TextArea的父级。我能得到的最好的是在MouseOver上以0.5透明度出现的文字,这完全不是我想要的。无论鼠标状态如何,我希望文本处于最大alpha状态,并且只有背景(Sprite)在MouseOver上以半透明度显示。如果可能的话,我宁愿避免补间。这是我的代码:

var textSprite:Sprite  = new Sprite();

    public function Main()
    {
        textSprite.graphics.beginFill(0x000000, 0);
        textSprite.graphics.drawRect(94.95, 80.95, 390, 130); 
        textSprite.graphics.endFill();
        textSprite.addChild(picArea1);//textarea added on stage, same dimensions, transparent background
        textSprite.buttonMode = true;
        textSprite.useHandCursor = true;
        stage.addChild(textSprite);


        textSprite.addEventListener(MouseEvent.MOUSE_OVER, applyAlpha);
        textSprite.addEventListener(MouseEvent.MOUSE_OUT, noApplyAlpha);
    }

    function applyAlpha(event:MouseEvent):void {
       textSprite.alpha = 0.5;
    }

    function noApplyAlpha(event:MouseEvent):void {
       textSprite.alpha = 0;
    }

1 个答案:

答案 0 :(得分:0)

设置精灵的alpha也会影响它的所有子项(按设计),这是你当前的问题。

你当前正在这样做的方式(用图形对象绘制背景),你必须重新绘制鼠标上的sprite图形。

以下是您可以使用的方法:

public function Main()
{
    drawTextBG(); //a new function I made to avoid duplicating code
    textSprite.addChild(picArea1);//textarea added on stage, same dimensions, transparent background
    textSprite.buttonMode = true;
    textSprite.useHandCursor = true;
    stage.addChild(textSprite);


    textSprite.addEventListener(MouseEvent.MOUSE_OVER, applyAlpha);
    textSprite.addEventListener(MouseEvent.MOUSE_OUT, noApplyAlpha);
}

//new function I made, this draws the background and makes the transparency the value passed in. I set the default to 1 (totally visible)
function drawTextBG(bgAlpha:Number = 1):void {
    textSprite.graphics.clear();
    textSprite.graphics.beginFill(0x000000, bgAlpha);
    textSprite.graphics.drawRect(94.95, 80.95, 390, 130); 
    textSprite.graphics.endFill();
}

function applyAlpha(event:MouseEvent):void {
   drawTextBG(.5); //redraw the background with half (.5) alpha
}

function noApplyAlpha(event:MouseEvent):void {
   drawTextBG(); //redraw the background with the default value (1 - totaly visible)
}

现在,如果您使用TLF(文本布局框架)文本字段,则可以使用文本字段的backgroundColor和backgroundAlpha属性,并手动绘制背景。