首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Flixel游戏屏幕上

Flixel游戏屏幕上
EN

Stack Overflow用户
提问于 2013-11-09 11:15:44
回答 1查看 309关注 0票数 0

我对游戏开发很陌生,但对编程语言很熟悉。我已经开始使用Flixel,并有一个工作突破的游戏与得分和生活。

我只是被困在如何创造一个新的屏幕/游戏的屏幕上,如果一个球员耗尽生命。我希望这一进程如下:

  1. 检查是否 lives为等于为0
  2. 暂停游戏,并显示一个新的屏幕(可能是透明的),上面写着“ game
  3. 当用户单击或单击时,输入,重新启动该级别

下面是我当前更新生命的功能:

代码语言:javascript
复制
private function loseLive(_ball:FlxObject, _bottomWall:FlxObject):void
{
    // check for game over
    if (lives_count == 0)
    {

    }
    else 
    {
        FlxG:lives_count -= 1;
        lives.text = 'Lives: ' + lives_count.toString()
    }
}

这是我的主要game.as

代码语言:javascript
复制
package
{
    import org.flixel.*;

    public class Game extends FlxGame
    {
        private const resolution:FlxPoint = new FlxPoint(640, 480);
        private const zoom:uint = 2;
        private const fps:uint = 60;

        public function Game()
        {
            super(resolution.x / zoom, resolution.y / zoom, PlayState, zoom);
            FlxG.flashFramerate = fps;
        }
    }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-11-11 14:58:23

做这件事有很多种方法。

您可以使用不同的FlxStates,就像我在另一篇文章的答案:使用Flixel创建用户界面中所描述的那样,尽管您必须聪明地传递分数或其他任何东西,或者使用注册表类型设置

如果您想让它像上面所描述的那样使用透明的覆盖屏幕,您可以尝试这样的方法(请记住,您的项目的具体细节可能有所不同,我只是想给您一个想法):

首先,确保您有良好的逻辑来启动一个级别,假设它是一个名为StartLevel的函数。

您需要定义一个标记--只是一个布尔值--跟踪游戏是否仍在进行:private var _isGameOver:Boolean;位于StartLevel()的最末端,将其设置为false

在你的create()函数中,为你的PlayState构建一个新的FlxGroup,它在你的游戏屏幕上包含所有你想要的东西-一些文本,一个图像,和一些东西,“按回车来重新启动”(或者其他什么)。然后将其设置为visible = false。用于此的代码可能如下所示:

代码语言:javascript
复制
grpGameOver = new FlxGroup();
grpGameOver.add(new FlxSprite(10,10).makeGraphic(FlxG.Width-20,FlxG.Height-20,0x66000000));  // just a semi-transparent black box to cover your game screen.
grpGameOver.add(new FlxText(...)); // whatever you want to add to the group...
grpGameOver.visible = false;
add(grpGameOver); // add the group to your State.

根据游戏的设置方式,您还可能希望将组的scrollFactor中的对象设置为0--如果游戏屏幕滚动:

代码语言:javascript
复制
grpGameOver.setAll("scrollFactor", new FlxPoint(0,0));

在您的update()函数中,您需要将其分为两个部分:一个用于游戏结束时,另一个用于游戏是否仍在进行:

代码语言:javascript
复制
if (_isGameOver)
{
    if (FlxG.keys.justReleased("ENTER"))
    {
        grpGameOver.visible = false;
        StartLevel();
    }
}
else
{
    ... the rest of your game logic that you already have ...
}
super.update();

请记住,如果您在其他任何地方都有响应用户输入的功能,比如player对象或其他什么,您可能需要更改他们的update()函数来检查该标志。

然后,您最不需要做的事情是在loseLive()逻辑中:

代码语言:javascript
复制
if (lives_count == 0)
{
    _isGameOver = true;
    grpGameOver.visible = true;
}
else 
...

这样就行了!

我强烈建议您花一些时间在不同的教程和示例项目上,以便对Flixel有一种更好的感觉。光子风暴有一些伟大的材料可以玩(尽管他已经跳到了HTML5游戏中)

我还想指出的是,如果您对Flixel处理更新的方式感到满意,您可以非常聪明地使用状态的update()函数,并让它只调用grpGameOver对象的更新,而不必单独更改所有其他对象的更新。相当先进的东西,但值得学习。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19875293

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档