2013-03-08 142 views
0

我想绘制一个画布上的图像数组,但没有任何绘制!以下是我的代码!还我试图了解的PhoneGap和JavaScript 的index.html:在画布上绘制阵列图像?

<!DOCTYPE html> 
<html> 
<head> 
<title>Minecraft Background Check</title> 
</head> 
<body> 
<canvas id="mycanvas" style="position:fixed; top:0; left:0; border:1px solid #c3c3c3; width: 100%; height: 100%;"></canvas> 
<script type="text/javascript" src="cordova-2.5.0.js"></script> 
<script type="text/javascript"> 
document.addEventListener("deviceready",ondeviceReady,false); 
function onDeviceReady() {} 
    //get element by id 
var c = document.getElementById("mycanvas"); 
var ctx = c.getContext("2d"); 
    //array image which need to draw in canvas 
var image = ["img/image12","img/image13","img/image14","img/image15","img/image10"]; 
var m_arrImages = {}; 
for (var src in image) { 
    m_arrImages[src] = new Image(); 

    m_arrImages[src].src = image[src]; 
} 
var imagePositionsX = [20, 80, 140, 200, 260, 320, 380, 440, 500, 560]; 
var imagePositionsY = [20, 60, 100, 140, 180, 220, 260, 300, 340, 380]; 
var i, x, y; 
for (i = 0; i < m_arrImages.length; i++) { 
    x = imagePositionsX[ Math.floor(Math.random()*10) ]; 
    y = imagePositionsY[ Math.floor(Math.random()*10) ]; 

    ctx.drawImage(m_arrImages[i], x, y, 50, 50); 
} 
</script> 
</body> 
</html> 

回答

2

您已设置的功能ondeviceReady到在deviceready事件中运行,但没有定义的功能。你已经定义了一个叫做onDeviceReady的函数。 Javascript变量和函数名称区分大小写,因此在deviceready事件中不会运行。

变化:

document.addEventListener("deviceready",ondeviceReady,false); 

document.addEventListener("deviceready",onDeviceReady,false); 
+0

我修复错误!但有同样的问题! hix hix! – 2013-03-08 09:05:06

1

可能是我错了,但.. “m_arrImages” - 这是用字符串,而不是图像只是阵列,是不是?

我的东西,它是前人的精力类似的东西:

var m_arrImages = {}; 
for (var src in image) { 
    m_arrImages[src] = new Image(); 
    m_arrImages[src].src = image[src]; 
} 
+0

我修好了!但同样的问题! hixhix!感谢帮助! – 2013-03-08 09:16:45