2016-06-10 48 views
1

這是html文件中的一部分,它應該在第一次加載時創建一個新的HangmanView,這工作正常但是當我想通過按下按鈕來繪製部件時,它什麼都不做。我想通過點擊一個HTML按鈕在畫布上畫一條線,我試過但它不起作用

<!DOCTYPE> 
<html> 
<head> 
    <title> Draw Hangman</title> 
    <link rel="stylesheet" href="hangman.css" type="text/css"/> 
    <script src="hangman.js" language="javascript" type="text/javascript"/> 
</head> 
<script> 
    var hm = null; 
</script> 
<body> 
    <article> 
     <h1>Drawing Hangman Part</h1> 

     <canvas id="hangman" onload="hm = new HangmanView(document.getElementById('hangman'));">Sorry your browser doesn"t support canvas</canvas><br/> 
      <input id="drawbutton0" type="button" value="Floor" onClick="hm.drawPart(0);"/> 
      <input id="drawbutton1" type="button" value="V. Beam" onClick="hm.drawPart(1);"/> 
      <input id="drawbutton2" type="button" value="Bridging" onClick="hm.drawPart(2);"/><br/> 
      <input id="drawbutton3" type="button" value="H. Beam" onClick="hm.drawPart(3);"/> 
      <input id="drawbutton4" type="button" value="Rope" onClick="hm.drawPart(4);"/> 
      <input id="drawbutton5" type="button" value="Head" onClick="hm.drawPart(5);"/><br/> 
      <input id="drawbutton6" type="button" value="Body" onClick="hm.drawPart(6);"/> 
      <input id="drawbutton7" type="button" value="Arms" onClick="hm.drawPart(7);"/> 
      <input id="drawbutton8" type="button" value="Legs" onClick="hm.drawPart(8);"/><br/> 
     <br/> 
     <br/> 
     <input id="clear" type="button" value="Clear" onClick="hm.clear();"/> 
    </article> 
</body> 

這是js代碼,它使用作爲HangmanView所有部分的陣列,所述部件自理都有drawParts函數來獲得繪製到畫布上。

HangmanView = function(canvas) { 
    var ctx = canvas.getContext('2d'); 
    ctx.fillStyle = "red"; 
    ctx.fillRect(0,0,150,75); 
    ctx.lineWidth = "5"; 

    this.hangmanParts = new Array(); 
    this.hangmanParts[0] = new Floor(ctx); 
    this.hangmanParts[1] = new VerticalBeam(ctx); 
    this.hangmanParts[2] = new Bridging(ctx); 
    this.hangmanParts[3] = new HorizontalBeam(ctx); 
    this.hangmanParts[4] = new Rope(ctx); 
    this.hangmanParts[5] = new Head(ctx); 
    this.hangmanParts[6] = new Body(ctx); 
    this.hangmanParts[7] = new Arms(ctx); 
    this.hangmanParts[8] = new Legs(ctx); 

} 


HangmanView.prototype.draw = function() { 
    for(var i = 0; i < this.hangmanParts.length; i++) { 
     this.hangmanParts[i].drawPart(); 
    } 
} 

HangmanView.prototype.drawPart = function(level) { 
    if(0 <= level && level <= 8) { 
     this.hangmanParts[level].drawParts(); 
    } 
} 


function Floor(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     conlineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function VerticalBeam(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(80, 140); 
     con.lineTo(80, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Bridging(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function HorizontalBeam(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Rope(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Head(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath();; 
    } 
} 

function Body(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Arms(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Legs(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

下面是該網站看起來像直到現在圖像: Drawing Hangman Parts

(我敢打賭,這是在我的代碼非常簡單的錯誤)

+0

你在傳遞什麼this.hangmanParts [level] .drawParts(); – anshuVersatile

+0

你能提供一個小提琴嗎? – Arg0n

+0

@ Arg0n在這裏你去:https://jsfiddle.net/TheSevinator/o1saojfa/2/ – TheSevinator

回答

-1

也做了一些改變,它的工作,給予好評如果作品

<html> 
<head> 
    <title> Draw Hangman</title> 

</head> 

<body> 

     <h1>Drawing Hangman Part</h1> 

     <canvas id="hangman" onload="setHM" width="400" height="300">Sorry your browser doesn"t support canvas</canvas><br/> 
      <input id="drawbutton0" type="button" value="Floor" onClick="hm.drawPart(0);"/> 
      <input id="drawbutton1" type="button" value="V. Beam" onClick="hm.drawPart(1);"/> 
      <input id="drawbutton2" type="button" value="Bridging" onClick="hm.drawPart(2);"/><br/> 
      <input id="drawbutton3" type="button" value="H. Beam" onClick="hm.drawPart(3);"/> 
      <input id="drawbutton4" type="button" value="Rope" onClick="hm.drawPart(4);"/> 
      <input id="drawbutton5" type="button" value="Head" onClick="hm.drawPart(5);"/><br/> 
      <input id="drawbutton6" type="button" value="Body" onClick="hm.drawPart(6);"/> 
      <input id="drawbutton7" type="button" value="Arms" onClick="hm.drawPart(7);"/> 
      <input id="drawbutton8" type="button" value="Legs" onClick="hm.drawPart(8);"/><br/> 
     <br/> 
     <br/> 
     <input id="clear" type="button" value="Clear" onClick="hm.clear();"/> 


    <script> 
    var hm = null; 
    HangmanView = function(canvas) { 
    var ctx = canvas.getContext('2d'); 
    ctx.fillStyle = "red"; 
    ctx.fillRect(0,0,150,75); 
    ctx.lineWidth = "5"; 

    this.hangmanParts = new Array(); 
    this.hangmanParts[0] = new Floor(ctx); 
    this.hangmanParts[1] = new VerticalBeam(ctx); 
    this.hangmanParts[2] = new Bridging(ctx); 
    this.hangmanParts[3] = new HorizontalBeam(ctx); 
    this.hangmanParts[4] = new Rope(ctx); 
    this.hangmanParts[5] = new Head(ctx); 
    this.hangmanParts[6] = new Body(ctx); 
    this.hangmanParts[7] = new Arms(ctx); 
    this.hangmanParts[8] = new Legs(ctx); 

} 


HangmanView.prototype.draw = function() { 
    for(var i = 0; i < this.hangmanParts.length; i++) { 
     this.hangmanParts[i].drawPart(); 
    } 
} 

HangmanView.prototype.drawPart = function(level) { 
    if(0 <= level && level <= 8) { 
     this.hangmanParts[level].drawParts(); 
    } 
} 


function Floor(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     conlineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function VerticalBeam(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(80, 140); 
     con.lineTo(80, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Bridging(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function HorizontalBeam(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Rope(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Head(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath();; 
    } 
} 

function Body(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Arms(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 

function Legs(ctx) { 
    var con = ctx; 

    this.drawParts = function() { 
     con.beginPath(); 
     con.moveTo(10, 140); 
     con.lineTo(180, 140); 
     con.stroke(); 
     con.closePath(); 
    } 
} 
(function() { 
    hm = new HangmanView(document.getElementById('hangman')); 
    console.log(hm); 
})(); 
function setHM(){ 
hm = new HangmanView(document.getElementById('hangman')); 
    console.log(hm); 
} 


    </script> 


</body> 


</html> 
+0

非常感謝,它爲我工作。但不是在一個單獨的js文件;) – TheSevinator

相關問題