根据主元素的位置和旋转角度添加新元素
Add new elements based on position and rotation angle of main element
我正在用原版 javascript 构建一个游戏,您可以在其中用雷达发现鱼。我要实现的目标如下:
我希望物体(鱼)在旋转时随机出现在刻度盘的位置(随机出现在width/height)。我能够得到表盘的角度和位置,但我不知道如何计算新对象的位置。
我目前丑陋的解决方案涉及在div表盘内创建一个临时的,获取位置,并将其用于新对象,但实际上并没有好好工作。
请参阅 this fiddle 了解我目前拥有的内容
function createNewFish() {
// Create new fishies
/*
const pos = document.getElementById('dial').getBoundingClientRect();
const degrees = getDialDegrees();
console.log(pos)
console.log(degrees)
// Calculate position for fish?
*/
对于任何试图这样做的人,我已经设法使用以下解决方案解决了它:
当你有一个旋转的表盘时,你可以用一些相等的 divs(我用的是 9)填充表盘,如下所示:
function DialGenerator() {
for(let i=0;i<9;i++) {
const insideDial = document.createElement('div');
insideDial.classList.add('dial-inside')
insideDial.setAttribute('id', 'dial-inside-'+i)
document.getElementById('dial').appendChild(insideDial)
}
}
然后如果你想在表盘上的随机位置显示元素(就像我的雷达需要的那样),你可以在表盘内使用随机div Math.random() 得到这个 div:
的位置
function getPosition() {
const n = getRandomNumber(1, 6);
// Get a random position on the dial for the fish to appear on
const dialPosition = document.getElementById('dial-inside-'+n).getBoundingClientRect();
return {'top':dialPosition.top, 'left':dialPosition.left}
}
这个 returns 表盘上 div 的位置,您可以用它来将元素放在雷达上。
希望这对某人有所帮助!
我正在用原版 javascript 构建一个游戏,您可以在其中用雷达发现鱼。我要实现的目标如下:
我希望物体(鱼)在旋转时随机出现在刻度盘的位置(随机出现在width/height)。我能够得到表盘的角度和位置,但我不知道如何计算新对象的位置。
我目前丑陋的解决方案涉及在div表盘内创建一个临时的,获取位置,并将其用于新对象,但实际上并没有好好工作。
请参阅 this fiddle 了解我目前拥有的内容
function createNewFish() {
// Create new fishies
/*
const pos = document.getElementById('dial').getBoundingClientRect();
const degrees = getDialDegrees();
console.log(pos)
console.log(degrees)
// Calculate position for fish?
*/
对于任何试图这样做的人,我已经设法使用以下解决方案解决了它:
当你有一个旋转的表盘时,你可以用一些相等的 divs(我用的是 9)填充表盘,如下所示:
function DialGenerator() {
for(let i=0;i<9;i++) {
const insideDial = document.createElement('div');
insideDial.classList.add('dial-inside')
insideDial.setAttribute('id', 'dial-inside-'+i)
document.getElementById('dial').appendChild(insideDial)
}
}
然后如果你想在表盘上的随机位置显示元素(就像我的雷达需要的那样),你可以在表盘内使用随机div Math.random() 得到这个 div:
的位置function getPosition() {
const n = getRandomNumber(1, 6);
// Get a random position on the dial for the fish to appear on
const dialPosition = document.getElementById('dial-inside-'+n).getBoundingClientRect();
return {'top':dialPosition.top, 'left':dialPosition.left}
}
这个 returns 表盘上 div 的位置,您可以用它来将元素放在雷达上。
希望这对某人有所帮助!