0

我是 AS3 的新手,对于我的一项任务,我需要修改现有代码(复制粘贴和修改)以产生一定的效果。我需要创建的效果是当我在舞台上鼠标悬停时,当我在舞台上鼠标移出时,蒙版将与背景图像形成一个循环并恢复正常(蒙版层不可见)。这是需要修改的代码。

    var mymask:Sprite=new Sprite();
    var isOver:Boolean=false;
    var spotSize:Number=0;

    pic2.addChild(mymask);
    pic2.mask=mymask;
    pic2.mouseEnabled=false;

    mymask.x=0;
    mymask.y=0;

    function drawSpot(r:Number):void{
        mymask.graphics.clear();
        mymask.graphics.lineStyle(1,0x000000);
        mymask.graphics.beginFill (0x00000F);
        mymask.graphics.drawRect(0,0,r,900);
        mymask.graphics.endFill();

        spotSize=r;
    }


    pic1.addEventListener(MouseEvent.ROLL_OVER, mouseOver);

    function mouseOver(e:MouseEvent):void{

        isOver=true;
    }

    pic1.addEventListener(MouseEvent.ROLL_OUT, mouseOut)

    function mouseOut(e:MouseEvent):void{
        isOver=false;
    }

    stage.addEventListener(Event.ENTER_FRAME, enter);

    function enter(e:Event):void{
        var cursorSize:Number=spotSize;
        if(isOver==true && cursorSize<1)
        drawSpot(cursorSize+999);
        if(isOver==false && cursorSize>10)
        drawSpot(cursorSize-999);

    }
4

1 回答 1

0

听起来您正试图通过修改上面的代码来为圆形蒙版设置动画?如果是这样,这就是所需的代码更改。

在您的 drawSpot 方法中,将行:更改 mymask.graphics.drawRect(0,0,r,900); 为: mymask.graphics.drawCircle(pic2.width * .5, pic2.height * .5, r);

然后在你的输入方法中,

function enter(e:Event):void{
    var cursorSize:Number=spotSize;
    if(isOver==true && cursorSize<999)
    drawSpot(cursorSize+1);
    if(isOver==false && cursorSize>0)
    drawSpot(cursorSize-1);

}

你正在做的是说如果鼠标已经结束并且 cursorSize 小于完整值(你之前有 999,所以我保留它)然后将大小增加 1。它将继续每帧执行此操作,直到大小为 999或更高(或鼠标不再结束)。

如果鼠标未悬停且遮罩的大小不为 0,则它将每帧减小 1 的大小,直到为 0 或更小。

如果你想让它跑得更快,只需将 +1 和 -1 更改为更大的数字

于 2012-06-27T20:46:29.793 回答