-1

是否可以在 html5 画布上创建多项选择/琐事?沿着多项选择题会有猜测图像(内容不仅是文字),例如它包含 30 个问题并随机显示 10 个问题,每个屏幕 1 个问题(例如,如果回答完一个问题,屏幕将滑动到另一个问题 -另一个问题被隐藏了)

我用谷歌搜索,它涉及到使用像 appcobra 这样的应用程序,但我不能使用应用程序来创建 html5 画布实现,

如果可能的话,是否有任何教程或参考资料可以了解它?先感谢您。:)

4

2 回答 2

1

我最近刚刚完成了一个需要问题和按钮的 HTML5 画布项目。当您到达问题页面时会播放音频,然后您可以单击 A、B、C、D,它会检查您是否得到正确的答案。我没有找到关于你正在寻找什么的教程。

您将使用 html5 画布的主要功能是显示问题和检测用户交互。

为每个元素创建一个图层:文本、背景、按钮。

使用 canvastext.com 获取文本,它有助于自动换行和样式设置。

然后,您可以使用渐变或图像作为按钮。您将需要有一个侦听器来检测在按下按钮的坐标中的鼠标点击。

如果您对如何执行上述操作有任何具体问题,请告诉我。我还完全按照您的描述创建了一个 Java 小程序。我也找不到任何关于它的在线教程,但它更容易编程,因为我更喜欢使用 java。

于 2013-08-26T23:59:23.793 回答
0

这是完全可能的,但由于画布是一个被动元素(它不知道它的内容,除了它是一个像素缓冲区),你需要自己实现按钮逻辑。

在这种情况下,我建议使用纯 HTML(5) 和 CSS3(它们支持可用于制作幻灯片效果等的动画)。

但是,当您要求画布时,这里有一个按钮点击检测示例,您可以根据需要采用 -

定义按钮区域:

var buttons = [
    [10, 10, 50, 30],
    [70, 10, 50, 30],
    [130, 10, 50, 30]
];

渲染按钮:

for(; b = buttons[i]; i++)
    ctx.rect(b[0], b[1], b[2], b[3]);

/// simple buttons in this example..
ctx.fillStyle = '#F90';
ctx.fill();

现在您可以点击点击回调(或者如果您想在鼠标按下时更改颜色,而不是使用 onmousedown/up 回调):

canvas.onclick = function(e) {

    /// adjust mouse position to relative to canvas:
    var r = canvas.getBoundingClientRect(),
        x = e.clientX - r.left,
        y = e.clientY - r.top,
        i = 0, b;

    /// check if x/y is within any of the buttons
    for(; b = buttons[i]; i++) {
        if (x > b[0] && x < b[0] + b[2] &&
            y > b[1] && y < b[1] + b[3]) {

            /// we got a hit - handle button
            alert('Button ' + i + ' was clicked!');
            return;
        }
    }    
}

这是一个在线演示

于 2013-08-27T07:04:07.723 回答