【发布时间】:2013-10-30 23:18:14
【问题描述】:
我正在尝试编写一个程序来在标签内生成随机矩形, 然后在其原点内旋转每个矩形,如果我再次点击开始按钮,画布应该清除以绘制一组新的矩形并旋转它们等等。
粘贴我的整个程序看起来很可怕,所以我会发布我认为重要的内容:
创建我的数组并初始化一些值:
var rectArrayStartX,rectArrayStartY,rectArrayDimY, rectArrayDimX;
function start()
{
if (i >= 1){
canvas.restore()
i--;
}
construct();
window.setInterval( "rotateShape()", 500 );
}
function construct()
{
if ( i < 1) {
canvas.save();
i++
}
var canvas = document.getElementById("gameId");
var context = canvas.getContext("2d");
var k,m;
var points = parseInt(pGame.box.value);
rectArrayStartX[100];
rectArrayStartY[100];
rectArrayDimY[100];
rectArrayDimX[100];
代码继续,但这个位给了我这个错误: 未捕获的类型错误:无法读取未定义的属性“100”
我试图为每个点创建一个数组,原点 x 和 y + 宽度和高度。 然后使用 fillRect 传递数组值来绘制我的矩形。
我遇到问题的第二位是旋转它们,我使用以下功能:
function rotateShape()
{
var randomAngle;
randomAngle = Math.random() * 5 ;
if (randomAngle>3.14)
{
randomAngle=3.14
}
//context.translate(canvas.width / 2, canvas.height / 2);
context.rotate(randomAngle);
}
我在下面的函数中调用它,但它什么也没做,虽然稍后我需要找到每个矩形原点并以正确的方式旋转它,但现在我只想确保函数正常工作:
function start()
{
if (i >= 1){
canvas.restore()
i--;
}
construct();
window.setInterval( "rotateShape()", 500 );
}
如果修改我的整个代码会更容易,请告诉我提供它。 感谢您抽出宝贵时间,对冗长的话题感到抱歉。
【问题讨论】:
-
阅读题目后的一些感想:我们不可能从您提供的内容中完全解决您的问题。确保
i是一个全局变量。尝试通过在声明变量时对其进行初始化来修复您遇到的错误。尝试用伪代码简化/概述您的程序,这将有很大帮助