0

メインコード (init):

package  {
    import flash.display.Sprite;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.geom.Rectangle;
    import flash.geom.Point;
    import flash.events.Event;
    import flash.utils.Timer;
    import flash.events.TimerEvent;

    public class Init extends Sprite {

        var parts:Array,
        images:Array,
        w:Number = 20,
        h:Number = 80,
        numParts:int = stage.stageWidth / w,
        i:int,
        imgCount:int = 0,
        timer:Timer,
        rc:Number = 0,
        vr:Number = 10;
        public function Init() {
            init();
        }


        function init():void
        {
            parts = new Array();
            images = new Array(new Img1(), new Img2());

            for(i = 0; i < numParts; i++)
            {
                var img2:BitmapData = new BitmapData(w, h);
                img2.copyPixels(images[imgCount], new Rectangle(i * w, 0, w, h), new Point());
                var bitmap:Bitmap = new Bitmap(img2);
                bitmap.x = -w / 2
                var rect:Rect = new Rect();
                rect.addChild(bitmap);
                rect.x = i * w + w / 2;
                addChild(rect);
                parts.push(rect);
            }
            i = 0;
            timer = new Timer(2000);
            timer.addEventListener(TimerEvent.TIMER, onTick);
            timer.start();
        }

        function onTick(e:TimerEvent):void
        {
            addEventListener(Event.ENTER_FRAME, onEnterFrame);
            timer.stop();
        }

        function onEnterFrame(e:Event):void
        {
            rotate2();
        }

        function rotate2()
        {
            parts[i].rotationY += vr;
            parts[i].rc += vr;
            if(parts[i].rc >= 180)
            {
                parts[i].rc = 0;
                parts[i].rotationY = 0;
                i++;
                if(i >= numParts)
                {
                    i = 0;
                    removeEventListener(Event.ENTER_FRAME, onEnterFrame);
                    timer.start();
                }
            }
            else
            if(parts[i].rc == 90)
            {

                parts[i].imgCount++;
                if(parts[i].imgCount >= images.length){parts[i].imgCount = 0;}
                    var img2:BitmapData = new BitmapData(w, h);
                    img2.copyPixels(images[parts[i].imgCount], new Rectangle(i * w, 0, w, h), new Point());
                    var bitmap:Bitmap = new Bitmap(img2);
                    bitmap.x = -w / 2
                    parts[i].redraw(bitmap);
                    parts[i].rotationY = -90;

            }

        }

        function rotate1()
        {
            for(i = 0; i < numParts; i++)
            {
                parts[i].rotationY += vr;
            }
            rc += vr;
            if(rc == 180)
            {
                removeEventListener(Event.ENTER_FRAME, onEnterFrame);
                timer.start();
                rc = 0;
            }
            else
            if(rc == 90)
            {
                imgCount++;
                if(imgCount >= images.length){imgCount = 0;}
                for(i = 0; i < numParts; i++)
                {
                    var img2:BitmapData = new BitmapData(w, h);
                    img2.copyPixels(images[imgCount], new Rectangle(i * w, 0, w, h), new Point());
                    var bitmap:Bitmap = new Bitmap(img2);
                    bitmap.x = -w / 2
                    parts[i].redraw(bitmap);
                    parts[i].rotationY = -90;
                }

            }
        }

    }

}

Rect クラス:

package  {
    import flash.display.Sprite;
    import flash.events.Event;

    public class Rect extends Sprite {

        public var imgCount:int = 0,
        rc:int = 0;
        public function Rect() {
            init();
        }


        private function init():void
        {

        }

        public function redraw(bitmap):void
        {
            removeChildAt(0);
            addChild(bitmap);
        }

    }

}

説明:

ここには 2 つのメソッドがあります。rotate1 - すべての長方形を一度に回転させ、rotate2 は 180 度回転させた後に各長方形を回転させてから次の長方形を回転させるので、現在の長方形から最も近い長方形を回転させます。 、最も近い 3 つの長方形を言ってみましょう。それらは現在の速度の半分の速度で回転しています。このコードを使用してこれを行うにはどうすればよいでしょうか..

ps: いくつかの画像をインポートして、このコードを試すことができます...

4

0 に答える 0