Mich würd die Lösung ja noch interessieren
Beiträge von Nitamud
-
-
Ist das Attribut kennung in der Klasse gesetzt?
Bzw. was gibt console.log(this) im Funktionscope aus?
-
Zitat
Du hast einen kleinen Schönheitsfehler gemacht. Du rufst die update-Funktion direkt auf anstatt sie als Argument zu übergeben (Callback und so):
Danke, sowas fällt einem selbst irgendwie nicht auf
Habs, jetzt erstmals so geändert, wobei ich nach deinem Nachtrag mit bind noch überlege darauf zurückzugreifen(finde ich sauberer)
JavaScript
Alles anzeigenthis.uptade = function(e) { e.size = e.getSize(); e.test.width = e.size[0]; e.test.height = e.size[1]; e.ctx.fillStyle = "black"; e.ctx.fillRect(0, 0, e.size[0], e.size[1]); e.ball.uptade(); requestAnimationFrame(function() { e.uptade(e); }); }; requestAnimationFrame(this.uptade); }
Wirkt irgendwie um einiges sauberer
JavaScript
Alles anzeigenthis.uptade = function() { this.size = this.getSize(); this.test.width = this.size[0]; this.test.height = this.size[1]; this.ctx.fillStyle = "black"; this.ctx.fillRect(0, 0, this.size[0], this.size[1]); this.ball.uptade(); requestAnimationFrame(this.uptade); requestAnimationFrame(this.uptade.bind(this)); }; requestAnimationFrame(this.uptade);
ZitatBeim noch mal drüber schauen stelle ich fest es müsste doch update und nicht uptade heißen? Außer natürlich es wird insistiert
Ich und meine Englischkünste
Edit: Habe das ganze nun auf bind umgemünzt und es klappt hervorragend
Das einzige Problem, dass ich dort noch habe ist folgendes:[Blockierte Grafik: http://www.fotos-hochladen.net/uploads/hmimngsv2x30.png]
Das this scheint hier immer abwechselnd das window-Object bzw. das richtige Spielfeld-Object zu referenzieren.
Hier habe ich aber überhaupt keine Ahnung woher dieses seltsame Wechselspiel kommen könnteSo und hier noch des Rätsel Lösung:
Es reich ein einfacher Aufruf via
Der zweite Aufruf wie in Basis Beispiel oben, würde nähmlich eine zweite Rekursion einleiten, bei der
this das window-Objekt referenziert -
Ich war gerade ein wenig dabei mit JavaScript und dem Canvas-Element zu spielen, als ich folgende Fehlermeldung bekam:
"Maximum call stack size exceeded"
Nach einer kurzen Suchanfrage weiß ich nun, dass dies daher rührt, dass eine rekursive Funktion zu oft aufgerufen wird.
Ich dachte aber genau für viele Animation/Positionsänderungen sei window.requestAnimatonFrame geeignetWürde mich freuen , wenn jemand einen Tipp kennt um dies zu umgehen
Hier noch der Code dazu:
JavaScript
Alles anzeigenfunction Spielfeld() { //Welt this.test = document.getElementById('test'); this.ctx = this.test.getContext("2d"); //Objekte this.ball = new Ball("white", 5); //Fenstergröße erkennen this.getSize = function() { var width = window.innerWidth - 50; var height = window.innerHeight - 50; return [width, height]; }; //Spielgeschehen behandeln this.uptade = function() { this.size = this.getSize(); this.test.width = this.size[0]; this.test.height = this.size[1]; this.ctx.fillStyle = "black"; this.ctx.fillRect(0, 0, this.size[0], this.size[1]); this.ball.uptade(); requestAnimationFrame(this.uptade()); }; requestAnimationFrame(this.uptade()); } function Ball(color, diameter) { //Unveränderlich this.color = color; this.r = diameter / 2; //Veränderbar this.world = document.getElementById('test'); this.ctx = this.world.getContext("2d"); //Position: this.x = 50; this.y = 50; //Geschwindigkeit: this.vx = 3; this.vy = 6; //Methoden this.draw = function() { //Ball zeichnen this.ctx.beginPath(); this.ctx.fillStyle = this.color; this.ctx.arc(this.x, this.y, this.r, 0, Math.PI * 2, false); this.ctx.fill(); }; this.uptade = function() { //Änderungen in der Umgebung behandeln this.world = document.getElementById('test'); this.ctx = this.world.getContext("2d"); //Neue Spielgröße speichern var size = [this.world.height, this.world.width]; //Kollision mit dem Rand? if (this.y >= size[1]) { this.y = size[1]; this.vy = -this.vy; } else if (this.y <= 0) { this.y = 0; this.vy = -this.vy; } if (this.x >= size[0]) { this.x = size[0]; this.vx = -this.vx; } else if (this.x <= 0) { this.x = 0; this.vx = -this.vx; } //Position ändern this.x += this.vx; this.y += this.vy; //Ball neu zeichen this.draw(); }; } function init() { var Spiel = new Spielfeld(); Spiel.uptade(); }
mfg Nita
-
Bitte das Tutorital aus dem Threadnamen nehmen es handelt sich nämlich um keines
Und erstmal wilkommen im Forum
Zum Problem:
Du suchst http://wiki.selfhtml.org/wiki/…verweissensitive_Grafiken
(area...)
-
Wer mit JS anfängt wird erstmals für 90% aller Sprachen vertorben
Würde auch vorher PHP empfehlen, dass ist nicht ganz so undurchschaubar wie JS.Was ich dir als Tipp noch auf den Weg geben möchte ist diese Seite:
http://www.peterkropff.de/site/einfuehrung/einfuehrung.htmWenn du dort alles verstanden und durchgearbeitet hast, hast du meiner Meinung nach das Basiswissen erlangt und wirst mithilfe von google und den jeweiligen Dokus fast alles umsetzen können. Zudem ist diese Seite auch noch sehr ironisch und lustig geschrieben, was das Lernen einfacher macht
-
Welche Daten du ausgeben willst, weiß ich nicht, dies und auch die Art der Ausgabe musst du dir selbst überlegen.
Wolf hat dir oben nur eine ajax.php gezeigt die du mit einem AJAX-Call und den entsprechenden Parametern aufrufen musst.
DU musst im Grunde also Links kreieren ([1-5],[6-10],[11-15]) und denen als Click-Eventhandler die Call-Funktion mit den entsprechenden
Datensätzen übergeben -
Du wandelst hier beim Ajax-Call die aus der DB kommenden Daten in ein JSON-Objekt um(Java Script Object Notation). Damit musst du dann weiterarbeiten, in wolfs Beispiel wird das ganze nur ausgegeben um zu zeigen was du zurückbekommen wirst
-
Sry aber ich hab dir ziemlich eingies dazu per Pm erklärt, dass nicht inhaltslos war...
ZitatIn deiner externen Js-Datei(slider.js) ist die Angabe <script type="text/javascript"> nicht nötig und der Browser versteht diese nicht(es handelt sich um keinen js-Code).
In einer externen Datei für JavaScript kannst du nur JavaScript und kein HTML nutzen, lass dies weg.Zum CSS , bei mir findet der Server die Datei https://www.hundebeinem.lima-city.de/css/responsive.css nicht und antwortet mit einem 404-Error(Datei nicht gefunden). Schau mal ob da eine falsche Pfadangabe die Schuld trägt
Noch eine kleine Anmerkung dazu:
Du solltest jQuery über https laden da sonst die ganze Website als unsicher eingestuft wird(kam dadurch fast nicht zur Seite).
mfg
-
Achte mal auf die Meldungen in der Browser-Konsole, wie man sie an wolfs Screen sehen kann. Die Meldungen dort sind meist detailliert und aufschlussreich
-
Ich hatte sowas mal bei einem privaten Projekt im Einsatz. Dort lies ich den User per input-color in den Einstellungen die Farben beeinflussen und habe diesen nachher in der Datenbank gespeichert. Hier für jeden Farbwert eine eigene Klasse zu erzeugen, halte ich für sinnfrei. Die würde ich in einem data-attribut hinterlegen und zur Laufzeit per Js auslesen und anwenden. Bei einer solchen Aktion aber bitte nicht die Serverseitige validierung vergessen (Whitelist bei begrenzten Möglichkeiten, RegEx für alle Farbvariationen).
-
Meida-Queries in Verbindung mit dem z-index und der entsprechenden Positionierung dürften dir sehrwohl helfen
-
Herzlich Willkommen im Forum,
In der heutigen Zeit , in der mobile Devices immer mehr an Bedeutung gewinnen , sollte man seine Seite auf keinen Fall auf eine gewisse Seitenlänge festlegen.
Stattdessen sollte man Media Queries nutzen um auf jedem Gerät optimale Nutzbarkeit zu ermöglichen.Das mit der eigenen Scrollleite für den Content finde ich auch etwas wage, ich möchte sowas beispielsweise nicht haben. Gibt es irgendwelche Gründe warum dies so sein soll?
Hab dir trotzdem mal ein Rohgerüst gezimmert:
http://codepen.io/Nitamud/pen/aOOMgq
PS: Entschuldigt meine spärlichen Worte, bin gesundheitlich gerade noch nicht wieder am Höhepunkt
-
Den Validator darfst du nicht auf den PHP-Quellcode anweden, sondern auf den Quellcode der generiert wird.
Also auf das anwenden was du im Browser unter Quellcode anzeigen vorfindest
-
Eine Funktion rufst du mit dem Funktionennamen(Parameter1,Parameter2..) auf, dass function kannst du dir dort sparen
Falls du nicht mit immediately Invoked Funktions, sondern Closures zurückgeben willst solltest du mal unter Closures googeln, aber
ich denke das ist nicht genau das was du suchst.Du willst hier eher bereits vorher definierte Funktion aufrufen, was wie oben erwähnt gemacht wird. Zudem rate ich dir die Funktionen ganz oben in deinem Script
zu definieren, damit du sie schneller findest und auch auf andere Programmiersprachen vorbereitet bist. Den es funktioniert nicht in jeder Sprache so, dass du die Funktion erst im Nachhinein definieren kannst. Dies ist eine besondere Eigenschaft von Javascript die sich Hoisting nenntDu benötigst hier eine Abfrage die immer wieder (ggf. rekursiv) prüft ob eine Taste gedrückt wurde. Wenn ja musst du prüfen ob es sich um jene handelt die eine gewisse Funktionsweise im Spiel ermöglichen sollen(Pfeil links/rechts) und dann dort die jeweilige Funktion aufrufen.
Schema:
RekursiveTimeoutfunktion ->
falls Tastendruck vorliegt ->
Prüfung ob daraus ein ereignis folgt ->
ausführung dieses Ereignises<---- Selbstaufruf der Funktion(Rekursion)
mfg
-
So, habs mal angepasst.
Hatte das wohl auf die Eile überlassen
-
-
Als kleine Anregung:
http://codepen.io/Nitamud/pen/VLYLrM
Falls du immer noch Probeme haben solltest, einfach melden
-
Weils grad zum thema passt:
http://www.heise.de/newsticker…ung-abwerten-2613323.html
Googles Meinung zum Seminar:
-
Im Grunde geht das nicht hundertprozentig, wer will wird den Code immer sehen können.
Hier mal ein paar Vorschläge fr einen etwas besseren Schutz gegen unerfahrenere Webnutzer: