javascript - jQuery animate 在 Canvas 上移动文本

标签 javascript jquery canvas text jquery-animate

我见过的所有使用 animate 的例子都是使用 HTML 元素。在我的游戏中,我只有 Canvas 元素,所有文本都绘制在 Canvas 上。我希望能够在屏幕上创建文本并让它在 Canvas 上从左向右滚动。

我找到了这段代码,

$({ left: 0 }).animate({ left: 10 }, {duration: 1000, step: function(now, fx) {
  $("#test").css('left', now);
}});

使用 jsfiddle - http://jsfiddle.net/AgPmN/

这正是我所需要的,但它再次使用了 $("#test")。我可以更改它,使值只是一个 JavaScript 值,并且它将在 Canvas 上滚动吗?

最佳答案

问题是

This is exactly what I need, but it again uses $("#test"). Can I change this so that value is just a JavaScript value and that it will scroll across a canvas?

是的,你可以,你可以去掉 animate() 回调中的 jQuery 并使用 now 变量来做任何你想做的事,因为实例在 Canvas 上移动文本

$({ left: 300 }).animate({ left: 10 }, {duration: 5000, step: function(now, fx) {
    moveMyFrackingCanvas(now);
}});

function moveMyFrackingCanvas(val) {
    var c=document.getElementById("myCanvas");
    c.width = c.width;
    var ctx=c.getContext("2d");
    ctx.font="30px Verdana";
    var gradient=ctx.createLinearGradient(0,0,c.width,0);
    gradient.addColorStop("0","magenta");
    gradient.addColorStop("0.5","blue");
    gradient.addColorStop("1.0","red");
    ctx.fillStyle=gradient;
    ctx.fillText("Holy Crap!", val, 90);
}

FIDDLE

关于javascript - jQuery animate 在 Canvas 上移动文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23273606/

相关文章:

javascript - Meteor._wrapAsync 已重命名为 Meteor.wrapAsync undefined

jQuery 选择器 : How do I select the outer div?

jquery - 是否可以使用jquery函数(例如delegate)来监听jquery ui事件?

c# 将 Canvas 的所有子项复制到另一个 Canvas

javascript - Canvg - Canvas 在鼠标移动时发生变化

javascript - Canvas 清除未编程的矩形

javascript - Gulp 脚本 [Gulp Watch] - 找不到模块 'browser-sync'

javascript - 我可以在图片之前加载JS吗?

javascript - 按条件 Javascript 对数组进行分块

javascript - 检测浏览器对 SVGFragmentIdentifier(s) 的支持