我創建一個文件,像diferent函數調用functions.js文本:HTML5得出停留在頂部
- bgImage()
- 的drawImage()
- 的setText()
我的問題是,我的文字保持不變。
我想要做的是,當我打電話setText()我可以把文本我想要的地方。文本將被放置在convas的頂部。我知道我需要首先調用圖像繪製加載函數來讓它們不覆蓋我的文本。但我在我的JS中這樣做了。
所以它非常重要,我可以調用函數setText()多次作爲我想要的,所有圖像繪製/設置後,文本將可見。
我想要頂部的文字。
這裏是我的代碼:
functions.js
var canvas = "";
var context = "";
function canvasInit() {
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
}
function bgImage() {
var imageObj = new Image();
imageObj.onload = function() {
var pattern = context.createPattern(imageObj, 'repeat');
context.rect(0, 0, canvas.width, canvas.height);
context.fillStyle = pattern;
context.fill();
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/wood-pattern.png';
}
function drawImage() {
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, 10, 50);
context.drawImage(imageObj, x, y, width, height);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
}
function (text) {
context.font = 'italic 40pt Calibri';
context.fillText(text, 150, 100);
}
的index.html
<!DOCTYPE html>
<html>
<head>
<script src="functions.js"></script>
<script>
document.addEventListener('DOMContentLoaded',ready);
function ready() {
canvasInit();
bgImage();
drawImage();
setText("Yo");
setText("heyyyy");
}
</script>
</head>
<body>
<canvas id="myCanvas" width="500" height="400"></canvas>
</body>
</html>
更新的測試不工作:
個的index.html
<!DOCTYPE html>
<html>
<head>
<script src="functions.js"></script>
<script>
document.addEventListener('DOMContentLoaded',ready);
function ready() {
canvasInit();
bgImage(function() {
setText();
});
}
</script>
</head>
<body>
<canvas id="myCanvas" width="500" height="400"></canvas>
</body>
</html>
functions.js
var canvas = "";
var context = "";
function canvasInit() {
canvas = document.getElementById('myCanvas');
context = canvas.getContext('2d');
}
function bgImage(callback) { // add parameter for function
var imageObj = new Image();
imageObj.onload = function() {
var pattern = context.createPattern(imageObj, 'repeat');
context.rect(0, 0, canvas.width, canvas.height);
context.fillStyle = pattern;
context.fill();
if (typeof callback === 'function') {
callback(); // invoke callback function
}
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/wood-pattern.png';
}
function drawImage() {
var imageObj = new Image();
imageObj.onload = function() {
context.drawImage(imageObj, 10, 50);
context.drawImage(imageObj, x, y, width, height);
};
imageObj.src = 'http://www.html5canvastutorials.com/demos/assets/darth-vader.jpg';
}
function setText() {
context.font = 'italic 40pt Calibri';
context.fillText("Yoo adfa ds asd a sd", 150, 100);
}
確定這看起來很不錯..我有一些問題..比方說,我想25個文本後調用10個圖像,然後。我已經可以在腦海中看到瘋狂的功能列表。在這種情況下你會做什麼?這件事是我需要能夠動態地輸入文本,每當我需要時。所以我不能依靠繪製負載上的一切。我需要能夠插入文本讓我們說一個按鈕上的點擊事件。 – Daniel
我不能讓你的代碼示例工作。我只是複製粘貼你寫的和替換的。 – Daniel
如果我只drawImage()它的作品,但在我的代碼我不使用drawImage()。 – Daniel