Skip to main content
Inspiring
December 31, 2022
Question

how to get a messageField working from a class file?

  • December 31, 2022
  • 2 replies
  • 446 views

Hi team,

So I have this code that I have modified to run from the game.js class file.  

It runs with no errors and I can trace the text (loading) 

BUT - there is no text on the screen when I run it.

Thanks for your help 🙂

class Game
{
    constructor(root, lib)
    {
        this.root = root;
        this.stage = this.root.stage;
        this.canvas = this.root.canvas;
        this.messageField = this.root.messageField;
        this.lib = lib;
        this.init();
        this.keys ={}; 
    }
    
   init(e){
		this.player = this.root.player_mc;
		
		const game = this;
		
        document.addEventListener("keydown", (e) => {
  
    console.log(`Key "${e.key}" pressed [event: keydown]`);
            this.keys[e.key] = true;
  
});
        document.addEventListener("keyup", (e) => {
  
    console.log(`Key "${e.key}" pressed [event: keydown]`);
            this.keys[e.key] = false;
  
});
    
   
   	//Message display field
       
    this.canvas = document.getElementById("gameCanvas");
	this.stage = new createjs.Stage(this.canvas);
	this.messageField = new createjs.Text("Loading", "bold 24px Arial", "#FFFFFF");
	this.messageField.maxWidth = 1000;
	this.messageField.textAlign = "center";
	this.messageField.textBaseline = "middle";
	this.messageField.x = canvas.width / 2;
	this.messageField.y = canvas.height / 2;
	this.stage.addChild(this.messageField);
	this.stage.update(); 	//update the stage to show text
	console.log(this.messageField.text);
	}
   
}

 

    This topic has been closed for replies.

    2 replies

    kglad
    Community Expert
    Community Expert
    December 31, 2022

    what's lib?

     

    did you edit the html to create "gameCanvas"?  if not, that would cause a failure to see Loading on stage.

     

     

     

     

    Inspiring
    January 1, 2023

    Hey Kglad!  I did edit the gamecanvas - my code looks like this now

    class Game{
        constructor(exportRoot, stage){
            this.root = exportRoot;
            this.stage = stage;
            this.init();
        }
        
        init(){
            const game = this;
            this.stage = new createjs.Stage("animation container");
       
    	
    	this.messageField = new createjs.Text("Loading", "bold 24px Arial", "#OOOOOO");
    	this.messageField.maxWidth = 1000;
    	this.messageField.textAlign = "center";
    	this.messageField.textBaseline = "middle";
    	this.messageField.x = canvas.width/2;
    	this.messageField.y = canvas.height/2;
    	console.log(this.messageField.text);
           console.log(eval(this.messageField.x = canvas.width / 2));
            stage.addChild(this.messageField);
            this.stage.update();
            
        }
    }

     and this is the result!!

    so I guess I am doing something!  You can see part of the word LOADING in the centre of the screen.

    kglad
    Community Expert
    Community Expert
    January 1, 2023

    i don't know why you're creating another stage, but both references are this.stage, not stage.

    Inspiring
    December 31, 2022

    Ok so I noticed that the colour is white and I got excited and thought that I coudnt see the text because it was white on  a white background, but no, sadly even if I change the colour to #OOOOOO I still cant see the text.  Nevermind I thought I was onto it 🙂