4

スライダーの動きに二次曲線を描こうとしています。スライダーが動くと曲線が描かれます。二次曲線とベジェ曲線に対してこれを行いたいです。これはクロムでのみ動作する私のコードです

            <!DOCTYPE HTML>
                        <html>
                            <head>
                                <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
                                <meta name="viewport" content="width=device-width, initial-scale=1">

                                <style type="text/css">
                                    .wrapper {
                                        margin: 0 auto;
                                        width: 1000px;
                                    }
                                    .canHdr {
                                        float: left;
                                        width: 450px;
                                        height: 400px;
                                        border: 1px solid red;
                                    }
                                </style>

                            </head>
                            <body>
                                <form>
                                    <!-- wrapper -->
                                    <div class="wrapper">

                                        <!-- canHdr -->
                                        <div id="canHdr" class="canHdr" >

                                            <p>
                                                This is my 1st div with quadratic curve I want to draw this curve as I move the slider. I want to make it dynamic so when I should be able to change the curve points. Also I want to move an object on that curve as I am doing in my 3rd div.
                                            </p>

                                            <div class="canOuterHdr" >
                                                <canvas id="myCanvas1" width="300" height="195" style="position: relative;">
                                                    [No canvas support]
                                                </canvas>

                                            </div>

                                            <div id="slider1" class="newBg">
                                                <input id="slide1" type="range" min="0" max="100" step="1" value="0" onchange="counterSlider('slide1');" />
                                            </div>

                                        </div>
                                        <!--/ canHdr -->
                                        <!-- canHdr2 -->
                                        <div id="canHdr2" class="canHdr" >

                                            <p>
                                                This is my 2nd div. I have bezier curve. I want to make it dynamic so when I should be able to change the curve points. Also I want to move an object on that curve as I am doing in my 3rd div.
                                            </p>

                                            <div class="canOuterHdr" >
                                                <canvas id="myCanvas2" width="300" height="195" style="position: relative;">
                                                    [No canvas support]
                                                </canvas>

                                            </div>

                                            <div id="slider2" class="newBg">
                                                <input id="slide2" type="range" min="0" max="100" step="1" value="0" onchange="counterSlider('slide2');" />
                                            </div>

                                        </div>
                                        <!-- canHdr2 -->


                                    </div>
                                    <!-- /wrapper -->

                                    <script type="text/javascript">
                                       // newSprite('myCanvas3', 16, 170);
                                        quadraticCurve('myCanvas1', 18.8, 45, 28, 160, 228, 165);
                                        bezierCurve('myCanvas2', 20, 75, 55.2, 150.0, 200,100, 228, 165)
                                        function counterSlider(sID) {

                                            var slideVal = document.getElementById(sID).value;
                                            /*if (maxValue ==100){

                                             slideVal=slideVal/100;
                                             }*/
                                            slideVal = slideVal / 100;

                                            if (slideVal == 0) {

                                            /*  erase('myCanvas2');
                                                erase('myCanvas3');
                                                erase('myCanvas4');*/
                                                //newSprite('myCanvas1b', 18.8, 45);
                                               // newSprite('myCanvas3', 16, 170);

                                            } else if (slideVal > 0 && slideVal <= 34) {

                                                /*erase('myCanvas1');
                                                //erase('myCanvas1b');
                                                erase('myCanvas2');
                                                erase('myCanvas3');
                                                erase('myCanvas4');*/

                                            } else if (slideVal > 34 && slideVal <= 67) {

                                                /*erase('myCanvas1');

                                                erase('myCanvas2');
                                                erase('myCanvas3');
                                                erase('myCanvas4');*/

                                            } else if (slideVal > 67 && slideVal <= 100) {

                                                /*erase('myCanvas1');

                                                erase('myCanvas2');
                                                erase('myCanvas3');
                                                erase('myCanvas4');*/

                                            }
                                        }

                                        function erase(canvasId) {

                                            var canvas = document.getElementById(canvasId);
                                            var context = canvas.getContext("2d");
                                            context.beginPath();
                                            context.clearRect(0, 0, canvas.width, canvas.height);
                                            canvas.width = canvas.width;

                                        }

                                        /**********for backgroundImage********************/

                                        function quadraticCurve(canId, spx, spy, cpx, cpy, endx, endy) {

                                            var canvas = document.getElementById(canId);
                                            var ctx = canvas.getContext('2d');

                                            ctx.beginPath();
                                            ctx.moveTo(spx, spy);
                                            ctx.quadraticCurveTo(cpx, cpy, endx, endy);
                                            ctx.strokeStyle = "#eaca2d";
                                            ctx.stroke();

                                        }

                                        function bezierCurve(canId, spx, spy, cpx1, cpy1, cpx2, cpy2, endx, endy) {

                                            var canvas = document.getElementById(canId);
                                            var ctx = canvas.getContext('2d');

                                            ctx.beginPath();
                                            ctx.moveTo(spx, spy);
                                            ctx.quadraticCurveTo(cpx1, cpy1, cpx2, cpy2, endx, endy);
                                            ctx.strokeStyle = "#eaca2d";
                                            ctx.stroke();

                                        }

                                        function newSprite(canId, mvx, mvy) {
                                            var canvas = document.getElementById(canId);
                                            var ctx = canvas.getContext('2d');
                                            ctx.globalCompositeOperation = 'source-over';
                                            //ctx.globalCompositeOperation = "destination-over";
                                            ctx.beginPath();
                                            ctx.fillStyle = "#0077c1";
                                            ctx.arc(mvx, mvy, 6, 0, Math.PI * 2, true);
                                            ctx.closePath();
                                            ctx.fill();
                                        }



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

これは jsfiddle のリンクです: http://jsfiddle.net/Y5yYD/1/

4

1 に答える 1