Flegy
Flegy

Reputation: 47

Winwheel IE 8 canvas

I am trying get winwheel from source http://dougtesting.net/home , I setup everything and work fine on chrome and IE 9+ but I need get it to work on IE 8. After some investigation I find need insert excanvas.js to get canvas to work on IE 8 but it didnt solved my problem still IE 8 showing error "canvas is not supported on current browser".

MY HTML CODE:

<html>
    <head>
        <title>Wheel</title>
        <link rel="stylesheet" href="main.css" type="text/css" />
        <script type="text/javascript" src="excanvas.js"></script>
        <script type="text/javascript" src="Winwheel.js"></script>
        <script src="TweenMax.min.js"></script>
    </head>
    <body>
        <div align="center">
            <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td>
                    <div class="power_controls">
                        <br />
                        <br />
                        <table class="power" cellpadding="10" cellspacing="0">
                            <tr>
                                <th align="center">Power</th>
                            </tr>
                            <tr>
                                <td width="78" align="center" id="pw3" onClick="powerSelected(3);">High</td>
                            </tr>
                            <tr>
                                <td align="center" id="pw2" onClick="powerSelected(2);">Med</td>
                            </tr>
                            <tr>
                                <td align="center" id="pw1" onClick="powerSelected(1);">Low</td>
                            </tr>
                        </table>
                        <br />
                        <img id="spin_button" src="spin_off.png" alt="Spin" onClick="startSpin();" />
                    </div>
                </td>
                <td width="421" height="564" class="the_wheel" align="center" valign="center">
                    <canvas id="canvas" width="420" height="420">
                        <p style="{color: white}" align="center">Sorry, your browser doesn't support canvas. Please try another.</p>
                    </canvas>
                </td>
            </tr>
        </table>
        <script>        
            // Create new wheel object specifying the parameters at creation time.
            var theWheel = new Winwheel({
                'numSegments'       : 20,                 // Specify number of segments.
                'outerRadius'       : 160,               // Set outer radius so wheel fits inside the background.
                'drawText'          : false,              // Code drawn text can be used with segment images.
                'textFontSize'      : 16,
                'textOrientation'   : 'curved',
                'textAlignment'     : 'inner',
                'textMargin'        : '90',
                'textFontFamily'    : 'monospace',
                'textStrokeStyle'   : 'black',
                'textLineWidth'     : 3,
                'textFillStyle'     : 'white',
                'drawMode'          : 'segmentImage',    // Must be segmentImage to draw wheel using one image per segemnt.
                'segments'          :                    // Define segments including image and text.
                [
                   {'image' : '1.png',  'text' : '379013000'},
                   {'image' : '2.png',   'text' : '379067000'},
                   {'image' : '3.png',  'text' : '379021000'},
                   {'image' : '4.png',  'text' : 'LOST'},
                   {'image' : '5.png', 'text' : '800041000'},
                   {'image' : '6.png', 'text' : '389081000'},
                   {'image' : '7.png',  'text' : '508056000'},
                   {'image' : '8.png', 'text' : 'EARN'},
                   {'image' : '9.png', 'text' : '389020000'},
                   {'image' : '10.png', 'text' : 'TURN'},
                   {'image' : '11.png', 'text' : '800042000'},
                   {'image' : '12.png', 'text' : '389020000'},
                   {'image' : '13.png', 'text' : '379068000'},
                   {'image' : '14.png', 'text' : 'EARN'},
                   {'image' : '15.png', 'text' : 'LOST'},
                   {'image' : '16.png', 'text' : '389081000'},
                   {'image' : '17.png', 'text' : '370180000'},
                   {'image' : '18.png', 'text' : '700002000'},
                   {'image' : '19.png', 'text' : '379067000'},
                   {'image' : '20.png', 'text' : '800044000'},

                ],
                'animation' :           // Specify the animation to use.
                {
                    'type'     : 'spinToStop',
                    'duration' : 5,     // Duration in seconds.
                    'spins'    : 8,     // Number of complete spins.
                    'callbackFinished' : 'alertPrize()'
                }
            });

            // Vars used by the code in this page to do power controls.
            var wheelPower    = 0;
            var wheelSpinning = false;

            // -------------------------------------------------------
            // Function to handle the onClick on the power buttons.
            // -------------------------------------------------------
            function powerSelected(powerLevel)
            {
                // Ensure that power can't be changed while wheel is spinning.
                if (wheelSpinning == false)
                {
                    // Reset all to grey incase this is not the first time the user has selected the power.
                    document.getElementById('pw1').className = "";
                    document.getElementById('pw2').className = "";
                    document.getElementById('pw3').className = "";

                    // Now light up all cells below-and-including the one selected by changing the class.
                    if (powerLevel >= 1)
                    {
                        document.getElementById('pw1').className = "pw1";
                    }

                    if (powerLevel >= 2)
                    {
                        document.getElementById('pw2').className = "pw2";
                    }

                    if (powerLevel >= 3)
                    {
                        document.getElementById('pw3').className = "pw3";
                    }

                    // Set wheelPower var used when spin button is clicked.
                    wheelPower = powerLevel;

                    // Light up the spin button by changing it's source image and adding a clickable class to it.
                    document.getElementById('spin_button').src = "spin_on.png";
                    document.getElementById('spin_button').className = "clickable";
                }
            }

            // -------------------------------------------------------
            // Click handler for spin button.
            // -------------------------------------------------------
            function startSpin()
            {
                // Ensure that spinning can't be clicked again while already running.
                if (wheelSpinning == false)
                {
                    // Based on the power level selected adjust the number of spins for the wheel, the more times is has
                    // to rotate with the duration of the animation the quicker the wheel spins.
                    if (wheelPower == 1)
                    {
                        theWheel.animation.spins = 3;
                    }
                    else if (wheelPower == 2)
                    {
                        theWheel.animation.spins = 8;
                    }
                    else if (wheelPower == 3)
                    {
                        theWheel.animation.spins = 15;
                    }

                    // Disable the spin button so can't click again while wheel is spinning.
                    document.getElementById('spin_button').src       = "spin_off.png";
                    document.getElementById('spin_button').className = "";

                    // Begin the spin animation by calling startAnimation on the wheel object.
                    theWheel.startAnimation();

                    // Set to true so that power can't be changed and spin button re-enabled during
                    // the current animation. The user will have to reset before spinning again.
                    wheelSpinning = true;
                }
            }

            // -------------------------------------------------------
            // Function for reset button.
            // -------------------------------------------------------
            function resetWheel()
            {
                theWheel.stopAnimation(false);  // Stop the animation, false as param so does not call callback function.
                theWheel.rotationAngle = 0;     // Re-set the wheel angle to 0 degrees.
                theWheel.draw();                // Call draw to render changes to the wheel.

                document.getElementById('pw1').className = "";  // Remove all colours from the power level indicators.
                document.getElementById('pw2').className = "";
                document.getElementById('pw3').className = "";

                wheelSpinning = false;          // Reset to false to power buttons and spin can be clicked again.
            }

            // -------------------------------------------------------
            // Called when the spin animation has finished by the callback feature of the wheel because I specified callback in the parameters.
            // -------------------------------------------------------
            function alertPrize()
            {
                // Get the segment indicated by the pointer on the wheel background which is at 0 degrees.
                var winningSegment = theWheel.getIndicatedSegment();

                // Do basic alert of the segment text. You would probably want to do something more interesting with this information.
                switch(winningSegment.text)
                {
                    case "LOST": // lost 1k np

                    break;

                    case "EARN": // earn 1k np

                    break;

                    case "TURN": // do nothing
                    break;

                    default: // give item



                }
            }
        </script>
    </body>
</html>

ERROR SHOW:

http://screencast.com/t/23WeMNBXOH8N

it look to me as wheelwin dosent read new canvas. How can I fix it?

thanks in advance

Upvotes: 1

Views: 1137

Answers (1)

Flegy
Flegy

Reputation: 47

I got it fixed by insert

<!--[if lte IE 8]><script type="text/javascript" src="themes/default/js/excanvas.js"></script><![endif]-->

after I did it canvas worked normally in internet explorer 8.

DOWNLOAD LINK:

https://github.com/arv/ExplorerCanvas/blob/master/excanvas.js

FULL CODE SAMPLE:

<!DOCTYPE html>
<html>
    <head>
        <title>Wheel</title>
        <script src="https://code.jquery.com/jquery-1.9.1.js"></script>
        <link rel="stylesheet" href="themes/default/wheel.css" type="text/css" />
        <!--[if lte IE 8]><script type="text/javascript" src="themes/default/js/excanvas.js"></script><![endif]-->
        <script type="text/javascript" src="themes/default/js/Winwheel.js"></script>
        <script src="themes/default/js/TweenMax.min.js"></script>
    </head>
    <body onload="initWinwheel();" oncontextmenu="return false" onselectstart="return false" ondragstart="return false" scroll="no">
        <div align="center">
            <table cellpadding="0" cellspacing="0" border="0">
            <tr>
                <td>
                    <div class="power_controls">
                        <br />
                        <br />
                        <table class="power" cellpadding="10" cellspacing="0">
                            <tr>
                                <th align="center">Power</th>
                            </tr>
                            <tr>
                                <td width="78" align="center" id="pw3" onClick="powerSelected(3);">High</td>
                            </tr>
                            <tr>
                                <td align="center" id="pw2" onClick="powerSelected(2);">Med</td>
                            </tr>
                            <tr>
                                <td align="center" id="pw1" onClick="powerSelected(1);">Low</td>
                            </tr>
                        </table>
                        <br />
                        <img id="spin_button" src="themes/default/images/wheel/spin_off.png" alt="Spin" onClick="startSpin();" />
                    </div>
                </td>
                <td width="421" height="564" class="the_wheel" align="center" valign="center">
                    <canvas id="canvas" width="420" height="420">
                        <p style="{color: white}" align="center">Sorry, your browser doesn't support canvas. Please try another.</p>
                    </canvas>
                </td>
            </tr>
        </table>
        <script>        
            var theWheel;

            function initWinwheel() {               
                // Create new wheel object specifying the parameters at creation time.
                theWheel = new Winwheel({
                    'numSegments'       : 20,                 // Specify number of segments.
                    'outerRadius'       : 160,               // Set outer radius so wheel fits inside the background.
                    'drawText'          : false,              // Code drawn text can be used with segment images.
                    'textFontSize'      : 16,
                    'textOrientation'   : 'curved',
                    'textAlignment'     : 'inner',
                    'textMargin'        : '90',
                    'textFontFamily'    : 'monospace',
                    'textStrokeStyle'   : 'black',
                    'textLineWidth'     : 3,
                    'textFillStyle'     : 'white',
                    'drawMode'          : 'segmentImage',    // Must be segmentImage to draw wheel using one image per segemnt.
                    'segments'          :                    // Define segments including image and text.
                    [
                       {'image' : 'themes/default/images/wheel/1.png',  'text' : '379013000'},
                       {'image' : 'themes/default/images/wheel/2.png',   'text' : '379067000'},
                       {'image' : 'themes/default/images/wheel/3.png',  'text' : '379021000'},
                       {'image' : 'themes/default/images/wheel/4.png',  'text' : 'LOST'},
                       {'image' : 'themes/default/images/wheel/5.png', 'text' : '800041000'},
                       {'image' : 'themes/default/images/wheel/6.png', 'text' : '389081000'},
                       {'image' : 'themes/default/images/wheel/7.png',  'text' : '508056000'},
                       {'image' : 'themes/default/images/wheel/8.png', 'text' : 'EARN'},
                       {'image' : 'themes/default/images/wheel/9.png', 'text' : '389020000'},
                       {'image' : 'themes/default/images/wheel/10.png', 'text' : 'TURN'},
                       {'image' : 'themes/default/images/wheel/11.png', 'text' : '800042000'},
                       {'image' : 'themes/default/images/wheel/12.png', 'text' : '389020000'},
                       {'image' : 'themes/default/images/wheel/13.png', 'text' : '379068000'},
                       {'image' : 'themes/default/images/wheel/14.png', 'text' : 'EARN'},
                       {'image' : 'themes/default/images/wheel/15.png', 'text' : 'LOST'},
                       {'image' : 'themes/default/images/wheel/16.png', 'text' : '389081000'},
                       {'image' : 'themes/default/images/wheel/17.png', 'text' : '370180000'},
                       {'image' : 'themes/default/images/wheel/18.png', 'text' : '700002000'},
                       {'image' : 'themes/default/images/wheel/19.png', 'text' : '379067000'},
                       {'image' : 'themes/default/images/wheel/20.png', 'text' : '800044000'},

                    ],
                    'animation' :           // Specify the animation to use.
                    {
                        'type'     : 'spinToStop',
                        'duration' : 5,     // Duration in seconds.
                        'spins'    : 5,     // Number of complete spins.
                        'callbackFinished' : 'alertPrize()'
                    }
                });
            }

            // Vars used by the code in this page to do power controls.
            var wheelPower    = 0;
            var wheelSpinning = false;

            // -------------------------------------------------------
            // Function to handle the onClick on the power buttons.
            // -------------------------------------------------------
            function powerSelected(powerLevel)
            {
                // Ensure that power can't be changed while wheel is spinning.
                if (wheelSpinning == false)
                {
                    // Reset all to grey incase this is not the first time the user has selected the power.
                    document.getElementById('pw1').className = "";
                    document.getElementById('pw2').className = "";
                    document.getElementById('pw3').className = "";

                    // Now light up all cells below-and-including the one selected by changing the class.
                    if (powerLevel >= 1)
                    {
                        document.getElementById('pw1').className = "pw1";
                    }

                    if (powerLevel >= 2)
                    {
                        document.getElementById('pw2').className = "pw2";
                    }

                    if (powerLevel >= 3)
                    {
                        document.getElementById('pw3').className = "pw3";
                    }

                    // Set wheelPower var used when spin button is clicked.
                    wheelPower = powerLevel;

                    // Light up the spin button by changing it's source image and adding a clickable class to it.
                    document.getElementById('spin_button').src = "themes/default/images/wheel/spin_on.png";
                    document.getElementById('spin_button').className = "clickable";             

                }
            }

            // -------------------------------------------------------
            // Click handler for spin button.
            // -------------------------------------------------------
            function startSpin()
            {
                // Ensure that spinning can't be clicked again while already running.
                if (wheelSpinning == false)
                {
                    // Based on the power level selected adjust the number of spins for the wheel, the more times is has
                    // to rotate with the duration of the animation the quicker the wheel spins.
                    if (wheelPower == 1)
                    {
                        theWheel.animation.spins = 3;
                    }
                    else if (wheelPower == 2)
                    {
                        theWheel.animation.spins = 8;
                    }
                    else if (wheelPower == 3)
                    {
                        theWheel.animation.spins = 15;
                    }

                    // Disable the spin button so can't click again while wheel is spinning.
                    document.getElementById('spin_button').src       = "themes/default/images/wheel/spin_off.png";
                    document.getElementById('spin_button').className = "";

                    // Begin the spin animation by calling startAnimation on the wheel object.
                    theWheel.startAnimation();

                    // Set to true so that power can't be changed and spin button re-enabled during
                    // the current animation. The user will have to reset before spinning again.
                    wheelSpinning = true;

                    //sendCmd2("EMPTY","-1", readCookie("CHAR"));
                }
            }

            // -------------------------------------------------------
            // Function for reset button.
            // -------------------------------------------------------
            function resetWheel()
            {
                theWheel.stopAnimation(false);  // Stop the animation, false as param so does not call callback function.
                theWheel.rotationAngle = 0;     // Re-set the wheel angle to 0 degrees.
                theWheel.draw();                // Call draw to render changes to the wheel.

                document.getElementById('pw1').className = "";  // Remove all colours from the power level indicators.
                document.getElementById('pw2').className = "";
                document.getElementById('pw3').className = "";

                wheelSpinning = false;          // Reset to false to power buttons and spin can be clicked again.
            }

            // -------------------------------------------------------
            // Called when the spin animation has finished by the callback feature of the wheel because I specified callback in the parameters.
            // -------------------------------------------------------
            function alertPrize()
            {
                // Get the segment indicated by the pointer on the wheel background which is at 0 degrees.
                var winningSegment = theWheel.getIndicatedSegment();

                if(winningSegment.text == "")
                    return;

                // Do basic alert of the segment text. You would probably want to do something more interesting with this information.
                switch(winningSegment.text)
                {

                    case "LOST": // lost 1k np
                        sendCmd("+np_give","-1000", readCookie("CHAR"));        
                    break;

                    case "EARN": // earn 1k np
                        sendCmd("+np_give","1000", readCookie("CHAR")); 
                    break;

                    case "TURN": // do nothing
                        sendCmd("EMPTY","0", readCookie("CHAR"));
                    break;

                    default: // give item
                        sendCmd("+give_item",winningSegment.text, readCookie("CHAR"));

                }

                winningSegment.text = "";
            }

            function sendCmd(command, giveitem,character)
            {
                $.ajax({ url: 'https://titan.maxko.org/?page=async',
                 data: {cmd: command, item: giveitem, chars: character},
                 type: 'post',
                 success: function(output) {
                    //alert(output);
                  }
                }); 
            }

             // Cookies
            function createCookie(name, value, days) {
                if (days) {
                    var date = new Date();
                    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                    var expires = "; expires=" + date.toGMTString();
                }
                else var expires = "";               

                document.cookie = name + "=" + value + expires + "; path=/";
            }

            function readCookie(name) {
                var nameEQ = name + "=";
                var ca = document.cookie.split(';');
                for (var i = 0; i < ca.length; i++) {
                    var c = ca[i];
                    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
                    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
                }
                return null;
            }

            function eraseCookie(name) {
                createCookie(name, "", -1);
            }

        </script>
    </body>
</html>

Upvotes: 1

Related Questions