2017-10-18 12 views
0

Je suis nouveau à p5.js et j'essayais de faire un mini-jeu pour commencer. J'ai rencontré plusieurs problèmes que j'ai pu résoudre et je n'ai pas réussi à résoudre celui-ci.p5js ne peut pas utiliser la hauteur ou la largeur variable

En p5.js, lorsque vous créez une toile que vous obtenez une variable width et height, qui utilise les dimensions de la toile créée et semble travailler dans d'autres endroits, comme la fonction draw() mais pas un mini-objet que je fais . Mon code est ci-dessous et je vous remercie si vous répondez.

var Walls = new walls() 
function setup(){ 
    canvas = createCanvas(400,300); 
    canvas.parent("lor"); 

} 
function draw(){ 
    background(22,178,255) 
    console.log(Walls.wall1.height); 
} 
//Walls 
function walls(){ 
    this.wall1 = {} 
    this.wall1.width = 30 
    this.wall1.height = height/2 
} 

J'attends votre réponse, car j'ai passé plus d'une heure à essayer de comprendre cela. Je vous remercie!

+0

Comment appelez-vous les murs '()' fonction? S'il vous plaît poster un [mcve] ou un CodePen ou JSFiddle. –

+0

@Kevin Workman Je l'appelle avec des murs() et des murs, Codepen ici: [link] (https://codepen.io/cord-codes/pen/bozZBj) et il semble donner quelque chose dans la console que je ne peux pas comprendre (sur le site Web le lien va.) –

Répondre

0

Le problème est dans l'ordre de votre code. La première chose que le script exécute est var Walls = new walls(); qui est appelée avant l'installation, où le canevas est créé. Donc, ce que vous faites est d'appeler height avant que le canevas soit créé. Cela peut être résolu simplement en déclarant la variable globale mais en lui donnant une valeur à l'intérieur de l'installation.

//Declaring the empty variable 
var walls; 

function setup() { 
    //creating the canvas 
    canvas = createCanvas(400, 300); 

    //calling Walls() 
    walls = new Walls(); 
} 

function draw() { 
    background(22, 178, 255); 
    console.log("Height: " + walls.wall1.height); 
} 

function Walls() { 
    this.wall1 = {}; 
    this.wall1.width = 30; 
    this.wall1.height = height/2; 
} 

Taille: 150

+0

Cela a été une aide énorme, merci un million! Je n'aurais probablement jamais travaillé sans cela –