[Solved] Requirements for this._fadeSprite

Lihinel

Veteran
Veteran
Joined
Nov 9, 2013
Messages
261
Reaction score
321
First Language
German
Primarily Uses
[Solved]

So I wanted to let the screen of a custom class fade to black before going to a different scene, but it doesn't seem to work out.
I have the following update method
Code:
Lihinel.Warfare.SceneCommand.prototype.update = function() {
    if (!this.isBusy()) {
            *my code here*
       }
Scene_Base.prototype.update.call(this);
}
and
Code:
Lihinel.Warfare.SceneCommand.prototype.stop = function() {
    Scene_Base.prototype.stop.call(this);
    this.startFadeOut(this.slowFadeSpeed(), false);
};
a console.log confirms that
Code:
console.log(this._fadeSprite)
exists and is visible, according to Scene_Base it is created when fadeOutAll is called and added to children of window, so it should be above all of my sprites, but it just isn't.

Entire code:
Code:
//=============================================================================

//=============================================================================
 
 
var Lihinel = Lihinel || {};
Lihinel.Warfare = Lihinel.Warfare || {};

Lihinel.Warfare.SceneCommand = function() {
    this.initialize.apply(this, arguments);
};

Lihinel.Warfare.SceneCommand.prototype = Object.create(Scene_Base.prototype);
Lihinel.Warfare.SceneCommand.prototype.constructor = Lihinel.Warfare.SceneCommand;


  (function() {
  
Scene_Load.prototype.onLoadSuccess = function() {
    SoundManager.playLoad();
    this.fadeOutAll();
    this.reloadMapIfUpdated();
    SceneManager.goto(Lihinel.Warfare.SceneCommand);
    this._loadSuccess = true;
};
  

ImageManager.loadLogo = function(filename, hue) {
    return this.loadBitmap('img/logo/', filename, hue, true);
};
  
  var parameters = PluginManager.parameters('Lihinel_Logo');
 
Lihinel.Warfare.SceneCommand.prototype.initialize = function() {
    Scene_Base.prototype.initialize.call(this);
 
this.scenarios = [{x:200,y:200, scenario:"Test"}, {x:400,y:230, scenario:"Test1"}, {x:300,y:400, scenario:"Test2"}];
}

Lihinel.Warfare.SceneCommand.prototype.create = function() {
    Scene_Base.prototype.create.call(this);
 
 
};

Lihinel.Warfare.SceneCommand.prototype.start = function() {
    Scene_Base.prototype.start.call(this);
    //SceneManager.clearStack();
    this.startFadeIn(30,false);
    /* var bgm = {  name: "Epic",  volume: 80,  pitch: 100,  pan: 100};
    AudioManager.playBgm(bgm); */
 
    this.selected = {X:-1,y:-1};

    this.drawBG();
    this.drawTargets();
    this.drawDescription();
    this.drawSave();
 
    this.startFadeIn(this.fadeSpeed(), false);
 
 
};

Lihinel.Warfare.SceneCommand.prototype.stop = function() {
    Scene_Base.prototype.stop.call(this);
    this.startFadeOut(this.slowFadeSpeed(), false);
};

Lihinel.Warfare.SceneCommand.prototype.terminate = function() {
    Scene_Base.prototype.terminate.call(this);
    //SceneManager.snapForBackground();
};

 


Lihinel.Warfare.SceneCommand.prototype.drawBG = function() {
    var bitmap = ImageManager.loadPicture("Green0");
    var green0 = new Sprite(bitmap);
    this._green0 = green0;
    this.addChild(green0);
 
    var bitmap = ImageManager.loadPicture("Green1");
    var green1 = new Sprite(bitmap);
    this._green1 = green1;
    this._green0.addChild(green1);
 
    var bitmap = ImageManager.loadPicture("Green2");
    var green2 = new Sprite(bitmap);
    this._green2 = green2;
    this._green0.addChild(green2);
 
    var bitmap = ImageManager.loadPicture("Map0");
    var map0 = new Sprite(bitmap);
    this._map0 = map0;
    this.addChild(map0);
 
    var bitmap = ImageManager.loadPicture("Map1");
    var map1 = new Sprite(bitmap);
    this._map1 = map1;
    this.addChild(map1);
 
    this._green1.x = -816;
    this._green2.y = -624;
}




Lihinel.Warfare.SceneCommand.prototype.drawTargets = function() {
    this._targets = [];
    for(var index in this.scenarios){
        var scenario = this.scenarios[index]
        this.drawTarget(index, scenario.x, scenario.y);
    }
 
}

Lihinel.Warfare.SceneCommand.prototype.drawTarget = function(index, x, y) {

    var bitmap = ImageManager.loadPicture("Target");
    var target = new Sprite(bitmap);
    this._targets[index] = target;
    this.addChild(target);
    target.x = x;
    target.y = y;
    target.anchor.x = 0.5;
    target.anchor.y = 0.5;
}

Lihinel.Warfare.SceneCommand.prototype.drawSave = function() {

    var bitmap = ImageManager.loadPicture("Save");
    var save = new Sprite(bitmap);
    this._save = save;
    this.addChild(save);
    this._save.x = 16;
    this._save.y = 16;
}

Lihinel.Warfare.SceneCommand.prototype.drawDescription = function() {
    var bitmap = new Bitmap(716, 60);
    var discription = new Sprite(bitmap);
    this._discription = discription;
    this.addChild(discription);
    discription.bitmap.fillRect(0,0,716,60,"#000000");
    discription.x = 50;
    discription.y = 540;
    this._discription.visible = false;
}
 
Lihinel.Warfare.SceneCommand.prototype.update = function() {
    if (!this.isBusy()) {
    
    
        var x = TouchInput.x;
        var y = TouchInput.y;

        if(TouchInput.isTriggered()){
            if(x < 64 && y < 64){
                SceneManager.push(Scene_Save);
            }else{
                this.checkForSelectedTargetAndStartMission(x,y);
            }
        
        }
        if(TouchInput.isCancelled()){
            this.selected.x = -1;
            this.selected.y = -1;
            this.updateDescription(null);
        }
    
        this.updateBG();
        this.updateTargets();
    
    
 
    }
 
 
 
 
    Scene_Base.prototype.update.call(this);
};

Lihinel.Warfare.SceneCommand.prototype.checkForSelectedTargetAndStartMission = function(x,y) {
    var target = this.checkTargets(x,y);
    if(target != -1){
        var scenario = this.scenarios[target].scenario;
        if(this.selected.x == x    && this.selected.y == y){
            Lihinel.Warfare.scenario = scenario;
            Lihinel.DataManager.setupWarfareUnitDataForMap(0);
            if(Lihinel.Warfare.save_data[scenario] == null){
                $gamePlayer._transferring = true;
                $gamePlayer._newMapId = 2;
                $gamePlayer._newDirection = 0;
                $gamePlayer._newX = 0;
                $gamePlayer._newY = 0;
                //this.fadeOutAll();
                SceneManager.goto(Scene_Map);
            }else{
                //this.fadeOutAll();
                SceneManager.goto(Lihinel.Warfare.Scene);
            }
            console.log(this._fadeSprite)
        }else{
            this.selected.x = x;
            this.selected.y = y;
            this.updateDescription(scenario);
        }
    }else{
        this.updateDescription(null);
    }
}

Lihinel.Warfare.SceneCommand.prototype.checkTargets = function(x,y) {
    var max = this._targets.length;
    for(var i=0;i<max;i++){
        var target = this.checkTarget(i,x,y);
        if(target != -1){return target}
    }
    return -1;
}
Lihinel.Warfare.SceneCommand.prototype.checkTarget = function(index,x,y) {
    console.log(index)
    if(this._targets[index].x > x - 32 && this._targets[index].x < x + 32 && this._targets[index].y > y - 32 && this._targets[index].y < y + 32){
        return index;
    }
    return -1;
}
        
Lihinel.Warfare.SceneCommand.prototype.updateBG = function() {
    this._green1.x += 10;
    this._green2.y -= 10;
    if(this._green1.x >= 1800){this._green1.x = -816}
    if(this._green2.y < -624){this._green2.y = 1400}
}



Lihinel.Warfare.SceneCommand.prototype.updateTargets = function() {
    var max = this._targets.length;
    for(var i=0;i<max;i++){
        this.updateTarget(i);
    }
 
}

Lihinel.Warfare.SceneCommand.prototype.updateTarget = function(index) {
    this._targets[index].rotation += 0.025; 
}


Lihinel.Warfare.SceneCommand.prototype.updateDescription = function(scenario) {
    if(scenario != null){
        this._discription.visible = true;
        this._discription.bitmap.fillRect(0,0,716,60,"#000000");
        this._discription.bitmap.drawText(scenario,50,0,616,60,"left");
        if(Lihinel.Warfare.save_data[scenario] == null){
            var text = "Start Mission";
        }else{
            var sec = Math.floor(Lihinel.Warfare.save_data[scenario].playtime / 60);
            var min = Math.floor(sec / 60);
            var hour = Math.floor(min / 60);
            if(sec < 10){sec = "0" + sec};
            if(min < 10){min = "0" + min};
            var text = "Continue: " + hour + ":" + min + ":" + sec;
        }
        this._discription.bitmap.drawText(text,50,0,616,60,"right");
    }else{
        this._discription.visible = false;
    }
}

 
    
Lihinel.Warfare.SceneCommand.prototype.updateTitle = function(zoom) {
    if(zoom > 0){

        var width = 816 * zoom  / 624;
    
        var height = 240 * zoom / 624;
    
        this._title1.y = 312 - Math.floor(height/2);
        this._title1.x = 408 - Math.floor(width/2);
    

        this._title1.bitmap.clear();
        var src_bitmap = ImageManager.loadTitle1("IntroTitle1");
        this._title1.bitmap.bltImage(src_bitmap, 0, 0, src_bitmap.width, src_bitmap.height, 0, 0, width, height);
    
        this._title1.opacity = (zoom / 2);
    }
}
 
  })();
 
Last edited:

Magnus0808

Software Developer
Veteran
Joined
Feb 2, 2019
Messages
147
Reaction score
166
First Language
Danish
Primarily Uses
RMMV
Took a bit of debugging but I found your error.
On line 49 you call this.startFadeIn(30,false); this also creates your fadeSprite however this is before you create your sprites so the fadeSprite is now placed beneath the sprites.
Just remove this line and it should work. :) I am not sure why you even have this here as you also have it again on line 60 (where it is indeed placed correctly)

Calling startFadeIn or startFadeOut again does not make a new fadeSprite as you can see here:
Code:
Scene_Base.prototype.createFadeSprite = function(white) {
    if (!this._fadeSprite) {
        this._fadeSprite = new ScreenSprite();
        this.addChild(this._fadeSprite);
    }
    if (white) {
        this._fadeSprite.setWhite();
    } else {
        this._fadeSprite.setBlack();
    }
};
If a fadeSprite already exists then it only sets the color of the sprite. So if you want it to make a new one then you have to set the fadeSprite back to null first (and this is generally not something you want to do).
 

Lihinel

Veteran
Veteran
Joined
Nov 9, 2013
Messages
261
Reaction score
321
First Language
German
Primarily Uses
Thank you very much.
Great explanation, this fixes the problems I've been having with all scenes.

It's always the simple errors that cost the most time.
The reason it was at two places was that I was using multiple different templates and adding stuff to them instead of creating a new Scene from 0. That way I tried calling FadeIn, FadeOut, and FadeOutAll from different lines and masked one bug with another.

Again, thanks a lot!
 

Users Who Are Viewing This Thread (Users: 0, Guests: 1)

Latest Threads

Latest Profile Posts

Our latest feature is an interview with... me?!

People4_2 (Capelet off and on) added!

Just beat the last of us 2 last night and starting jedi: fallen order right now, both use unreal engine & when I say i knew 80% of jedi's buttons right away because they were the same buttons as TLOU2 its ridiculous, even the same narrow hallway crawl and barely-made-it jump they do. Unreal Engine is just big budget RPG Maker the way they make games nearly identical at its core lol.
Can someone recommend some fun story-heavy RPGs to me? Coming up with good gameplay is a nightmare! I was thinking of making some gameplay platforming-based, but that doesn't work well in RPG form*. I also was thinking of removing battles, but that would be too much like OneShot. I don't even know how to make good puzzles!
one bad plugin combo later and one of my followers is moonwalking off the screen on his own... I didn't even more yet on the new map lol.

Forum statistics

Threads
106,034
Messages
1,018,446
Members
137,820
Latest member
georg09byron
Top