私はキャンバスゲームを構築しています。これで私はループで背景画像をスライドさせたい。私はjavascriptを使ってこれを行う方法を知らない。私はバックグラウンドに連続してスライドする単一のイメージを使用します。 ありがとうございます。html5キャンバスでのスクロール/スライドバック
5
A
答えて
11
これを達成するためのいくつかの方法は、最初のものがputImageData
を使用してパフォーマンスヒットを行い、2番目の方法がdrawImage
を使用するだけです。また、2番目のメソッドには、左から右へ、または右から左へのいずれかのコードがあります。
http://www.somethinghitme.com/projects/bgscroll/
var ctx = document.getElementById("canvas").getContext("2d"),
canvasTemp = document.createElement("canvas"),
scrollImg = new Image(),
tempContext = canvasTemp.getContext("2d"),
imgWidth = 0,
imgHeight =0,
imageData = {},
canvasWidth = 600,
canvasHeight = 240,
scrollVal = 0,
speed =2;
scrollImg.src = "citybg.png";
scrollImg.onload = loadImage;
function loadImage(){
imgWidth = scrollImg.width,
imgHeight = scrollImg.height;
canvasTemp.width = imgWidth;
canvasTemp.height = imgHeight;
tempContext.drawImage(scrollImg, 0,0, imgWidth, imgHeight);
imageData = tempContext.getImageData(0,0,imgWidth,imgHeight);
render();
}
function render(){
ctx.clearRect(0,0,canvasWidth,canvasHeight);
if(scrollVal >= canvasWidth-speed){
scrollVal = 0;
}
scrollVal+=speed;
// This is the bread and butter, you have to make sure the imagedata isnt larger than the canvas your putting image data to.
imageData = tempContext.getImageData(canvasWidth-scrollVal,0,scrollVal,canvasHeight);
ctx.putImageData(imageData, 0,0,0,0,scrollVal, imgHeight);
imageData = tempContext.getImageData(0,0,canvasWidth-scrollVal,canvasHeight);
ctx.putImageData(imageData, scrollVal,0,0,0,canvasWidth-scrollVal, imgHeight);
setTimeout(function(){render();},10);
}
2方法上記と同じコードを使用して、ちょうど次に、これらの二つの機能を変更します。
http://www.somethinghitme.com/projects/bgscroll/scrolldrawimage.html
function loadImage(){
imgWidth = scrollImg.width,
imgHeight = scrollImg.height;
canvasTemp.width = imgWidth;
canvasTemp.height = imgHeight;
render();
}
function render(){
ctx.clearRect(0,0,canvasWidth,canvasHeight);
if(scrollVal >= canvasWidth){
scrollVal = 0;
}
scrollVal+=speed;
ctx.drawImage(scrollImg,canvasWidth-scrollVal,0,scrollVal,imgHeight, 0, 0, scrollVal,imgHeight);
ctx.drawImage(scrollImg,scrollVal,0,imgWidth, imgHeight);
// To go the other way instead
ctx.drawImage(scrollImg,-scrollVal,0,imgWidth, imgHeight);
ctx.drawImage(scrollImg,canvasWidth-scrollVal,0,imgWidth, imgHeight);
setTimeout(function(){render();},10);
}
関連する問題
- 1. html5キャンバスのキャンバス
- 2. html5キャンバスでカスタムスクロール
- 3. HTML5キャンバスのクロスオリジンデータ
- 4. MagentoのHTML5キャンバス
- 5. HTML5キャンバスのタイミング
- 6. (HTML5キャンバス/ Javascriptの)
- 7. html5キャンバスでのパスベースのアニメーション
- 8. html5キャンバスでの動きjpeg
- 9. HTML5キャンバスでのPDFレンダリング
- 10. HTML5キャンバスでの描画
- 11. HTML5キャンバスでのリッチテキスト編集
- 12. HTML5キャンバスとbubble.js
- 13. HTML5キャンバス - 敵対
- 14. HTML5キャンバス、GUI
- 15. HTML5キャンバス、テキスト、JavaScript
- 16. HTML5キャンバス描画
- 17. HTML5キャンバス:ピクセル
- 18. Html5キャンバスJavascriptライブラリ?
- 19. HTML5キャンバス物理
- 20. HTML5キャンバス "リセット" fillStyle
- 21. HTML5キャンバスの例スクリーンショット
- 22. HTML5キャンバスのAndroidピクセル
- 23. HTML5キャンバスとその逆のキャンバス
- 24. HTML5キャンバスから別のHTML5キャンバスにドラッグアンドドロップする方法
- 25. HTML5キャンバスで線をクリア
- 26. HTML5キャンバスと光源
- 27. HTML5キャンバス画像クリッピング
- 28. オーバーレイHTML5キャンバス画像
- 29. HTML5キャンバス:度記号
- 30. HTML5キャンバスと操作
私はあなたが継続的に一つの画像をスライド可能性がわからない - あなたは、エッジでシームレスに結合する二つの部分をスライドさせことができます。 – Widor
@Coulton jQueryを使う理由はありません。キャンバスで何もしません。 – Loktar
@Widor最も確実に1つの画像を使用できます。その一部をキャンバスにコピーするだけで、シームレスな効果が得られます。 – Loktar