【问题标题】:I need to block a character in my charselector我需要在我的字符选择器中阻止一个字符
【发布时间】:2022-11-10 13:07:45
【问题描述】:

我正在为 fnf 制作一个模组。我做了一个字符选择器,但想暂时阻止使用“VALTOR”(vr)。

我实际上对代码很糟糕,我真的想不出办法来做到这一点。 这个想法是,通过选择它们,您根本无法前进,您必须选择另一个选项。

对于它的价值,我正在使用 haxeflixel。

这是代码:

package;

import flixel.group.FlxGroup.FlxTypedGroup;
import flixel.FlxG;
import flixel.FlxSprite;
import flixel.tweens.FlxTween;
import flixel.text.FlxText;
import flixel.util.FlxTimer;
import flixel.util.FlxColor;
import flixel.effects.FlxFlicker;
import flixel.group.FlxGroup.FlxTypedGroup;

class CharSelectState extends MusicBeatState{
    var charsArray:Array<String> = ['Valtor', 'Candel', 'Flippy', 'BF'];
    var leBG:FlxSprite;
    var vl:FlxSprite;
    var cd:FlxSprite;
    var fp:FlxSprite;
    var bfxd:FlxSprite;
    var selectedText:FlxText;
    var charSelect:FlxSprite;
    public static var curSelected:Int = 0;
    override function create(){
        FlxG.sound.playMusic(Paths.music('tea-time'));
        leBG = new FlxSprite().loadGraphic(Paths.image('menuBG'));
        leBG.color = FlxColor.BLUE;
        leBG.screenCenter();
        add(leBG);
        vl = new FlxSprite(450, 100).loadGraphic(Paths.image('characters/Valtor'));
        vl.frames = Paths.getSparrowAtlas('characters/Valtor');
        vl.animation.addByPrefix('idle', 'Valtor idle', 24, true);
        vl.animation.addByPrefix('idle', 'Valtor idle', 24, true);
        vl.animation.play('idle');
        add(vl);
        cd = new FlxSprite(450, 100).loadGraphic(Paths.image('characters/candel'));
        cd.frames = Paths.getSparrowAtlas('characters/candel');
        cd.animation.addByPrefix('idle', 'candel idle', 24, true);
        cd.animation.addByPrefix('idle', 'candel idle', 24, true);
        cd.animation.play('idle');
        add(cd);
        fp = new FlxSprite(375, 50).loadGraphic(Paths.image('characters/flippy'));
        fp.frames = Paths.getSparrowAtlas('characters/flippy');
        fp.animation.addByPrefix('idle', 'flippy idle', 24, true);
        fp.animation.addByPrefix('idle', 'flippy idle', 24, true);
        fp.animation.play('idle');
        add (fp);
        bfxd = new FlxSprite(450, 200).loadGraphic(Paths.image('characters/BoyfriendXD'));
        bfxd.frames = Paths.getSparrowAtlas('characters/BoyfriendXD');
        bfxd.animation.addByPrefix('idle', 'BoyfriendXD idle', 24, true);
        bfxd.animation.addByPrefix('firstDeath', 'muerte', 24, true);
        bfxd.animation.play('idle');
        add(bfxd);
        selectedText = new FlxText(0, 10, charsArray[0], 24);
        selectedText.alpha = 0.5;
        selectedText.x = (FlxG.width) - (selectedText.width) - 25;
        add(selectedText);
        charSelect = new Alphabet(0, 50, "Select Your Character", true, false);
        charSelect.offset.x -= 150;
        add(charSelect);
        changeSelection();
        super.create();
    }

    function changeSelection(change:Int = 0){
        curSelected += change;

        if (curSelected < 0)
            curSelected = charsArray.length - 1;
        if (curSelected >= charsArray.length)
            curSelected = 0;

        selectedText.text = charsArray[curSelected];

        switch(curSelected){
        case 0:
        vl.visible = false;
        cd.visible = false;
        fp.visible = false;
        bfxd.visible = false;
        FlxTween.color(leBG, 2, leBG.color, FlxColor.ORANGE, {onComplete:function(twn:FlxTween){
        FlxTween.cancelTweensOf(leBG);
        }});
        case 1:
        vl.visible = false;
        cd.visible = true;
        fp.visible = false;
        bfxd.visible = false;
        FlxTween.color(leBG, 2, leBG.color, FlxColor.ORANGE, {onComplete:function(twn:FlxTween){
        FlxTween.cancelTweensOf(leBG);
        }});
        case 2:
        vl.visible = false;
        cd.visible = false;
        fp.visible = true;
        bfxd.visible = false;
        FlxTween.color(leBG, 2, leBG.color, FlxColor.GRAY, {onComplete:function(twn:FlxTween){
        FlxTween.cancelTweensOf(leBG);
        }});
        case 3:
        vl.visible = false;
        cd.visible = false;
        fp.visible = false;
        bfxd.visible = true;
        FlxTween.color(leBG, 2, leBG.color, FlxColor.BLUE, {onComplete:function(twn:FlxTween){
        FlxTween.cancelTweensOf(leBG);
        }});
        }
    }

    override function update(elapsed:Float){
        if (controls.UI_LEFT_P){
        changeSelection(-1);
        FlxG.sound.play(Paths.sound('scrollMenu'));
        }
        if (controls.UI_RIGHT_P){
        changeSelection(1);
        FlxG.sound.play(Paths.sound('scrollMenu'));
        }
        if (controls.ACCEPT){
        FlxG.sound.play(Paths.sound('confirmMenu'));
        switch(curSelected){
        case 1:
        FlxFlicker.flicker(cd, 1.5, 0.15, false);
        cd.animation.play('singUP');
        case 0:
        FlxFlicker.flicker("", 1.5, 0.15, false);
        vl.animation.play('hey');
        case 2:
        FlxFlicker.flicker(fp, 1.5, 0.15, false);
        fp.animation.play('singUP');
        case 3:
        FlxFlicker.flicker(bfxd, 1.5, 0.15, false);
        bfxd.animation.play('singUP');
        }
        new FlxTimer().start(1.5, function(tmr:FlxTimer)
            elseif 
            {
        MusicBeatState.switchState(new PlayState());
            });
        }
        if (controls.BACK){
        FlxG.sound.play(Paths.sound('cancelMenu'));
        MusicBeatState.switchState(new FreeplayState());
        }
        super.update(elapsed);
    }
}

【问题讨论】:

    标签: haxe haxeflixel


    【解决方案1】:

    如果您“对代码不满意”,您可能应该看看 haxeflixel 教程,而不是直接跳入改装。毕竟,如果您无法理解解决方案,很可能没有人会尝试提供帮助 :)

    【讨论】:

      【解决方案2】:

      使用 Haxeflixel 教程,或者只是告诉自己如何使用它(就像我一样)。编程语言。

      【讨论】:

      • 请我求你学习如何使用 Haxe,因为我不希望你开始从别人那里窃取代码。试试你最努力的伙伴吧!
      猜你喜欢
      • 2019-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-20
      • 2011-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多