• 青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 8(登陆界面)


    继上一次介绍了《神奇的六边形》的完整游戏开发流程后(可点击这里查看),这次将为大家介绍另外一款魔性游戏《跳跃的方块》的完整开发流程。

              (点击图片可进入游戏体验)

    因内容太多,为方便大家阅读,所以分多次来讲解。

    若要一次性查看所有文档,也可点击这里

    接上回(《跳跃的方块》Part 7

    五. 界面控制

    界面间的切换逻辑

    使用一个类来专门负责各个不同界面间切换的逻辑。新建脚本UIManager.js,并将其加载到UIRoot上,内容如下:

     1 var UIManager = qc.defineBehaviour('qc.JumpingBrick.UIManager', qc.Behaviour, function() {
     2     var self = this;
     3     JumpingBrick.uiManager = self;
     4 }, {
     5     welcome: qc.Serializer.NODE,
     6     logining: qc.Serializer.NODE,
     7     gamePanel: qc.Serializer.NODE,
     8     gameOver: qc.Serializer.NODE,
     9     announcement: qc.Serializer.NODE,
    10     crop: qc.Serializer.NODE
    11 });
    12 
    13 UIManager.Welcome = 0;
    14 UIManager.Logining = 1;
    15 UIManager.Game = 2;
    16 UIManager.GameOver = 3;
    17 UIManager.Announcement = 4;
    18 
    19 UIManager.prototype.awake = function() {
    20     this.switchStateTo(UIManager.Welcome);
    21 };
    22 
    23 /**
    24  * 切换状态
    25  */
    26 UIManager.prototype.switchStateTo = function(state) {
    27     var self = this;
    28     JumpingBrick.game.time.frameRate = 30;
    29     self.welcome.visible = state === UIManager.Welcome;
    30     if (self.welcome.visible) {
    31         JumpingBrick.data.logout();
    32         JumpingBrick.data.buildShareContent(-1);
    33     }
    34     self.logining.visible = state === UIManager.Logining;
    35     self.gamePanel.visible = state === UIManager.Game;
    36     if (self.gamePanel.visible) {
    37         JumpingBrick.gameControl.switchState(qc.JumpingBrick.GameControl.STATE_MANUEL);
    38         JumpingBrick.gameControl.restoreGameState();
    39         JumpingBrick.gameControl.resetFPS();
    40         // 缩小Logo
    41         qc.Tween.playGroupForward(self.crop, 1);
    42     }
    43     else {
    44         // 还原Logo
    45         qc.Tween.playGroupReverse(self.crop, 1);
    46     }
    47 
    48     self.gameOver.visible = state === UIManager.GameOver;
    49     if (self.gameOver.visible) {
    50         JumpingBrick.gameOver.refresh();
    51     }
    52     self.announcement.visible = state === UIManager.Announcement;
    53     if (self.announcement.visible) {
    54         self.announcement.getScript('qc.JumpingBrick.Announcement').updateRank();
    55     }
    56 };

    功能界面

    游戏界面已经在前面完成,这里还需要以下界面:

    • 登陆界面
    • 登陆等待界面
    • 结算界面
    • 排行榜界面
    • 界面管理

    (一)登陆界面

    登陆界面的设计如下图: 

     

    为了保证实现效果,有几点需要注意:

    1. 所有的显示内容,应该是基于水平中线布局。
    2. 因为要求在微信中打开游戏时,隐藏快速登录的按钮,所以将两个按钮置于一个TableLayout中,让其自适应布局来调整位置。

    控制脚本

    创建登陆界面的控制脚本:Welcome.js。内容如下:

     1 var Welcome = qc.defineBehaviour('qc.JumpingBrick.Welcome', qc.Behaviour, function() {
     2 
     3 }, {
     4     quickLogin: qc.Serializer.NODE,
     5     wechatLogin: qc.Serializer.NODE
     6 });
     7 
     8 Welcome.prototype.awake = function() {
     9     var self = this;
    10 
    11     self.quickLogin && self.addListener(self.quickLogin.onClick, self.doQuickLogin, self);
    12     self.wechatLogin && self.addListener(self.wechatLogin.onClick, self.doWechatLogin, self);
    13 };
    14 
    15 Welcome.prototype.update = function() {
    16     var self = this;
    17     if (self.quickLogin.visible && JumpingBrick.data.isWeChat()) {
    18         self.quickLogin.visible = false;
    19         self.quickLogin.parent.getScript('qc.TableLayout').relayout();
    20     }
    21 };
    22 
    23 // 快速登陆
    24 Welcome.prototype.doQuickLogin = function() {
    25     JumpingBrick.data.quickLogin();
    26 };
    27 
    28 // 微信登陆
    29 Welcome.prototype.doWechatLogin = function() {
    30     JumpingBrick.data.wechatLogin();
    31 };

     

    构建登录界面

    创建登录界面的根节点welcome,便于对界面进行整体控制。并将Welcome脚本加载到welcome节点上,关联快速登陆和微信登陆按钮。

    下次将继续介绍“登陆等待界面”,敬请期待!

    其他相关链接

    开源免费的HTML5游戏引擎——青瓷引擎(QICI Engine) 1.0正式版发布了!

    JS开发HTML5游戏《神奇的六边形》(一)

    青瓷引擎之纯JavaScript打造HTML5游戏第二弹——《跳跃的方块》Part 1

  • 相关阅读:
    Mongodb
    Java原子类
    volatile
    uniapp输入空格
    看不见的的html
    小程序隐藏scroll-view滚动条的方法
    云函数调用云函数 openid不存在
    vue路由中 Navigating to current location ("/xxx") is not allowed
    Vue: 单页面应用如何保持登录状态
    letter-spacing
  • 原文地址:https://www.cnblogs.com/qici/p/5099357.html
Copyright © 2020-2023  润新知