Ich versuche, für die Auswahl eines Charakters, gibt es viele Anleitungen zum Erstellen einer Standard-Karussell (Website Diashows etc.) ein Karussell Typ Effekt in Phaser zu schaffen, aber ich versuche, ein Karussell zu schaffen, das kann zeige 3 Optionen gleichzeitig an, (wenn 3 angezeigt werden sollen), wobei ich mir nicht sicher bin, ob es einen Namen für diese bestimmte Art von Karussell gibt, da meine Google-Suche bisher nichts ergeben hat, von dem ich lernen kann.Erstellen einer Karussell in Phaser.io
Ich kann die Logik funktionieren benötigt, um jedes Bild in den nächsten Schlitz verschieben entlang, wenn die nächsten und vorherigen Funktionen aufgerufen werden.
this.scrollingOptionsMenu.ShowSelectedOption();
ShowSelectedOption(); Wird in der Update-Funktion des Themenauswahl-Status aufgerufen, anders als dies und die Prev() -, Next() -Funktionen werden auf der Tastatur drücken Sie nach links oder rechts bzw. anders als dies der gesamte Code in der folgenden Datei ist.
ich den Code enthalten sind, ich habe so weit unter ScrollingOptionsMenu() in meinem erstellen Funktion des Themas wählen Zustand genannt wird, ist der options
Parameter ein Array von Dateien (für jetzt nur die Miniaturansicht jedes Thema) von einem gezogen JSON-Datei.
Mit meinem eigenen aktuellen Versuch, die Bilder sehen nicht in ihre neuen Slots zu bewegen und ich bekomme eine "Eigenschaft von x undefined ', die ich verstehe und könnte es begrenzen, aber ich bin nicht wirklich sicher, ob ich' m die 'richtige' Art und Weise mit dieser gehen.
Jede Hilfe dankbar,
Dank!
function ScrollingOptionsMenu(game, x, y, options)
{
this.x = x;
this.y = y;
this.options = options;
this.optionsCount = options.length;
this.game = game;
this.currentIndex = 0;
this.leftImage = game.add.sprite(x , y, 'theme1_thumbail');
this.centerImage = game.add.sprite(x, y, 'theme2_thumbail');
this.rightImage = game.add.sprite(x , y, 'theme3_thumbail');
this.ImageGroup = [this.leftImage, this.centerImage, this.rightImage];
this.leftImage.anchor.setTo(0.5);
this.centerImage.anchor.setTo(0.5);
this.rightImage.anchor.setTo(0.5);
this.leftImage.x = x - this.leftImage.width;
this.rightImage.x = x + this.rightImage.width;
this.leftImage.scale.setTo(0.5);
this.rightImage.scale.setTo(0.5);
//console.log(width);
console.log(this.leftImage);
console.log(this.centerImage);
console.log(this.rightImage);
}
//Display currently centerImage Option
ScrollingOptionsMenu.prototype.ShowSelectedOption = function()
{
if(this.currentIndex == 0)
{
//if we are at 0 then the left slot should be empty
this.leftImage.loadTexture('transParent', 0);
this.centerImage.loadTexture(this.options[this.currentIndex].thumbnail.name, 0);
this.rightImage.loadTexture(this.options[this.currentIndex+1].thumbnail.name, 0);
}
else{
//if currentIndex is above 0 then place
this.leftImage.loadTexture(this.options[this.currentIndex-1].thumbnail.name, 0);
this.centerImage.loadTexture(this.options[this.currentIndex].thumbnail.name, 0);
this.rightImage.loadTexture(this.options[this.currentIndex+1].thumbnail.name, 0);
}
}
ScrollingOptionsMenu.prototype.NextOption = function()
{
this.ChangeIndex(1);
}
ScrollingOptionsMenu.prototype.PreviousOption = function()
{
this.ChangeIndex(-1);
}
//returns the index of the currently centerImage option
ScrollingOptionsMenu.prototype.GetCurrentIndex = function()
{
return this.currentIndex;
}
ScrollingOptionsMenu.prototype.ChangeIndex = function(index)
{
var optionsLength = this.options.length-1;
if(this.currentIndex + index < 0)
{
this.currentIndex = 0;
}
else if(this.currentIndex + index > optionsLength)
{
this.currentIndex = optionsLength;
}else{
this.currentIndex += index;
}
}
Hallo Chris, Zunächst vielen Dank für Ihre Hilfe, Ihren Code sehr viel Sinn macht für mich, aber ich scheine in gelaufen Das gleiche Problem mit Ihrem Code, wie ich meinen eigenen, dass "Eigenschaft 'x' undefined" in der nextTheme-Funktion nicht festgelegt werden kann. Speziell this.optionsArray [this.currentIndex + 2] .x = game.width + 150; Ich denke, ich verstehe, dass es mir sagt, es kann nicht die Eigenschaft eines Objekts, das nicht existiert (macht Sinn) eine Idee, wie kann ich das beheben? Liegt es daran, dass ich momentan nur 3 Optionen habe, wo als Beispiel 5 verwendet wurde? – Pheonix2105
Ich habe auch eine Demo auf https://grim-.github.io/ hochgeladen, so dass Sie selbst sehen können. – Pheonix2105
Wenn ich genauer hinsehe, scheint mein Problem bei den hartcodierten Werten in den IF-Anweisungen zu liegen. If (this.currentIndex <4) 'if (this.currentIndex <5) {' Ich glaube, dass es möglicherweise geändert werden muss Verwenden Sie die OptionenArray.Länge und subtrahieren -1 oder -2? Entschuldigung für die mehrfachen Kommentare, hätte die erste bearbeitet wenn ich hätte. – Pheonix2105