私はカーン アカデミーで JavaScript を学んでいて、ラジオ タイプ ボタンの作成に助けが必要です。このコードでは、html タグを使用しないことをお勧めします。
私は最初、mouseX と mouseY の動きに合わせて動く絵文字を持っていました。ただし、ボタン機能を追加した後 (機能します)、絵文字は機能しません。どちらか一方のケースのようです。両方が機能するようにコードを並べ替える方法はありますか?
基本的に、mouseX と mouseY (マウスの X、Y 位置) で移動する絵文字が必要で、クリックされたボタンに応じて、絵文字の上部または下部に円を追加するボタン機能を追加できます。円を追加した後も絵文字を動かせるようにしたいです。右下の 2 つの長方形はボタンです。白い円は絵文字で、背景はピンクの円とピンクの空白の画面です。
描画内、描画外、または drawEmoji 内の mouseClicked のさまざまな組み合わせでコードを並べ替えてみました。しかし、これまでのところ、私が探しているものを私に与える方法に偶然出会ったことはありません. 純粋にjavascriptを使用してこれを行うことは可能ですか? ティア
編集:
これは、コードで作業している場所へのリンクです。HTMLタグの使い方やコードの追加方法がまだわからないので、jsfiddleには入れていません。 https://www.khanacademy.org/computer-programming/spin-off-of-simple-buttons-with-functionsobject-params/4602551803707392
私が何をしたいのかを説明する限り、それは私の投稿の段落 3 にありますか? まだはっきりしていない場合はお知らせください。
これまでの私のコードは次のとおりです。
var x = 250;
var y = 300;
var btnwidth = 100;
var btnheight = 30;
//to highlight the button that is pressed
var highlightbox = function(hix, hiy, hiw, hih) {
noFill();
stroke(56, 247, 8);
strokeWeight(5);
rect(hix, hiy, hiw, hih);
};
//outer circle of the emoji face, the idea was for it to move along with the mouse but now it doesn't
var X = constrain(mouseX, 190, 210);
var Y = constrain(mouseY, 115, 140);
var W = 160;
var H = W;
var drawEmoji = function() {
var X = constrain(mouseX, 190, 210);
var Y = constrain(mouseY, 115, 140);
var W = 160;
var H = W;
fill(247, 242, 242);
stroke(0, 51, 255);
strokeWeight(3);
ellipse(X,Y,W,H);
};
//background behind the emoji
var drawBackground = function() {
background(250, 187, 187);
fill(191, 130, 130);
stroke(255, 0, 0);
strokeWeight(3);
ellipse(200,200,400,400);
fill(247, 207, 247);
rect(x, y, btnwidth, btnheight);
fill(173, 207, 250);
rect(x, y+50, btnwidth, btnheight);
};
drawBackground();
drawEmoji();
var draw = function() {
//mouse click function for the button, when it's clicked a circle appears on the emoji
mouseClicked = function(){
drawBackground();
drawEmoji();
if (mouseX > x && mouseX < (x + btnwidth) && mouseY > y && mouseY < (y + btnheight)) {
highlightbox(x, y, btnwidth, btnheight);
stroke(68, 0, 255);
fill(247, 207, 247);
ellipse(X - 49,Y - 50,W/3,H/3);
}
else if (mouseX > x && mouseX < (x + btnwidth) && mouseY > y + 50 && mouseY < (y + 50 + btnheight)) {
highlightbox(x, y + 50, btnwidth, btnheight);
stroke(68, 0, 255);
fill(173, 207, 250);
ellipse(X+1,Y+100,W/3,H/3);
}
};
};