0

フラッシュ ファイル内の 1 つのムービー クリップに追加しようとしている紙吹雪ジェネレーターがあります。クリップはマスクされており、紙吹雪の上にグラフィックとテキストを表示したいと考えています (背景レイヤーの上にも表示されます)。

適切なスクリプトを購入し、オリジナルの紙吹雪アートワークで動作するように修正しましたが、このクラスを 1 つのムービー クリップで使用する (または使用するために変更する) 方法がわかりません。以下にクラスを貼り付けます。私はこれについて数時間強調してきましたが、どんな助けでも大歓迎です。

package com.pixeljunkyard 
{
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    import caurina.transitions.*;
    import fl.motion.Color;
    import flash.display.StageAlign;
    import flash.display.StageScaleMode;

public class Main extends Sprite
{
    //Create Heart Instance
    private var hearts:Heart;

    //Amount of hearts
    private var totalHearts:Number = 30;

    //Falling Speed
    private var speed:Number = 1.5;

    //Constructor
    public function Main() 
    {
        //Align top left for screen aspect ratio
        stage.align = StageAlign.TOP_LEFT;
        stage.scaleMode = StageScaleMode.NO_SCALE;

        //Loop through the amount of heart to be created
        for (var i = 0; i < totalHearts; i++)
        {
            //Create new heart
            var heart = new Heart();

            //Set Random value
            var randScale:Number = randRange(50, 100);
            var randRotation:Number = randRange( -180, 180);
            var randRotationY:Number = randRange( -360, 360);

            //Random position and scale
            heart.x = randRange(0, stage.stageWidth);
            heart.y = randRange( -stage.stageHeight, stage.stageHeight);
            heart.scaleX = randScale/100;
            heart.scaleY = randScale/100;

            //Name each heart with the number of creation
            heart.name = "heart" + i;

            var Low : int = 1;
            var High : int = 8;
            var myRandomNumber:int = Math.floor(Math.random()*(1+High-Low))+Low;


            heart.gotoAndStop(myRandomNumber);

            //Add eventlisteners for interactions
            heart.addEventListener(MouseEvent.ROLL_OVER, hit_heart);
            heart.addEventListener(Event.ENTER_FRAME, change_shade);

            //Initial Animation
            Tweener.addTween(heart, {time:randRange(1,5)/speed, rotation:randRotation,rotationY:randRotationY,y:stage.stageHeight+(heart.height/2)+20, transition:"linear", onComplete:rebirth,onCompleteParams:[heart]} );

            //Add to Stage
            addChildAt(heart, i);

        }
    }

    //Change shade to give lighting effect
    private function change_shade(e:Event):void
    {
        //New color instance
        var c:Color = new Color();
        //Set properties
        c.brightness = e.target.rotation / 300;

        //Apply color to heart
        e.target.transform.colorTransform = c;

    }

    //Random Function
    private function randRange(min:Number, max:Number):Number 
    {
        var randomNum:Number = Math.floor(Math.random() * (max - min + 1)) + min;
        return randomNum;
    }

    //Interactive animation
    private function hit_heart(e:Event):void
    {
        Tweener.addTween(e.target, { time:randRange(1,3), rotationY:e.target.rotationY+180 } );
    }

    //Reset heart to top of the screen once fallen
    private function rebirth($heart:Heart):void
    {
        $heart.x = randRange(0, stage.stageWidth);
        $heart.y = -$heart.height;

        Tweener.addTween($heart, {time:randRange(1,5)/speed, rotation:randRange(-180,180),y:stage.stageHeight+($heart.height/2)+20, transition:"linear", onComplete:rebirth,onCompleteParams:[$heart]} );
    }
  }
}
4

1 に答える 1