0
私はここで新しく情報学科の学生です。来週予定しているプロジェクトの一部で問題が発生しています。私たちは、これらのすべての要件を含むプロジェクトを行うように求められました。JavaScriptを使ってキャンバスで爆発するのに問題がある
- フルスクリーンとWebアプリケーション有効
- タッチとマウスイベント 適切
- キャンバス要素のxとyの挙動に影響を与える配列と機能
- 使用イベント場所(pageX & pageY)を使用
- ビジュアルを継続的に生成する必要があります。アニメーションの終了は許可されません。
さまざまなサイズのボールがキャンバスページの下部から入ってきて、上から約1/3に飛んで飛び出して爆発が起こるような、ある種の花火ショー同時に。サークルが爆発する間に、新しいものがキャンバスの底に生成され、それが続くなどとなります。
私は、マウスのイベント/タッチイベントを追加するだけでなく、トップの3分の1に達すると、爆発(円の中心から離れて爆発する小さな円を作成する)を助ける必要があります早期にサークルを爆発させてください。どんな助けでも大変感謝しています。
<html>
<head>
<meta name="apple-mobile-web-app-capable" content="yes"/>
<meta name="apple-mobile-web-app-status-bar-style" content="black"/>
<meta content='width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0' name='viewport' />
<title>basic_canvas</title>
<style>
#mycanvas {
margin: 0 auto;
background-color: black;
}
body {
margin: 0
}
</style>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script>
//global variables
var mycanvas;
var ctx;
//make an array of balls shooting from the bottom of the page to the middle of the page
var Balls = [];
var fireworks = [];
//make a ready handler for our page to tirgger my javascript
$(document).ready(function() {
mycanvas = document.getElementById('mycanvas');
// mycanvas = $('#mycanvas');
ctx = mycanvas.getContext('2d');
mycanvas.width = window.innerWidth;
mycanvas.height = window.innerHeight;
setInterval(draw, 33);
//make the balls here
for (var i = 0; i < 30; i++) {
Balls[i] = new Ball(getRandomFloat(0, mycanvas.width), mycanvas.height, getRandomFloat(20, 70), getRandomFloat(0.1, 1));
}
// event listeners here
});
function draw() {
ctx.clearRect(0, 0, mycanvas.width, mycanvas.height);
for (var i = 0; i < Balls.length; i++) {
Balls[i].makeCirc();
Balls[i].moveCirc();
}
}
function degToRad(deg) {
radians = (deg * Math.PI/180) - Math.PI/2;
return radians;
}
function getRandomFloat(min, max) {
return Math.random() * (max - min) + min;
}
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
//make my flying balls here
//ball(x start value, y start value, radius, speed)
function Ball(xin, yin, radin, spin) {
//make all the variables for the Ball
var x = xin;
var y = yin;
var r = radin;
var sp = spin;
//generating random colors for the circles
var c = 'rgb(' +
getRandomInt(0, 255) +
',' +
getRandomInt(0, 255) +
',' +
getRandomInt(0, 255) +
')';
//draw the circle
this.makeCirc = function() {
ctx.fillStyle = c;
ctx.beginPath();
ctx.arc(x, y, r, 0, Math.PI * 2);
ctx.fill();
}
this.moveCirc = function() {
y -= sp;
if (y + r < mycanvas.height/3) {
// fireworks[fireworks.length] = new Fireworks(x,y,2);
Balls.splice(Balls.indexOf(this), 1);
}
}
}
// function Firework(xin,yin,rin){
// var x = xin;
// var y = yin;
// var r = rin;
//
// }
</script>
</head>
<body>
<canvas id="mycanvas"></canvas>
</body>
</html>
爆発=新しいサークルを作成しますか? –
より大きな円が爆発し消えた地点から爆発する小さな円の束を作ります –