虚拟摇杆使用指导

← 返回虚拟摇杆组件参考 · 全部使用指导

虚拟摇杆使用指导

一个圆形摇杆,手指拖动摇杆头控制方向。它有两种用法:

  • 遥控小车、机械臂:用方向改变时(方向)(DirectionChanged)事件。方向(上、下、左、右,8 方向时还有斜向,松手为「中间」)只在变化时触发一次,直接按方向发蓝牙指令,不会刷屏;
  • 游戏:用位置改变时(x坐标,y坐标)(PositionChanged)事件或读 X坐标、Y坐标。取值在 -1 到 1 之间,右、上为正,推得越远数值越大。

摇杆是独立组件,放在任意布局里即可;做画布游戏时放在画布下方。

快速上手:蓝牙遥控小车

方向数设为 4,先用蓝牙客户端连上小车(如 HC-05 模块),小车程序约定 F 前进、B 后退、L 左转、R 右转、S 停车:

各案例独立使用;组合到同一屏幕时,将同名事件的处理合并到一个事件积木中。

when 虚拟摇杆1.DirectionChanged(方向) {
  if 蓝牙客户端1.IsConnected {
    if 方向 == "上" {
      蓝牙客户端1.SendText("F")
    } else if 方向 == "下" {
      蓝牙客户端1.SendText("B")
    } else if 方向 == "左" {
      蓝牙客户端1.SendText("L")
    } else if 方向 == "右" {
      蓝牙客户端1.SendText("R")
    } else {
      蓝牙客户端1.SendText("S")
    }
  }
}

松手时摇杆自动回中,触发一次「中间」,小车随即停下。

画布游戏:摇杆控制角色

计时器每 30 毫秒按摇杆位置移动精灵。画布的 y 轴向下,摇杆的 y 向上为正,所以纵向用减法:

when 计时器1.Timer() {
  图像精灵1.X = 图像精灵1.X + 虚拟摇杆1.X * 8
  图像精灵1.Y = 图像精灵1.Y - 虚拟摇杆1.Y * 8
}

摇杆叠在画布上方

想让摇杆浮在游戏画面上(手机游戏常见的左下角摇杆),用悬浮窗: 把摇杆放进一个水平布局 水平布局_摇杆(设计器里可以把它设为不可见),悬浮窗的可拖动设为假, 否则拖摇杆时会把整个悬浮窗拖走:

when Screen1.Initialize() {
  悬浮窗1.Draggable = false
  悬浮窗1.StartPosition = "左下"
  悬浮窗1.ShowComponent(水平布局_摇杆)
}

搭建与测试

在设计器拖入本组件和案例涉及的按钮、标签、布局等组件,按案例中的名称重命名。先运行最小案例,确认事件返回,再增加业务逻辑。示例中的素材先上传到项目,服务器地址、令牌、文件路径换成自己的值。

可见组件需要有非零宽高;不可见工具组件必须由属性或方法启动。设计器展示样式不等于运行时已加载数据或绑定目标。联机测试应使用包含本组件的 AI 伴侣;涉及系统入口或权限的行为还要编译安装后验证。

案例:松手归零

放虚拟摇杆和标签。AutoCenter 为真时松手回中心,用 Released 事件处理停止动作。

when Screen1.Initialize() {
  虚拟摇杆1.AutoCenter = true
  虚拟摇杆1.DeadZone = 0.1
}
when 虚拟摇杆1.PositionChanged(x坐标, y坐标) {
  标签1.Text = join("X=", x坐标, ",Y=", y坐标)
}
when 虚拟摇杆1.Released() {
  标签1.Text = "已松手,停止移动"
}

X、Y 在 -1 到 1 范围内,向右和向上为正。死区用于过滤中心附近的小幅抖动;控制真实设备时也要发送停止指令。

属性、方法与事件速查

完整参数类型、默认值和平台说明见组件参考。下表按调用入口列出用途;有完成事件的方法在事件中读取结果。

入口 用途
角度(Angle) 当前推动的角度(度),0 为正右、90 为正上,逆时针增加;在中间时为 0。
松手回中(AutoCenter) 松手后摇杆自动回到中间(默认真);为假时停在松手的位置(如油门)。
底盘颜色(BaseColor) 底盘颜色,默认半透明灰。
死区(DeadZone) 死区:推动力度小于它时方向算「中间」(防手抖),0 到 0.9,默认 0.2。
方向(Direction) 当前方向:上、下、左、右(8 方向时还有左上等),在死区内为「中间」。
方向数(Directions) 方向数:4(上下左右)或 8(再加斜向),默认 8。
距离(Distance) 当前推动的力度,0(中间)到 1(推到边缘)。
摇杆颜色(KnobColor) 摇杆头颜色,默认蓝色。
尺寸(Size) 摇杆底盘的直径(像素),默认 140。
X坐标(X) 当前横向位置,-1(最左)到 1(最右)。
Y坐标(Y) 当前纵向位置,-1(最下)到 1(最上)。
方向改变时(方向)(DirectionChanged) 方向改变时触发一次:上、下、左、右(8 方向时还有左上、右上、左下、右下),回到死区内为「中间」。遥控小车直接按方向发指令用它。
位置改变时(x坐标,y坐标)(PositionChanged) 摇杆位置改变(拖动中连续触发,松手回中时也触发一次 0,0)。x、y 在 -1 到 1 之间,右、上为正。
被压紧时(Pressed) 手指按下摇杆。
被松开时(Released) 手指松开摇杆。

常见问题与验收

检查项 操作与预期
初始化 对照案例检查是否已经调用加载、注册、连接或显示方法;仅拖入组件不会替你执行这些步骤。
结果返回 将成功事件和失败事件都接到标签,记录事件参数;异步操作完成前不读取结果属性。
输入配置 检查素材名大小写、网址是否为直接资源地址、文件是否存在、编号和索引是否在范围内。
平台与权限 按组件参考中的平台说明测试;授权被拒绝时应有明确提示,不继续假定操作成功。
最小案例 先验证页面中的最小案例,再验证第二个场景;重复操作、取消、返回屏幕后结果应符合事件说明。

完整 .aia 源码与操作指导

下载 .aia 源码

不用蓝牙设备即可测试真实摇杆坐标、角度、方向和按压事件。上方固定触摸区,下方独立滚动控制区;界面只显示硬件指令建议,不伪装设备连接或发送成功。

导入 JoystickAllFeatures.aia,连接最新伴侣,或编译独立安装包。真机/伴侣运行尚未实测。

API / 功能 操作入口 预期结果
Pressed、PositionChanged、DirectionChanged、Released 在上方摇杆区按下、拖动四个方向、斜向、松手 按压与坐标反馈;方向仅改变时更新,松手有真实事件
X、Y、Angle、Distance、Direction 推向右边、上边、中心,观察事件和属性 右与上为正,中心距离0,角度0右90上;输入不伪造
AutoCenter 关闭回中,拖动松手;再开启并触摸松手 关闭保留位置,开启真实回中心;停止按钮不伪造归零事件
Directions、DeadZone、Size 4/8方向、0.2死区、180直径,应用参数 实际配置读回;死区防抖;直径同步方形宽高
BaseColor、KnobColor 切换颜色 底盘、摇杆头颜色读回并更改
Visible、Left、Top、Width、Height、WidthPercent、HeightPercent 下方控制隐藏并恢复、像素和百分比设置 外部控件可用;任意尺寸示例用于测试布局,常规推荐宽高等于直径
设计器属性 查看设计器初始4方向、非回中及颜色;初始化运行 运行默认8方向、回中,所有设计器项及代码读写可查看
遥控建议 拖向上下左右 显示F/B/L/R/S建议;未连接设备不会声称发送成功

所有返回值均用于界面反馈,错误由底部错误区展示。设计器采用明确非默认配置,初始化与界面同步。API 覆盖检查按最终 AIA 检查方法、事件、属性读取与设置及设计器配置,不能替代真实设备验证。

虚拟摇杆遥控

导入方法:项目 → 导入项目(.aia)→ 选择下载的 .aia 源码文件。 不用蓝牙设备即可测试真实摇杆坐标、角度、方向和按压事件。上方固定触摸区,下方独立滚动控制区;界面只显示硬件指令建议,不伪装设备连接或发送成功。 覆盖检查 42/42。首次载入及保存重开均0个错误,真实后台导入、安装包编译通过;真机/伴侣/硬件联调尚未实测。全部属性读写、方法与事件的操作入口和预期结果见组件指导。

文档反馈