HarmonyOS应用开发实战:猫猫大作战-TypedArray 类型化数组

前言

TypedArray(类型化数组)是 JavaScript/ArkTS 中操作二进制缓冲区的高效接口。相比普通 Array,TypedArray 固定元素大小、内存连续、访问速度快,适合棋盘等固定结构的数值存储。

一、TypedArray 基础

// 使用 Int8Array 表示 5×8 棋盘constboardBuffer=newArrayBuffer(40);// 5×8=40 字节constboardView=newInt8Array(boardBuffer);// 设置位置 (2,3) 的猫咪等级boardView[3*5+2]=CatLevel.MEDIUM;// 读取constlevel=boardView[3*5+2];

二、TypedArray 类型选择

类型元素大小取值范围适用场景
Int8Array1 字节-128~127猫咪等级(0-6)
Uint8Array1 字节0~255网格状态、标记
Int16Array2 字节-32768~32767得分、连击
Float32Array4 字节浮点数位置、动画插值

三、性能对比

操作普通 ArrayInt8Array提升
内存占用(5×8)~320 字节40 字节8x
访问速度O(1)O(1)内存连续
序列化JSON直接 buffer快速

四、游戏中的应用

// 使用 TypedArray 优化棋盘存储classBoard{privatedata:Int8Array;constructor(){this.data=newInt8Array(5*8);this.data.fill(0);// 0 = 空}get(x:number,y:number):number{returnthis.data[y*5+x];}set(x:number,y:number,level:number):void{this.data[y*5+x]=level;}clear():void{this.data.fill(0);}}

五、最佳实践

  1. 固定数据结构用 TypedArray:棋盘、网格
  2. Int8Array 适合等级:0-6 级用 1 字节足够
  3. 配合 ArrayBuffer:序列化时直接取 buffer
  4. 避免频繁创建:复用同一个 TypedArray 实例

总结

TypedArray 提供类型化的二进制缓冲区操作,内存占用低、访问性能好,适合棋盘等固定结构的数值存储。核心要点:new Int8Array(buffer)视图、 固定元素大小省内存、 直接 buffer 序列化

如果这篇文章对你有帮助,欢迎点赞👍、收藏⭐、关注🔔,你的支持是我持续创作的动力!


相关资源:

  • TypedArray MDN 文档
  • 第 149 篇:ArrayBuffer
  • 第 151 篇:Notification
  • 第 152 篇:addSlot