- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我为我的站点创建了一个 Canvas 横幅,其中有一些移动的编程标签。工作近乎完美。只有一个问题我解决不了。
所有标签都从中心开始(ofc。在我的 JS 文件的第 23/24 行,我设置了所有内容的开始位置)。只有我想要的是设置每个标签的随机起始位置。问题是我不知道如何开始。
这是我的文件:
HTML:
<header id="pageheader">
<canvas id="bannerCanvas"></canvas>
</header>
CSS:
#pageheader{
height: 100px;
width:100%;
background: #f4f5ef; /* For browsers that do not support gradients */
background: -webkit-linear-gradient(#222, #f4f5ef); /* For Safari 5.1 to 6.0 */
background: -o-linear-gradient(#222, #f4f5ef); /* For Opera 11.1 to 12.0 */
background: -moz-linear-gradient(#222, #f4f5ef); /* For Firefox 3.6 to 15 */
background: linear-gradient(#222, #f4f5ef);
}
Javascript (Jquery)
$(function(){
var word0 = '<RUBY>';
var word1 = '<HTML>';
var word2 = '<PHP>';
var word3 = '<SQL>';
var word4 = '<CSS>';
var word5 = '<C#>';
var word6 = '<JAVASCRIPT>';
var word7 = '<JAVA>';
var word8 = '<XML>';
var word9 = '<PYTHON>';
var fps = 30;
var delta = 1; // range (from 0) of possible dx or dy change
var max = 2; // maximum dx or dy values
var jCanvas = $('#bannerCanvas');
var canvas = document.getElementById('bannerCanvas');
canvas.width = jCanvas.parent().width();
canvas.height = jCanvas.parent().height();
var start_x = canvas.width / 2; // line 23
var start_y = canvas.height / 2; // line 34
jCanvas.bind("click", function(){
if(interval === undefined){
interval = window.setInterval(animate, 1000 / fps);
}
else{
interval = clearInterval(interval);
console.log(interval);
}
});
var cxt = canvas.getContext('2d');
cxt.fillStyle = '#FF0000';
var interval = window.setInterval(animate, 1000 / fps);
var w0x = start_x;
var w0y = start_y;
var w1x = start_x;
var w1y = start_y;
var w2x = start_x;
var w2y = start_y;
var w3x = start_x;
var w3y = start_y;
var w4x = start_x;
var w4y = start_y;
var w5x = start_x;
var w5y = start_y;
var w6x = start_x;
var w6y = start_y;
var w7x = start_x;
var w7y = start_y;
var w8x = start_x;
var w8y = start_y;
var w9x = start_x;
var w9y = start_y;
var w0dx = 0;
var w0dy = 0;
var w1dx = 0;
var w1dy = 0;
var w2dx = 0;
var w2dy = 0;
var w3dx = 0;
var w3dy = 0;
var w4dx = 0;
var w4dy = 0;
var w5dx = 0;
var w5dy = 0;
var w6dx = 0;
var w6dy = 0;
var w7dx = 0;
var w7dy = 0;
var w8dx = 0;
var w8dy = 0;
var w9dx = 0;
var w9dy = 0;
function getWx(dx){
var wx = (Math.random() * delta - delta / 2);
if(Math.abs(wx + dx) > max){ wx *= -1; }
return wx;
}
function getWy(dy){
var wy = (Math.random() * delta - delta / 2);
if(Math.abs(wy + dy) > max){ wy *= -1; }
return wy;
}
function bounceX(nw, cur){
if((cur + nw) < 0 || (cur + nw) > canvas.width){
return nw *= -1;
}
else{
return nw;
}
}
function bounceY(nw, cur){
if((cur + nw) < 0 || (cur + nw) > canvas.height){
return nw *= -1;
}
else{
return nw;
}
}
function animate(){
w0dx = bounceX(w0dx += getWx(w0dx), w0x);
w0dy = bounceY(w0dy += getWy(w0dy), w0y);
w1dx = bounceX(w1dx += getWx(w1dx), w1x);
w1dy = bounceY(w1dy += getWy(w1dy), w1y);
w2dx = bounceX(w2dx += getWx(w2dx), w2x);
w2dy = bounceY(w2dy += getWy(w2dy), w2y);
w3dx = bounceX(w3dx += getWx(w3dx), w3x);
w3dy = bounceY(w3dy += getWy(w3dy), w3y);
w4dx = bounceX(w4dx += getWx(w4dx), w4x);
w4dy = bounceY(w4dy += getWy(w4dy), w4y);
w5dx = bounceX(w5dx += getWx(w5dx), w5x);
w5dy = bounceY(w5dy += getWy(w5dy), w5y);
w6dx = bounceX(w6dx += getWx(w6dx), w6x);
w6dy = bounceY(w6dy += getWy(w6dy), w6y);
w7dx = bounceX(w7dx += getWx(w7dx), w7x);
w7dy = bounceY(w7dy += getWy(w7dy), w7y);
w8dx = bounceX(w8dx += getWx(w8dx), w8x);
w8dy = bounceY(w8dy += getWy(w8dy), w8y);
w9dx = bounceX(w9dx += getWx(w9dx), w9x);
w9dy = bounceY(w9dy += getWy(w9dy), w9y);
w0x += w0dx;
w0y += w0dy;
w1x += w1dx;
w1y += w1dy;
w2x += w2dx;
w2y += w2dy;
w3x += w3dx;
w3y += w3dy;
w4x += w4dx;
w4y += w4dy;
w5x += w5dx;
w5y += w5dy;
w6x += w6dx;
w6y += w6dy;
w7x += w7dx;
w7y += w7dy;
w8x += w8dx;
w8y += w8dy;
w9x += w9dx;
w9y += w9dy;
cxt.clearRect(0, 0, canvas.width, canvas.height);
cxt.font="20px Georgia";
cxt.beginPath();
var gradient=cxt.createLinearGradient(0,0,canvas.width,0);
gradient.addColorStop("0","magenta");
gradient.addColorStop("0.5", "blue");
gradient.addColorStop("1.0", "red");
cxt.fillStyle = gradient;
cxt.fillText(word0, w0x, w0y);
cxt.fillText(word1, w1x, w1y);
cxt.fillText(word2, w2x, w2y);
cxt.fillText(word3, w3x, w3y);
cxt.fillText(word4, w4x, w4y);
cxt.fillText(word5, w5x, w5y);
cxt.fillText(word6, w6x, w6y);
cxt.fillText(word7, w7x, w7y);
cxt.fillText(word8, w8x, w8y);
cxt.fillText(word9, w9x, w9y);
}
});
这是我在 jsFiddle 中的脚本
最佳答案
首先添加这3个函数:
/* Generates a random number */
function getRandomArbitrary(min, max) {
return Math.random() * (max - min) + min;
}
/* Sets random position x */
function randStartX(){
var start_x = getRandomArbitrary(0, canvas.width);
return start_x;
}
/* Sets random position y */
function randStartY(){
var start_y = getRandomArbitrary(0, canvas.height);
return start_y;
}
然后改变
var w0x = start_x;
var w0y = start_y;
var w1x = start_x;
var w1y = start_y;
var w2x = start_x;
var w2y = start_y;
var w3x = start_x;
var w3y = start_y;
var w4x = start_x;
var w4y = start_y;
var w5x = start_x;
var w5y = start_y;
var w6x = start_x;
var w6y = start_y;
var w7x = start_x;
var w7y = start_y;
var w8x = start_x;
var w8y = start_y;
var w9x = start_x;
var w9y = start_y;
到
var w0x = randStartX();
var w0y = randStartY();
var w1x = randStartX();
var w1y = randStartY();
var w2x = randStartX();
var w2y = randStartY();
var w3x = randStartX();
var w3y = randStartY();
var w4x = randStartX();
var w4y = randStartY();
var w5x = randStartX();
var w5y = randStartY();
var w6x = randStartX();
var w6y = randStartY();
var w7x = randStartX();
var w7y = randStartY();
var w8x = randStartX();
var w8y = randStartY();
var w9x = randStartX();
var w9y = randStartY();
fiddle :https://jsfiddle.net/tg9gs9pe/3/
关于javascript - 开始 Canvas 绘制随机位置。多个文本绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37798181/
我正在尝试获取从过去的 startposition/location 到当前移动的 currentposition/location 的距离(以米为单位)。 我确实有工作正常的currentposit
所以我有一堆绝对覆盖的 div。用户通过在叠加层上拖动来创建方形 div。如果您要创建一个 div,然后放大和缩小,div 会保持在同一位置,因为它对叠加层是绝对的,如前所述。 然而问题就出在这里。您
我想找到 View 在显示屏幕上的位置。 为此,我使用了 view.getLeft() 、view.getBottom() 、view.getRight() 等方法> , view.getTop()。
我有一个看起来像这样的 View 层次结构(基于其他答案和 Apple 的使用 UIScrollView 的高级 AutoLayout 指南): ScrollView 所需的2 个步骤是: 为 Scr
所以我有一个名为 MARKS 的表,我有这些列 STUDENT_ID, CLASSFORM_NAME, ACADEMIC_YEAR, TERM, SUBJECT_NAME, TOTAL_MARKS
我有一个问题我无法理解,请帮助: 我开发了带有图像的 html 页面,并使用 jQuery UI 帮助使它们可拖动,我将这些图像位置设置为相对位置并给出了左侧和顶部像素,这是页面的链接 http://
我正在尝试创建一个 CSS 动画,它在 sprite 表中循环播放 16 个图像,给人一种幽灵“漂浮”的错觉。动画通过在 background-position 位置之间移动以显示不同状态的幽灵来实现
我正在创建这个网站的 WebView https://nearxt.com/打开时询问位置但是当我使用此链接在 flutter 中创建 webview 时那么它就无法定位我还在应用程序中定义了位置,但
我正在以编程方式创建一个需要跨越 2 个屏幕的窗口。正在创建的窗口的大小是正确的,但窗口大约从第一个屏幕的一半开始。我可以将它拖回第一个屏幕的开头,NSWindow 非常适合。 我只需要知道在窗口的起
位置“/”的匹配叶路由没有元素。这意味着默认情况下它将呈现一个空值,从而导致一个“空”页面 //App.js File import { BrowserRouter as Router, Routes
我有一个运行 Ubuntu 和 Apache 的 VPS 例如,假设地址是:5.5.5.5 在 VPS 上,我有一个名为 eggdrop 的用户(除了我的 root 用户)。 用户 eggdrop 有
我有一个 JLabel与 ImageIcon ,我使用 setIcon() JLabel中的函数. ImageIcon然后上来,坐在我的JLabel 的文字左侧.是否有可能拥有 ImageIcon在文
我的图中有节点,它们的 xlabels 位于它们的左上方。我怎样才能改变这个位置?我希望 xlabels 正好位于节点本身的旁边。 最佳答案 xlp是你想要的属性,但它没有做任何事情。 你不能改变位置
我对基本的 VIM 功能有疑问:(我尝试谷歌搜索但找不到答案) 如何列出所有自定义功能。(我做了 :function 并且不能找到我的自定义函数) 如何获得自定义函数列表中的函数(或它们的存储位置)。
我是 PHP 的新手,虽然我一直在搜索,但我不知道该怎么做。 我知道可以使用 Location("some page") 进行重定向。我还读到,只要没有向用户显示任何内容,它就可以工作。 我想做的是:
如果在 jgrowl.css 中位置更改为“center”,我如何将其覆盖为默认值,即“top-right” $.jGrowl(data, { header: 'data', an
我需要根据用户是否滑动屏幕顶部、屏幕中间或屏幕底部来触发不同的事件。我正在尝试找出最好/最简单的方法来做到这一点,因为我很确定没有办法从 UISwipeGestureRecognizer 获取位置。
我需要枚举用delphi编写的外部应用程序中使用的类 ,因此我需要访问VMT表以获取该信息,但是我找不到任何有关如何在exe(由delphi生成)文件中找到VMT(虚拟方法表)的位置(地址)的文档。
在 D2010 (unicode) 中是否有像 Pos 这样不区分大小写的类似函数? 我知道我可以使用 Pos(AnsiUpperCase(FindString), AnsiUpperCase(Sou
我正在尝试为我的reveal.js 演示文稿制作一个标题,该标题会粘贴在屏幕顶部。标题中的内容在每张幻灯片的基础上都是动态的,因此我必须将标记放在 section 标记中。 显然,如果标记在 sect
我是一名优秀的程序员,十分优秀!