LayaBox入门基础之UI实现

List(列表)是比较常用的功能。本篇结合LayaAir引擎与IDE针对List显示、增加、删除等相关操作进行逐步讲解,供开发者学习引擎与IDE的实战参考。(创建项目等基础操作,请查看其它文档,本篇跳过)

一、用LayaAirIDE制作UI

1.1 创建一个View类型的UI页面

​ 1
​ (图1)创建一个名为ListPage的View类型UI页面

​ 首先,我们在LayaAirIDE的项目管理器内,创建一个View类型的UI页面,宽高为640*1136。页面命名为ListPage。

1.2 导入UI资源

​ 将美术制作好的UI页面资源导入到资源管理器中。(具体导入方式参考LayaAirIDE资源导入的文档。)

​ 2
​ (图2)

1.3 用九宫格制作List背景

1.3.1 拖拽List背景到舞台

​ 3
​ (图3)将图片背景bg_list.png拖拽到舞台

​ 1.3.2 Image属性中通过sizeGrid属性设置九宫格。

​ 4
​ (图4)点击sizeGrid属性右侧按钮打开九宫格设置面板

​ 1.3.3 在属性里设置width为640(全屏宽度)

​ 5
​ (图5)

1.4 制作List容器

1.4.1 拖拽checkbox.png到舞台,并设置属性name为check。

​ 6
​ (图6)

1.4.2 拖拽一个label.png到舞台,设置属性name为listNumber,其它属性参照图7。

​ 7
​ (图7)用于序号的label组件

​ 1.4.3 再拖拽一个label.png到舞台,修改文本内容为“List示例文本”,属性设置参照图8所示:

​ 8
​ (图8)用于List文本的label组件

​ 1.4.4 选中list背景图、序号label、文本label、checkbox,用Ctrl+B快捷键创建一个Box容器。然后选中Box容器,设置Box属性renderType为render。如图9,图10。

​ 9
​ (图9)

​ 10
​ (图10)

​ 1.4.5 点击box容器再次通过Ctrl+B创建一个List容器,如图11。注意,所有的List容器,必须是基于Box容器的,我们看一下图12的层级关系,会更加清晰一些,list基于box循环产生。

​ 11
​ (图11)

​ 12
​ (图12)

1.5 设置List属性

​ 选取List容器,设置Lis属性 var为_list(通过此变量可以调用该组件下的所有属性),然后根据实际需要设置其它属性,repeatX是X轴的列表数量,repeatY是Y轴的列表数量,spaceX是X轴列表间距,spaceY是Y轴列表间距。如图13所示:

​ 13
​ (图13)

1.6 添加操作按钮

​ 这里,我们直接使用了模板的ButtonTab,拖拽到舞台中,然后点击进入子节点,设置var、label属性以及九宫格等。如图14,图15:

​ 14
​ (图14)

​ 15
​ (图15)

​ 调整好UI位置细节后,如图16。F12发布UI,就可以进入代码阶段

​ 16
​ (图16)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
实现2D游戏八方向虚拟摇杆可以借助LayaBoxUI组件来实现。以下是实现步骤: 1. 创建UI组件 在LayaBox的IDE中创建一个UI页面,将需要的UI组件拖拽到页面中,包括摇杆底座、摇杆、指示箭头等。 2. 编写代码 在代码中引用LayaBoxUI组件,并监听摇杆的事件。当摇杆被拖动时,根据摇杆的位置计算出方向,并将方向信息传递给游戏角色进行移动。 以下是实现代码示例: ```javascript // 引用LayaBoxUI组件 var Joystick = Laya.UIConfig.baseDir + "Joystick.png"; var JoyBg = Laya.UIConfig.baseDir + "JoyBg.png"; var JoyArrow = Laya.UIConfig.baseDir + "JoyArrow.png"; Laya.loader.load([JoyBg, Joystick, JoyArrow], Laya.Handler.create(this, onLoaded)); function onLoaded() { // 创建UI组件 var bg = new Laya.Image(JoyBg); bg.pos(100, 100); Laya.stage.addChild(bg); var joystick = new Laya.Image(Joystick); joystick.pos(130, 130); joystick.pivot(joystick.width / 2, joystick.height / 2); Laya.stage.addChild(joystick); var arrow = new Laya.Image(JoyArrow); arrow.pos(130, 130); arrow.pivot(arrow.width / 2, arrow.height / 2); Laya.stage.addChild(arrow); // 监听摇杆事件 joystick.on(Laya.Event.MOUSE_DOWN, this, onJoystickMouseDown); Laya.stage.on(Laya.Event.MOUSE_UP, this, onJoystickMouseUp); } var isMouseDown = false; var joystickPos = new Laya.Point(); var joystickDir = new Laya.Point(); var joystickRadius = 50; function onJoystickMouseDown() { isMouseDown = true; Laya.stage.on(Laya.Event.MOUSE_MOVE, this, onJoystickMouseMove); } function onJoystickMouseUp() { isMouseDown = false; joystickPos.setTo(0, 0); joystickDir.setTo(0, 0); Laya.stage.off(Laya.Event.MOUSE_MOVE, this, onJoystickMouseMove); } function onJoystickMouseMove() { if (!isMouseDown) return; // 计算摇杆位置和方向 joystickPos.setTo(joystick.mouseX, joystick.mouseY); joystickDir = joystickPos.subtract(new Laya.Point(joystick.x, joystick.y)); var len = joystickDir.normalize(); if (len > joystickRadius) { joystickDir.x *= joystickRadius; joystickDir.y *= joystickRadius; } // 更新箭头方向 arrow.rotation = Math.atan2(joystickDir.y, joystickDir.x) * 180 / Math.PI; // 将方向信息传递给游戏角色 // TODO: 根据方向移动游戏角色 } ``` 以上代码实现了一个简单的虚拟摇杆UI,并监听了摇杆的事件,计算出方向信息并传递给游戏角色。需要注意的是,这只是一个示例代码,具体实现还需要根据游戏的需求进行调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小春熙子

你一毛我一毛,先富带后富

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值