0

私はAS3の初心者です。割り当ての1つで、特定の効果を生み出すために既存のコードを変更(コピーして貼り付けて変更)する必要があります。作成する必要がある効果は、ステージ上で MouseOver すると、マスクが背景画像でループを形成し、ステージから MouseOut すると通常に戻ります (マスク レイヤーは表示されません)。変更する必要があるコードは次のとおりです。

    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 メソッドで、line: mymask.graphics.drawRect(0,0,r,900); を次 のように変更します。mymask.graphics.drawCircle(pic2.width * .5, pic2.height * .5, r);

次に、enter メソッドで、

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 でない場合、0 以下になるまでフレームごとにサイズが 1 ずつ減少します。

速くしたい場合は、+1 と -1 をより大きな数値に変更するだけです

于 2012-06-27T20:46:29.793 に答える