내가 찾은이 캔버스 스크립트의 뒷면에 배경 이미지를 배치하려고합니다. 컨텍스트와 관련이 있다는 것을 알고 있습니다. 채우기 스타일은 있지만 어떻게 할 것인지 확실하지 않습니다.HTML5 캔버스 배경 이미지
: - 현재 단지 배경으로 검은 색을 보여주는 아닌 이미지var waveform = (function() {
var req = new XMLHttpRequest();
req.open("GET", "js/jquery-1.6.4.min.js", false);
req.send();
eval(req.responseText);
req.open("GET", "js/soundmanager2.js", false);
req.send();
eval(req.responseText);
req.open("GET", "js/soundcloudplayer.js", false);
req.send();
eval(req.responseText);
req.open("GET", "js/raf.js", false);
req.send();
eval(req.responseText);
// soundcloud player setup
soundManager.usePolicyFile = true;
soundManager.url = 'http://www.samskirrow.com/client-kyra/js/';
soundManager.flashVersion = 9;
soundManager.useFlashBlock = false;
soundManager.debugFlash = false;
soundManager.debugMode = false;
soundManager.useHighPerformance = true;
soundManager.wmode = 'transparent';
soundManager.useFastPolling = true;
soundManager.usePeakData = true;
soundManager.useWaveformData = true;
soundManager.useEqData = true;
var clientID = "345ae40b30261fe4d9e6719f6e838dac";
var playlistUrl = "https://soundcloud.com/kyraofficial/sets/kyra-ft-cashtastic-good-love";
var waveLeft = [];
var waveRight = [];
// canvas animation setup
var canvas;
var context;
function init(c) {
canvas = document.getElementById(c);
context = canvas.getContext("2d");
soundManager.onready(function() {
initSound(clientID, playlistUrl);
});
aniloop();
}
function aniloop() {
requestAnimFrame(aniloop);
drawWave();
}
function drawWave() {
var step = 10;
var scale = 60;
// clear
context.fillStyle = "#ff19a7";
context.fillRect(0, 0, canvas.width, canvas.height);
// left wave
context.beginPath();
for (var i = 0; i < 256; i++) {
var l = (i/(256-step)) * 1000;
var t = (scale + waveLeft[i] * -scale);
if (i == 0) {
context.moveTo(l,t);
} else {
context.lineTo(l,t); //change '128' to vary height of wave, change '256' to move wave up or down.
}
}
context.stroke();
// right wave
context.beginPath();
context.moveTo(0, 256);
for (var i = 0; i < 256; i++) {
context.lineTo(4 * i, 255 + waveRight[i] * 128.);
}
context.lineWidth = 0.5;
context.strokeStyle = "#000";
context.stroke();
}
function updateWave(sound) {
waveLeft = sound.waveformData.left;
}
return {
init : init
};
})();
개정 코드 :
여기context.fillStyle = "url('http://www.samskirrow.com/background.png')";
내 현재 코드입니다 : 나는 이런 식으로 뭔가를 읽고 그 라인을 싶습니다
// canvas animation setup
var backgroundImage = new Image();
backgroundImage.src = 'http://www.samskirrow.com/images/main-bg.jpg';
var canvas;
var context;
function init(c) {
canvas = document.getElementById(c);
context = canvas.getContext("2d");
soundManager.onready(function() {
initSound(clientID, playlistUrl);
});
aniloop();
}
function aniloop() {
requestAnimFrame(aniloop);
drawWave();
}
function drawWave() {
var step = 10;
var scale = 60;
// clear
context.drawImage(backgroundImage, 0, 0);
context.fillRect(0, 0, canvas.width, canvas.height);
// left wave
context.beginPath();
for (var i = 0; i < 256; i++) {
var l = (i/(256-step)) * 1000;
var t = (scale + waveLeft[i] * -scale);
if (i == 0) {
context.moveTo(l,t);
} else {
context.lineTo(l,t); //change '128' to vary height of wave, change '256' to move wave up or down.
}
}
context.stroke();
// right wave
context.beginPath();
context.moveTo(0, 256);
for (var i = 0; i < 256; i++) {
context.lineTo(4 * i, 255 + waveRight[i] * 128.);
}
context.lineWidth = 0.5;
context.strokeStyle = "#ff19a7";
context.stroke();
}
function updateWave(sound) {
waveLeft = sound.waveformData.left;
}
return {
init : init
};
})();
당신은 내가 여기에 일하고 있어요 사이트를 참조 할 수 있습니다 http://www.samskirrow.com/client-kyra
는'context.fillStyle'은 문자열,'CanvasGradient'와'CanvasPattern' 객체를 수용하고, 문자열은 CSS 색 값으로 해석된다. 이미지를 캔버스에 그리려면 소스가 필요한 이미지의 URL로 설정된 'Image' 객체를 만든 다음'context.drawImage'를 사용하면됩니다. 만약 당신이'drawWave'에있는 어떤 것보다 먼저 이미지를 그린다면, 캔버스를 지울 때 바로 배경이됩니다. – Rikonator
고마워요 @Rikonator 내 스크립팅은 그다지 훌륭하지 않아, 내가 어떻게 당신의 포인트를 구현할 수 있는지에 대해 자세히 설명 할 수 있을까 ?? –
@Loktar는 이미 대답했지만 추가 할 것이 아무것도 없었습니다. 어쨌든 활성 애니메이션을 사용하는 바이올린이 있습니다. http://jsfiddle.net/vZ8UT/ – Rikonator