html5-canvas-array von Bilder - zeichnen Sie Bild auf Leinwand
Ich bin mit dem HTML5-canvas und JavaScript zu machen ein Spiel, und ich habe ein array von Bildern für die zahlen 1-10, und müssen dann noch ein array für den walisischen Worten für die zahlen 1-10.
Was ich tun möchte, ist wählen Sie ein element zufällig aus dem Bilder-array und ein zufälliges element aus dem Wort-array und zeigen Sie Sie beide auf die Leinwand. Der Benutzer klickt dann auf ein Häkchen, um anzuzeigen, wenn das Wort, stellt die richtige Zahl, oder ein Kreuz, wenn nicht.
Das problem ist, dass ich nicht sicher bin, wie das zeichnen eines array-Elements auf die Leinwand. Ich habe den folgenden code, welchen ich im Begriff war, zu verwenden, nur um zu testen, ob es funktioniert, bevor ich darüber nachdenken, wie die Elemente gezeichnet werden nach dem Zufallsprinzip ausgewählt:
function drawLevelOneElements(){
/*First, clear the canvas */
context.clearRect(0, 0, myGameCanvas.width, myGameCanvas.height);
/*This line clears all of the elements that were previously drawn on the canvas. */
/*Then redraw the game elements */
drawGameElements();
/*Now draw the elements needed for level 1 (08/05/2012) */
/*First, load the images 1-10 into an array */
var imageArray = new Array();
imageArray[0] = "1.png";
imageArray[1] = "2.png";
imageArray[2] = "3.png";
imageArray[3] = "4.png";
imageArray[4] = "5.png";
imageArray[5] = "6.png";
imageArray[6] = "7.png";
imageArray[7] = "8.png";
imageArray[8] = "9.png";
imageArray[9] = "10.png";
/*Then create an array of words for numbers 1-10 */
var wordsArray = new Array();
wordsArray[0] = "Un";
wordsArray[1] = "Dau";
wordsArray[2] = "Tri";
wordsArray[3] = "Pedwar";
wordsArray[4] = "Pump";
wordsArray[5] = "Chwech";
wordsArray[6] = "Saith";
wordsArray[7] = "Wyth";
wordsArray[8] = "Naw";
wordsArray[9] = "Deg";
/*Draw an image and a word to the canvas just to test that they're being drawn */
context.drawImage(imageArray[0], 100, 30);
context.strokeText(wordsArray[3], 500, 60);
}
aber aus irgendeinem Grund, wenn ich die Seite im browser, in der firebug-Konsole, erhalte ich die Fehlermeldung:
Konnte nicht konvertiert JavaScript-argument arg 0 [nsIDOMCanvasRenderingContext2D.drawImage]
Kontext.drawImage(imageArray[0], 100, 30);
Ich bin mir nicht sicher, ob dies ist, wie ich bin gedacht, um den Zugriff auf das Bild im array-element 0... könnte mir bitte jemand zeigen was ich falsch mache?
* EDIT *
Hab ich änderte den code unter der arrays:
var image1 = new Image();
image1.src = imageArray[0];
/*Draw an image and a word to the canvas just to test that they're being drawn */
context.drawImage(image1, 100, 30);
context.strokeText(wordsArray[3], 500, 60);
aber aus irgendeinem Grund, die nur das element aus der wordsArray gezeichnet auf die Leinwand - das Bild-element aus imageArray nicht angezeigt.
Irgendwelche Ideen?
Sorry, ich weiß nicht, was ein JSFiddle ist? Wie kann ich Sie erstellen?
Sorry. Es ist eine Coole Website namens JSFiddle. Sie können dorthin gehen und machen eine einfache mock-up von Ihrem code, und Sie können dann teilen, dass mit uns, und wir können das Problem beheben einfacher.
Ich habe versucht, einen JSFiddle... aber ich weiß nicht, ob das, was ich getan habe, ist richtig... Die URL zu der Seite, die ich gemacht auf dieser Seite ist: jsfiddle.net/someone2088/22XgR, aber es scheint nicht zu sein die Seite angezeigt wird, richtig in der Vorschau-panel. Oder zumindest wird es nicht angezeigt, die gleiche Art angezeigt, als wenn ich die Seite in einem browser. Die URL für meine live-Seite ist: Benutzer.aber.ac.uk/eef8/iwp/Zuordnung/workingVersion10-05-2012/... Sie haben zu klicken, Starten Sie als erstes ein, wenn es updates, nur das Kreuz ist ein Ereignis-listener
InformationsquelleAutor Someone2088 | 2012-05-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie erstellen Sie eine javascript-Bild mit src-set, um Ihre array-Wert
Ohne, dass Sie versuchen zu Fragen, auf die Leinwand zu zeichnen, string, "1.png" zum Beispiel, das ist nicht, was Sie nach hier!
Ich denke, das einzige, was die stoppen würde, dass das Bild gezeichnet werden, ist der Weg. Wo sind Sie Bilder, die sich in Bezug auf die website-root? In firefox, firebug, sollten Sie in der Lage, um zu sehen, HOLEN Anforderungen an '1.png' etc. Ich würde erwarten, dass diese gezeigt werden, wie 404 s???
Ich dachte 404 "Seite nicht gefunden" - Fehler? Sie sind nicht 404, das Bild gerade nicht angezeigt wird. Das Bild ist eine .png-Datei, und es ist im selben root-Verzeichnis wie die Webseite, auf der ich versuche, um anzeigen auf. Es hat etwas mit der Tatsache zu tun, dass ich versuche, die Anzeige des Bildes auf dem HTML5-canvas, aber ich kann einfach nicht herausfinden, was das problem ist.
404 effektiv Seite nicht gefunden, aber Sie kann von jedem HTTP-request, wenn der Gegner nicht da ist. Vorausgesetzt, deine Bilder sind da und in der GET-Anfrage gibt eine 200 dann, ja, die Frage wird sein, in den code, was ist 'drawGameElements();' in Ihrem code?
InformationsquelleAutor dougajmcdonald
Dies ist der code für drawGameElements()
Buchstäblich alle es tut, ist das zeichnen eines " score-bar auf die Leinwand, das ist einfach nur eine Linie über die Spitze der aktuellen Ebene/total Ebenen, und die Benutzer den aktuellen Spielstand. Ich glaube nicht, dass dies die Probleme, als die Elemente, die diese Funktion gedacht, um anzeigen werden korrekt angezeigt.
Eigentlich ist es nur scheint zu funktionieren... manchmal dauert es ein paar Klicks auf der Leinwand, bevor das iamge erscheint, ein anderes mal wird er nicht angezeigt... es scheint völlig zufällig zu sein, ob das Bild erscheint auf den ersten Klick (auf den button klicken)- wie es sein sollte, oder ob es wird auf einem anschließenden Klick auf den canvas-Bereich, oder ob es nicht angezeigt... ich bin wirklich verwirrt von diesem. Irgendwelche Vorschläge?
Das Bild wird nicht dargestellt, weil Sie bisher noch nicht erhoben wurden, durch den server(das passiert auch mit Spezial-Schriftarten). Jedes mal, wenn Sie versuchen, ein Bild zu laden, das hat sich nicht geladen wurden, bevor eine GET-Anforderung gesendet wird. Was bedeutet, dass einige Bilder ein wenig Zeit nehmen, bevor Sie verwendet werden können. Eine einfache Möglichkeit, dies zu umgehen, ist entweder ein setTimeout() jedes mal, wenn Sie ein Bild laden, oder-Zyklus, wenn, und laden Sie alle Bilder am Anfang, so dass Sie es, wenn Sie wollen, nennen Sie Sie.
InformationsquelleAutor Noble-Surfer
Dies ist eine alte, aber der Grund, warum das Bild nicht angezeigt wird, ist wahrscheinlich, weil Sie den Aufruf onLoad legen Sie dann die src-etwa so:
InformationsquelleAutor WikiPlugs