2017-12-11 6 views
0

カードの12枚(画像)を横にしておき、1枚のカードをクリックすると裏返すことができます。同じイメージを2回繰り返さずに12の選択肢からランダム(aの画像)カードを表示する。カードターン・キャンバス・ドロー

また、カードをクリックするたびに、番号が付けられたキャンバスの対応する部分を描画してアクセスできるようにしたいと思います。これは、すべてのカードが回転し、すべての領域が描かれるまで続きます。

<html> 
    <head> 
     <title>game</title> 
     <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.js"></script> 
     <!--[if IE]><script type="text/javascript" src="excanvas.js"></script> <![endif]--> 
     <script type="text/javascript" src="html5-canvas-drawing-app.js"> </script> 
     <script language="javascript"> 
     var imagesArray = [ 'images/img-1.jpg', 'images/img-2.jpg', 
     'images/img-3.jpg', 'images/img-4.jpg', 'images/img-5.jpg', 
     'images/img-6.jpg', 'images/img-7.jpg', 'images/img-8.jpg', 
     'images/img-9.jpg', 'images/img-10.jpg', 'images/img-11.jpg', 
     'images/img-12.jpg' ]; 

     var usedImages = {}; var usedImagesCount = 0; 

     function displayImage(){ 

      var num = Math.floor(Math.random() * (imagesArray.length)); 
      if (!usedImages[num]){ 
       document.canvas.src = imagesArray[num]; 
       usedImages[num] = true; 
       usedImagesCount++; 
       if (usedImagesCount === imagesArray.length){ 
        usedImagesCount = 0; 
        usedImages = {}; 
       } 
      } else { 
       displayImage(); 
      } } 


     </script> 
    </head> 
    <body> 
     <table border=0 cellpadding="0" cellspacing="0"> 
     <tr align="center"> 
      <td><img src="images/blank.jpg" name="canvas" onClick="displayImage()"/></td> 
     </tr> 
     </table> 
     <div id="canvasDiv"></div> 
     <script type="text/javascript"> $(document).ready(function() { 
     prepareCanvas(); }); 
     </script> 
     <a href="#" class="button" id="btn-download" download="my-file-name.png">Save</a> 
     <script language="javascript"> var button = document.getElementById('btn-download'); 
     button.addEventListener('click', function (e) { 
      var dataURL = canvas.toDataURL('image/png'); 
      button.href = dataURL; }); 

     </script> 
    </body> 
</html> 

私は開始時に下向きとどのように描画するためのキャンバスの過去だけを選択するために、すべてのカードを持ってする方法を見つけ出すことはできません。

+1

あなたの投稿を読む方法によっては、まったく疑問があるか、複数質問があります。あなたは実際に尋ねたいことを再考すべきです。 – mikuszefski

+0

あなたのHTMLをすべてのjavascriptとともに最小の実例で表示して、あなたが現在いる段階を複製してください。 – pokeybit

+0

コードのように強調表示されるようにコードを再フォーマットしました。ちょうど読みやすくするためです。 :) Stack-overflowは、4つのスペースを引用に使うのが好きです。 –

答えて

0

私はあなたの問題は、このラインだと思います:document.canvas.src = imagesArray[num];私はあなたがこの男を得ることを望んでいたと仮定します:<img src="images/blank.jpg" name="canvas" onClick="displayImage()"/>しかし、それは実際にあなたがそれを行う方法ではありません。 name属性はフォーム要素用です。 html要素自体ではなく、入力が生成する値に名前を付けるために使用します。私はあなたがid属性を望んでいたと思うし、代わりにdocument.getElementById("canvas")を使うべきだと思います。

また、実際のhtmlキャンバスはあなたの例にはありません。私はprepareCanvasそれを挿入すると思います。キャンバスの1つの部分だけを描きたかったとお伝えしました。 html5キャンバスに描画するたびに、既にそこにあるものの上に描画されます。だから私が1つのセクションだけを描きたいならば、私はそのセクションを描画することができます。セクションを再描画する必要がある場合は、セクションを置き換える前にそこにあったものを消去して、clearRectを使用できます。 「マスキング」と呼ばれるものもありますが、それはあなたが望むものではないと思います。あなたが本当に必死になったら、1秒間に60回、新しい状態で画面全体を連続的に再描画する「ゲームループ」を設定する必要があります。

+0

私は私が欲しいものがこれを持つことであることを十分にはっきりしていない恐れがあることを恐れる。 –

+0

ただしランダム –

+0

キャンバスの一部の図は別の問題です。基本的には、対応するカードが選択されたときに12個の別々のキャンバスを描きたい –

関連する問題