如何解决尝试使用另一个类的函数 - Phaser 3
所以我正在尝试使用 Phaser 3 构建游戏,但现在面临一些问题......
我有这个对象类:
-
visor.js
-
cardProc.js
-
cardPeca.js
-
table.js
-
index.js
和游戏场景:
- game.js
game.js 代码:
import CardProc from '../objects/cardProc';
import CardPeca from '../objects/cardPeca';
import Table from '../objects/table';
import Visor from '../objects/visor';
//criação de uma scene,onde os objetos serão adcionados
export default class Game extends Phaser.Scene
{
constructor()
{
super({key:'Game'})
}
preload()
{
let i = 0;
this.load.image('cardPeca','src/assets/cardPeca.png');
this.load.image('cardProc','src/assets/cardProc.png');
this.load.image('card_frentePeca','src/assets/frentePeca.png');
this.load.image('card_frenteProc','src/assets/frenteProc.png');
this.load.image('background','src/assets/background.png');
this.load.image('mesa','src/assets/table.png');
this.load.image('shortcut','src/assets/shortcutBox.png');
this.load.image('visor','src/assets/visor.png');
this.load.image('dropZone','src/assets/dropZone.png');
this.load.image('handCursor1','src/assets/handCursor1.png');
this.load.image('handCursor2','src/assets/handCursor2.png');
}
create()
{
let scene = this;
let cardsProc = [];
let cardsPeca = [];
let mesa;
this.data.set('cardPecaTable',1);
this.data.set('cardPecaDeck',10);
this.data.set('cursorHandFlag',false);
const {width,height} = this.scale;
//imagem de background
this.add.image(0,'background').setorigin(0);
//colocar mesa
mesa = new Table(this);
mesa = mesa.render(948,352,'mesa',this);
//colocar visor
this.visor = new Visor(this);
this.visor = this.visor.render(945,35,'visor',this);
//setBaralho de pecas
for(var i = 0;i<10;i++)
cardsPeca[i] = new CardPeca(this,i);
this.shuffle(cardsPeca);
for(var i = 0;i<10;i++)
cardsPeca[i] = cardsPeca[i].render(1350,350,'cardPeca',this,'shortcut');
//dealCartas processos
for(var i = 0;i<10;i++)
{
cardsProc[i] = new CardProc(this);
cardsProc[i] = cardsProc[i].render(500+100*i,780,'cardProc','shortcut');
}
}
shuffle(array){
var currentIndex = array.length,temporaryValue,randomIndex;
// While there remain elements to shuffle...
while (0 !== currentIndex) {
// Pick a remaining element...
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex -= 1;
// And swap it with the current element.
temporaryValue = array[currentIndex];
array[currentIndex] = array[randomIndex];
array[randomIndex] = temporaryValue;
}
return array;
}
update()
{
//ISSUE
if(this.data.get('cursorHandFlag'))
{
this.visor.getTurn();
}
}
}
visor.js 代码:
import Phaser from "phaser";
export default class Visor
{
constructor(scene)
{
let turn;
let board;
let turnString = ['Escolha da peça','Seleção dos processos','Comparando os processos','Organização da sequência de processos','Criação (Palpite)'];
let turnX = [53,73,88,130,53]
var style = { font: "15px Arial",fill: "#000000",align: "center",wordWrap: true};
var text;
//funções existentes dentro da classe
this.render = (x,y,sprite,scene) =>
{
turn = 0;
board = scene.add.image(x,sprite).setInteractive().setScale(0.7,0.75);
text = scene.add.text(board.x-turnX[turn],board.y-10,turnString[turn],style);
return board;
}
this.getTurn = ()=>
{
return this.turn;
}
this.nextTurn = () =>
{
text.destroy();
turn++;
text = scene.add.text(board.x-turnX[turn],style);
}
}
}
当我调用 this.visor.nextTurn();
时,我在控制台中收到此错误:
game.js?f5a7:70 Uncaught TypeError: this.visor.getTurn is not a function
at Game.create (game.js?f5a7:70)
at SceneManager.create (phaser.js?d4ef:89720)
at SceneManager.loadComplete (phaser.js?d4ef:89632)
at LoaderPlugin.emit (phaser.js?d4ef:1908)
at LoaderPlugin.loadComplete (phaser.js?d4ef:192810)
at LoaderPlugin.fileProcessComplete (phaser.js?d4ef:192776)
at ImageFile.onProcessComplete (phaser.js?d4ef:4787)
at Image.data.onload (phaser.js?d4ef:17236)
但是使用 this.visor = this.visor.render(945,this);
真的很好...我已经尝试做类似 function nextTurn(){...}
的事情并且得到了同样的错误。
请有知识的人帮助我...请;c
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。