简体   繁体   中英

Creating a Spinning Wheel in as3 that displays text when stopping

I am trying to create a spinning wheel that will display a coupon code when it stops on a particular color. Right now it displays color at the bottom of the page but I would like to add in specific coupon codes associated with each wheel snippet that appear when the wheel stops Thanks in advance!

Here is the current code:

package  
{
    import flash.display.Sprite;    
    import flash.display.Shape;
    import flash.events.MouseEvent;
    import flash.events.Event;
    import com.greensock.TweenMax;

public final class Main extends Sprite
{
    private var speed:Number = 0;
    private var paddles:Vector.<Sprite> = new Vector.<Sprite>();
    private var line:Shape;
    private var lastPaddle:String;

    public final function Main():void
    {
        paddles.push(wheel.p1, wheel.p2, wheel.p3, wheel.p4, wheel.p5, wheel.p6);
        listeners('add');
    }       

    private final function listeners(action:String):void 
    {
        if(action == 'add')
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.addEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
        else
        {
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.removeEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
    }

    private final function startDraw(e:MouseEvent):void
    {
        line = new Shape();
        addChild(line);

        line.graphics.moveTo(mouseX, mouseY);
        line.graphics.lineStyle(5, 0x00000, 0.3);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, drawLine);
    }

    private final function drawLine(e:MouseEvent):void
    {
        line.graphics.lineTo(mouseX, mouseY);
    }

    private final function spinWheel(e:MouseEvent):void
    {
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, drawLine);
        listeners('rm');

        speed = line.height * 0.1; 
        removeChild(line);
        line = null;

        stage.addEventListener(Event.ENTER_FRAME, spin);
    }

    private final function spin(e:Event):void
    {
        /* Rotate Wheel */

        wheel.rotationZ += speed;

        /* Detect Value */

        for(var i:int = 0; i < 6; i++)
        {
            if(indicator.hArea.hitTestObject(paddles[i]))
            {
                lastPaddle = paddles[i].name;
            }
        }

        speed -= 0.1;

        if(speed <= 0)
        {
            stage.removeEventListener(Event.ENTER_FRAME, spin);
            speed = 0;
            run(lastPaddle);
            listeners('null');
        }
    }

    function run(action:String):void
    {
        switch(action)
        {
            case 'p1':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x644D9B, tintAmount:1}});
                break;
            case 'p2':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xFFCC00, tintAmount:1}});
                break;
            case 'p3':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x4789C2, tintAmount:1}});
                break;
            case 'p4':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF15D5D, tintAmount:1}});
                break;
            case 'p5':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x90CC6C, tintAmount:1}});
                break;
            case 'p6':
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF29C69, tintAmount:1}});
                break;
            }
        }
    }
}

EDIT:: This is the updated code per suggestions I added the wheel.p1.addChild(myText); at the end in the function run(action:String):void area. Is this the correct way of doing it or is there a better way. I also was unable to have the text show up in the live version.

package 
{
    import flash.display.Sprite;
    import flash.display.Shape;
    import flash.events.MouseEvent;
    import flash.events.Event;
import com.greensock.TweenMax;
import flash.text.TextFormat;
import flash.text.TextField;

public final class Main extends Sprite;
{
    private var speed:Number = 0;
    private var paddles:Vector.<Sprite> = new Vector.<Sprite>();
    private var line:Shape;
    private var lastPaddle:String;

    public final function Main():void
    {
        paddles.push(wheel.p1, wheel.p2, wheel.p3, wheel.p4, wheel.p5, wheel.p6);
        listeners('add');
    }

    private final function listeners(action:String):void
    {
        if (action == 'add')
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.addEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
        else
        {
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.removeEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
    }

    private final function startDraw(e:MouseEvent):void
    {
        line = new Shape();
        addChild(line);

        line.graphics.moveTo(mouseX, mouseY);
        line.graphics.lineStyle(5, 0x00000, 0.3);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, drawLine);
    }

    private final function drawLine(e:MouseEvent):void
    {
        line.graphics.lineTo(mouseX, mouseY);
    }

    private final function spinWheel(e:MouseEvent):void
    {
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, drawLine);
        listeners('rm');

        speed = line.height * 0.1;
        removeChild(line);
        line = null;

        stage.addEventListener(Event.ENTER_FRAME, spin);
    }

    private final function spin(e:Event):void
    {
        /* Rotate Wheel */

        wheel.rotationZ +=  speed;

        /* Detect Value */

        for (var i:int = 0; i < 6; i++)
        {
            if (indicator.hArea.hitTestObject(paddles[i]))
            {
                lastPaddle = paddles[i].name;
            }
        }

        speed -=  0.1;

        if (speed <= 0)
        {
            stage.removeEventListener(Event.ENTER_FRAME, spin);
            speed = 0;
            run(lastPaddle);
            listeners('null');
        }
    }

    function run(action:String):void
    {
        switch (action)
        {
            case 'p1' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x644D9B, tintAmount:1}});
                var myText:TextField = new TextField();
                myText.text = "10per";
                wheel.p1.addChild(myText);

                myText.textColor = 0xFF0000;
                myText.x = 350;
                myText.y = 485;
                break;
            case 'p2' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xFFCC00, tintAmount:1}});
                break;
            case 'p3' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x4789C2, tintAmount:1}});
                break;
            case 'p4' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF15D5D, tintAmount:1}});
                break;

            case 'p5' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x90CC6C, tintAmount:1}});
                break;

            case 'p6' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF29C69, tintAmount:1}});
                break;
           }
        }
    }
}

Here is the final code that worked how I needed it to! Thanks to those who helped.

package 
{
import flash.display.Sprite;
import flash.display.Shape;
import flash.events.MouseEvent;
import flash.events.Event;
import com.greensock.TweenMax;
import flash.text.TextFormat;
import flash.text.TextField;

public final class Main extends Sprite
{
    private var speed:Number = 0;
    private var paddles:Vector.<Sprite> = new Vector.<Sprite>();
    private var line:Shape;
    private var lastPaddle:String;

    public final function Main():void
    {
        paddles.push(wheel.p1, wheel.p2, wheel.p3, wheel.p4, wheel.p5, wheel.p6);
        listeners('add');
    }

    private final function listeners(action:String):void
    {
        if (action == 'add')
        {
            stage.addEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.addEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
        else
        {
            stage.removeEventListener(MouseEvent.MOUSE_DOWN, startDraw);
            stage.removeEventListener(MouseEvent.MOUSE_UP, spinWheel);
        }
    }

    private final function startDraw(e:MouseEvent):void
    {
        line = new Shape();
        addChild(line);

        line.graphics.moveTo(mouseX, mouseY);
        line.graphics.lineStyle(5, 0x00000, 0.3);
        stage.addEventListener(MouseEvent.MOUSE_MOVE, drawLine);
    }

    private final function drawLine(e:MouseEvent):void
    {
        line.graphics.lineTo(mouseX, mouseY);
    }

    private final function spinWheel(e:MouseEvent):void
    {
        stage.removeEventListener(MouseEvent.MOUSE_MOVE, drawLine);
        listeners('rm');

        speed = line.height * 0.1;
        removeChild(line);
        line = null;

        stage.addEventListener(Event.ENTER_FRAME, spin);
    }

    private final function spin(e:Event):void
    {
        /* Rotate Wheel */

        wheel.rotationZ +=  speed;

        /* Detect Value */

        for (var i:int = 0; i < 6; i++)
        {
            if (indicator.hArea.hitTestObject(paddles[i]))
            {
                lastPaddle = paddles[i].name;
            }
        }

        speed -=  0.1;

        if (speed <= 0)
        {
            stage.removeEventListener(Event.ENTER_FRAME, spin);
            speed = 0;
            run(lastPaddle);
            listeners('null');
        }
    }

    function run(action:String):void
    {
        switch (action)
        {
            case 'p1' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x644D9B, tintAmount:1}});

                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 30;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "10% off your order with coupon code:perc10";
                        addChild(myText);

                        myText.textColor = 0xFFFFFF;
                        myText.width = 624;
                        myText.height = 41;
                        myText.x = 43;
                        myText.y = 457;
                break;
            case 'p2' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xFFCC00, tintAmount:1}});
                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 27;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "$5 off when you spend $20+ with coupon code:5iveoff";
                        addChild(myText);

                        myText.textColor = 0x6D6D6D;
                        myText.width = 676;
                        myText.height = 38;
                        myText.x = 22;
                        myText.y = 459;

                break;
            case 'p3' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x4789C2, tintAmount:1}});
                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 30;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "20% off your order with coupon code:2ZERO";
                        addChild(myText);

                        myText.textColor = 0xFFFFFF;
                        myText.width = 618;
                        myText.height = 41;
                        myText.x = 43;
                        myText.y = 458;


                break;
            case 'p4' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF15D5D, tintAmount:1}});
                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 27;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "$10 off when you spend $30+ with coupon code:10doll";
                        addChild(myText);

                        myText.textColor = 0xFFFFFF;
                        myText.width = 672;
                        myText.height = 38;
                        myText.x = 20;
                        myText.y = 459;

                break;

            case 'p5' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0x90CC6C, tintAmount:1}});
                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 30;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "15% off your order with coupon code:fifperc";
                        addChild(myText);

                        myText.textColor = 0xFFFFFF;
                        myText.width = 618;
                        myText.height = 41;
                        myText.x = 50;
                        myText.y = 458;

                break;

            case 'p6' :
                TweenMax.to(colorMC, 0.5, {colorTransform:{tint:0xF29C69, tintAmount:1}});
                    var myFormat:TextFormat = new TextFormat();
                        myFormat.size = 27;


                    var myText:TextField = new TextField();
                        myText.defaultTextFormat = myFormat;
                        myText.text = "$15 off when you spend $40+ with coupon code:fifdolla";
                        addChild(myText);

                        myText.textColor = 0xFFFFFF;
                        myText.width = 672;
                        myText.height = 38;
                        myText.x = 15;
                        myText.y = 459;;
                break;
        }
    }
}

}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM