Как переместить текст с помощью колеса на холсте - PullRequest
1 голос
/ 08 января 2020

enter image description here

У меня есть этот вид изображения. Я заставляю его вращаться с этим кодом

HTML

    <!DOCTYPE html>
<html>
<head>
    <title></title>
   <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
</head>
<body>
    <canvas id="cnv" width="800px" height = "600px" style="border:solid 1px black"></canvas>
    <script type="text/javascript" src="main.js"></script>
</body>
</html>

JS

var cvs,ctx,img,gblTask,gblTask2;
$(document).ready(function(){
  // $("p").click(function(){
  //   $(this).hide();
  // });
  loop();

});

let circle ={
    degrees:0,
    draw:function(){
        var image = new Image();
        image.src= "w.png"
        img = image;
        img.onload = function(){
            ctx.drawImage(img,0,0);
        }
    },
    drawRotated:function(){
             ctx.clearRect(0,0,cvs.width,cvs.height);
             ctx.save();
             ctx.translate(img.width/2,img.height/2);
             ctx.rotate((this.degrees+=1)*Math.PI/180);
             ctx.drawImage(img,-img.width/2,-img.width/2);
             ctx.restore();
             if(this.degrees % 45 == 0){
                 clearInterval(gblTask);
                 clearInterval(gblTask2);
             }
          }
}

document.getElementById('cnv').addEventListener('click',function(event){
    circle.drawRotated();
    gblTask = setInterval(gblTask2=setInterval(function(){circle.drawRotated()},10),100);
});

function loop(){
   var canvas = document.getElementById('cnv');
   var context = canvas.getContext("2d");

   ctx = context;
   cvs = canvas;
   circle.draw();

}

Теперь я хочу разместить текст на шипах внутри колеса, и мне нужно, чтобы они также вращались вместе с колесом. Также число этих пиков может измениться. Я не могу этого сделать, так как я только начинаю с html. Проблема в том, как динамически определять количество шипов в колесе. И как динамически разместить метки p поверх шипов, а затем перемещать их вместе с колесом?

Может кто-нибудь помочь мне здесь?

1 Ответ

2 голосов
/ 09 января 2020

Как обсуждение в комментариях

Отправил мой ответ с чистым CSS

body {
		text-align: center;
		padding: 100px 0 0 0;
		color: #fff;
		background: #1d1f20;
}

.wheel {
		width:255px;
	  height:255px;
	margin: 0 auto;
	position: relative;
	-webkit-animation: rotation 4s infinite linear;
}

@-webkit-keyframes rotation {
		from {
				-webkit-transform: rotate(0deg);
		}
		to {
				-webkit-transform: rotate(359deg);
		}
}

.wheel span{
	position: absolute;
}
span.fir {
    top: 45px;
    left: 122px;
}
span.sec {
    top: 75px;
    right: 62px;
    transform: rotate(45deg);
}
span.thi {
    top: 135px;
    right: 51px;
    transform: rotate(101deg);
}
span.frt {
    top: 190px;
    right: 92px;
    transform: rotate(-230deg);
}
span.fiv {
    top: 190px;
    left: 92px;
    transform: rotate(-136deg);
}
span.six {
    top: 135px;
    left: 51px;
    transform: rotate(-111deg);
}
span.svn {
    top: 75px;
    left: 62px;
    transform: rotate(-52deg);
}
<div class="wheel" >
<img src="https://cdn.iconscout.com/icon/premium/png-256-thumb/car-wheel-2-827505.png">
	<span class="fir">hi</span>
	<span class="sec">hi</span>
	<span class="thi">hi</span>
	<span class="frt">hi</span>
	<span class="fiv">hi</span>
	<span class="six">hi</span>
	<span class="svn">hi</span>
</div>

Вы можете изменить изображение, а затем изменить его значения в соответствии с представлением

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...