Skip to content

LM

引擎特性

  • 使用自定义跨平台底层渲染。
  • 提供游戏专用的API接口。
  • 不支持浏览器DOM API.

枚举

枚举描述

ALIGN_HORIZONTAL

ALIGN_VERTICAL

Alignment

AudioStatus

AudioType

Ease

动画缓动效果

EffectType

特效类型枚举

FilterEffectEnum

滤镜叠加类型

FilterMode

滤镜模式

Orientation

SCENE_ANIMATION_STYLE

SYSTEM_UI

描述

AudioPlayer

lm 的音频播放 一个对象代表一个音轨

示例

javascript
// 创建音频播放器并播放背景音乐
let audioplayer = new LM.AudioPlayer();
audioplayer.loadSource("Audio/SE/吹风.mp3")
    .setType(LM.AudioType.BGM)
    .onLoaded(()=>{
        console.log('加载完成')
    })
    .setVolume(30)
    .setLoop(true)
    .onComplete(()=>{
        console.log('播放完成')
    })
    .onProgress((progress)=>{
        console.log('播放进度',progress)
    })
    .play();

BaseEffect

特效基类,所有特效的父类

Button

按钮

示例

ts
// 声明按钮
 const button = new LM.Button();
 // 设置图片
   button.src = "./Graphics/flag.png"
   // 开启九宫格
   button.check9Grid = true
   // 设置九宫格坐标区域,上,下,左,右
   button.scale9Grid = "10,10,10,10"
   // 设置按钮的宽度
   button.w = 300
   // 设置按钮的高度
   button.h = 300
   // 设置按钮的文字
   button.text = "按钮"
   // 设置按钮文字的带下
   button.fontSize = 28
   // 设置按钮的点击事件
   button.click( () =>{
       console.log("click ")
   })

Container

普通容器

FlashEffect

闪光特效效果

示例

ts
let screenW = LM.getStageInfo().width;
   let screenH = LM.getStageInfo().height;
   let img = new LM.ImgView();
   this.addChild(img);
   img.width = screenW;
   img.height = screenH;
   let butEff = new LM.FlashEffect(
       {
           flashTime:200,
           flashCount:3
       }
   );
   butEff.addToTarget(img);
   img.onClick(()=>{
       butEff.play();
   })

FloatingPanel

悬浮scene

FrameAnimation

帧动画

GameObject

游戏数据对象类

ImgView

图片

ListView

泳道,列表, 通常与ShopWin一起使用

示例

ts
// 先定义一个ShopWin(橱窗)用来谁单个条目的布局
class ShopWinTest extends LM.ShopWin{
 listener:Function
  init(): void {
      super.init()
      let num = this.params['num']
      let t = new LM.TextView();
      t.alignHorizontal = 1
      t.alignVertical = 1
      t.w = 400
      t.h = 50
      t.fontSize = 30;
      t.fontColor = "#ff0000";
      t.text = num 
      // 定义点击事件
      t.click( () =>{
          this.sceneManager.clickItem(num)
      })
      this.addChild(t);
      this.backgroundColor = "#FFFFFF"
  }

  setItemClickEvent(listener:Function){
     this.listener = listener
  }
}
let data = [
      {
          "num":"1"
      },
      {
          "num":"2"
      },
      {
          "num":"3"
      },
      {
          "num":"4"
      }
  ]
 let list = new LM.ListView(ShopWinTest,data)
 list.orientation = "vertical";
 list.backgroundColor = "$FFFFFF"
 list.orientation = "vertical";

LMFunction

函数类 主要用于旧数据处理 不建议作者使用

ProgressBar

进度条

示例

ts
const progressbar = new LM.ProgressBar()
 // 设置颜色类型  0 是图片类型
   progressbar.sourceType = 1
   // 设置尺寸
   progressbar.w = 200
   progressbar.h = 40
   // 设置最大进度
   progressbar.max = 100
   // 设置当前进度
   progressbar.current = 30
   // 设置方向
   progressbar.direction = 0
   // 设置进度颜色
   progressbar.progress = "#00FF00"
   // 设置背景颜色
   progressbar.background = "#FF0000"
   // 设置进度条的边框
   progressbar.progress_padding = 3

PulseEffect

呼吸特效效果

示例

ts
参考闪烁效果

RichTextView

富文本 相对于普通文本如果文字超过行,则会出现滚动条

示例

ts
同 TextView
 const richTextView = new LM.RichTextView()
   richTextView.text = "你好121212121212121212121"
   richTextView.fontColor = "#FFFFFF"
   richTextView.fontSize = 28
   richTextView.w = 100
   richTextView.h = 100

RippleEffect

涟漪特效效果

示例

ts
参考闪烁效果

Scene

使用本游戏引擎所有的场景都需要继承Scene

示例

ts
@LM.Class("MyScene") // 必须使用@LM.Class注册MyScene, constructor 构造函数无需在子类中实现。
export default class MyScene extends LM.Scene {
     init(){
         // todo 实现游戏化的初始逻辑
     }
     update(){
         // todo 实现游戏的循环执行逻辑,每帧执行一次
     }
}

ScrollView

示例:创建并添加一个带滚动视图的图片

示例

// 1. 创建图片视图
const img = new LM.ImgView();
img.src = 'Graphics/Background/封面图.png';

// 2. 创建滚动视图
const scrollView = new LM.ScrollView();
scrollView.width = 400;  // 设置宽度
scrollView.height = 400; // 设置高度
scrollView.x = 100;      // 设置x坐标
scrollView.y = 100;      // 设置y坐标
scrollView.orientation = LM.Orientation.vertical; // 设置垂直滚动方向

// 3. 将图片设置为滚动视图的内容容器
scrollView.contentContainer = img;

// 4. 将滚动视图添加到当前场景
scene.addChild(scrollView);

ShopWin

橱窗,容器 可以作为列表的一个item, 单独作为控件的容器

示例

ts
//1. 橱窗的使用参考ListView
//2. 容器的使用
//  定义橱窗的布局
class ShopWinDemo extends LM.ShopWin{
       init(): void {
           super.init()
           // 获取传入参数 awake(obj) 方法被调用后会这个方法会自动执行
           let num = this.params['num']
           let text = new LM.TextView();
           text.w = 400
           text.h = 50
           text.fontSize = 28
           text.fontColor = "#ff0000";
           text.text = num 
           text.click( () => {
               console.log("点击")
           })
           this.addChild(text);
           this.backgroundColor = "#FFFFFF"
       }
   }
   let shopWin = new ShopWinDemo()
   shopWin.awake(
   {  
       num:"yishui"
   )

Slider

滑动条

示例

ts
let slider = new LM.Slider();
   scene.addChild(slider)
   slider.x = 100;
   slider.y = 100;
   slider.max = 100;
   slider.min = 0;
   slider.step = 1;
   slider.current = 0;
   slider.sourceType = 1;
   slider.bottomSource = "#FFFFFF" 
   slider.upSource = "#FF0000" 
   slider.slideSource = "#00FF00"

Spine

骨骼动画

示例

ts

Switch

开关控件

TextView

文字

Toast

提示框

示例

javascript
LM.Toast.show("hello world",2000)

Tween

动画类

示例

let obj = new LM.ImgView();
// 1000 ms 内修改obj属性的x的值直到100,
LM.Tween.get(obj)
.to({x:100},1000)

UIBaseView

接口

接口描述

EffectParams

基础特效参数配置

FlashEffectParams

闪烁特效参数

ISaveData

PulseEffectParams

脉动缩放特效参数

RippleEffectParams

涟漪特效参数配置

类型别名

类型别名描述

HueFilter

滤镜

示例

ts

已被弃用

img.addComponent(new LM.UIFilterScript({ mode:1, attr:[100,0,0,100,100] }))

IOverlay

叠加滤镜

示例

ts

已被弃用

let img = new LM.ImgView(); img.alias = "aa" scene.addChild(img); //图片需要imagewidth 和imageheight 才会有宽高 滤镜才能生效 img.imageWidth = 960; img.imageHeight = 540; img.src = "aa.png" img.x = 400; img.y = 200;

let img2 = new LM.ImgView(); img2.src = '查克摩尔-大图.png' img2.x = 900; img2.y = 100; scene.addChild(img2)

img2.setFilterData({ mode:2, attr:{ type:0, createLayer:1, layers:['aa'] } })

LMSceneCloseData

scene 关闭的时候传递的参数

示例

ts
@LM.Class("ShapeScene")
   class ShapeScene extends LM.Scene {
       onSceneClose(data: LM.LMSceneCloseData): void {
           
       }
   }

变量

变量描述

global

全局变量 可用于挂在作者的临时数据(如果需要在读档时还原类,类请使用ObjClass注册,类名和注册名需保持一致)

示例

ts
LM.global.test1 = "hello world1";
LM.global.test2 = "hello world2";

globalGameObject

全局游戏对象,用于暂存GameObject,每帧会刷新,不建议挂在不需要刷新的数据(如果需要在读档时还原类,类请使用ObjClass注册,,类名和注册名需保持一致)

示例

ts
@LM.ObjClass("obj1")
export class obj1 extends LM.GameObject{
   private int1 = 0;
   init(){
     this.int1 = 1
   }
   update(){
     this.int1++;
   }
}

LM.globalGameObject.obj1 = new obj1();
LM.globalGameObject.list = [
 new obj1(),
 new obj1(),
 new obj1(),
]

isRefreshGlobal

globalGameObject刷新开关 默认打开

函数

函数描述

addPersistContainer

添加一个持久化容器,位于顶层

autoSave

自动存档功能(本地存档)

CallCustomUI

打开高级ui界面

示例

ts
CallCustomUI(0,{
    "fps":1
},false)

callLanguageSetting

呼叫语言设置弹窗

CallSystemUI

打开系统ui界面

示例

ts
取名界面: {"args":["姓,0(参数类型 0:字符串 1:数值),0(绑定的索引),名,0,1,昵称,0,2,国家,0,3“,3],"fps":1} (名字数组,名字个数)
换装界面: {"args":["1"],"fps":1} (角色id)

checkCollision

碰撞检测

Class

注册scene 用于入口scene名称 或者呼叫scene 入口scene的更改

参阅

./config.json

示例

ts
@LM.Class("SceneTemplate", {
  IN: [{ TYPE: "INT", DES: "备注1", DEFAULT: 100 }],
  OUT: [
    { TYPE: "STR", DES: "备注2" },
    { TYPE: "OBJ", DES: "备注3" },
    { TYPE: "LIST", DES: "备注4" }
  ]
})

clearInterval

清除间隔

示例

ts
// 这里不能直接使用 setinterval 设置。
let id = LM.setinterval(()=>{
  console.log("间隔执行")
},1000)
LM.clearInterval(id);

clearTimeout

清除延时

示例

ts
// 这里不能直接使用 setTimeout 设置。
let id = LM.setTimeout(()=>{
  console.log("延时执行")
},1000)
LM.clearTimeout(id);

deepCopy

深拷贝

deleteFile

删除文件

exitGame

关闭游戏

FloatingClass

注册悬浮scene 用于悬浮scene名称 或者呼叫悬浮scene

示例

ts
@LM.FloatingClass("SceneTemplate")

Func

注册函数类 主要用于旧数据转换 不建议作者使用

示例

ts
@LM.Func("func")

getAutoPlayStatus

获取自动播放状态

getBaseLanguage

获取基础语言 基础语言是运行此游戏引擎的时候的变量

示例

ts
let lang = LM.getBaseLanguage();

getBgmVolume

获取背景音乐音量

getClickPoint

获取鼠标最近一次点击的x y坐标

示例

ts
let [x,y] = LM.getClickPoint();

getConstClass

获取常量库类

getConstData

获取常量库数据

getConstObj

获取常量库实例(生成的类实例)可以通过CONST_CLASS[tableIndex] 来指定对应的类型

示例

ts
let obj = LM.getConstObj(0,1) as typeof CONST_CLASS[0];

getDubSpeed

获取配音速度

getEffectVolume

获取音效音量

getFileMapData

获取资产数据

getFullScreenStatus

获取全屏状态 true 全屏 false 窗口

getLanguage

获取当前设置语言 当前设置语言是运行此游戏引擎的时候的变量,是这个游戏的当前使用的语言

示例

ts
let lang = LM.getLanguage();

getMousePoint

获取鼠标x y坐标

示例

ts
let [x,y] = LM.getMousePoint();

getNetTime

获取服务器时间

getPersistContainerByAlias

根据别名获取顶层容器内子ui

getPersistContainerByIndex

根据索引获取顶层容器内子ui

getPlatformLanguage

获取当前平台设置的默认语言

getPlatformType

获取当前平台类型: "android":安卓app "ios":ios app "web":网页 "pc":工具测试预览(包含dev)

getRandom

获取随机数

getRootContainer

获取根节点容器 (请谨慎操作)

getRunEnv

当前运行环境: "dev":代码网页预览 "tool":工具测试预览 "release":已发布作品环境

getSaveListData

获取所有存档数据 (包括存档名,存档时间,存档截图)

示例

ts
LM.getSaveListData(function(data){
 console.log(data);
})

getStageInfo

获取舞台信息

示例

ts
let {width,height} = LM.getStageInfo();

getSteamUserName

获取steam平台的用户名

getStoryPlusValue

获取剧情二周目数值的方法

getStoryValue

获取剧情数值的方法

getTopContainer

获取最上层容器

getVioceVolume

已被弃用

自v1.3.0起废弃,请使用新的getVoiceVolume 获取语音音量

getVoiceVolume

获取语音音量

isFileExist

检测文件是否存在

示例

ts
LM.isFileExist("test.txt",function(isExist){
 console.log(isExist);
})

jumpStory

跳转剧情

JumpStory

已被弃用

自v1.3.0起废弃,请使用新的jumpStory 跳转剧情

killAllScenesToParent

返回剧情部分

log

控制台打印信息(跨平台)

ObjClass

注册gameObj类

示例

ts
@LM.ObjClass("obj1")

pauseBgm

暂停播放BGM

pauseEffect

暂停播放音效

pauseVoice

暂停播放语音

playBgm

播放背景音乐

示例

ts
LM.playBgm("test.mp3",100,0,0,true);

playEffect

播放音效

示例

ts
LM.playEffect("test.mp3",100,0,0,true);

playVoice

播放语音

示例

ts
LM.playVoice("test.mp3",100,0,0,true);

preloadFont

预加载字体资源

示例

ts
LM.preloadFont(["test.ttf"],()=>{
    console.log("加载完成")
})

preloadRes

预加载资源

示例

ts
LM.preloadRes(["test.png","test.json"],()=>{
    console.log("加载完成")
})
LM.preloadRes(["test.png","test.json"],(finishedNumber,totalNumber)=>{
    console.log("当前进度",finishedNumber)
},true)

readFile

读取文件

示例

ts
LM.readFile("test.txt",function(data){
 console.log(data);
})

RegistConstClass

注册常量库类到Lm中

示例

javascript
@LM.RegistConstClass('0')

removePersistContainer

移除一个持久化容器

restore

读取存档

restoreGlobal

读档时触发 用于恢复存档数据 建议作者重新能够还原的更准确

resumeBgm

恢复播放BGM

resumeEffect

恢复播放音效

resumeVoice

恢复播放语音

save

读者手动存档功能(云存档)

saveGlobal

返回 global 以及 globalGameObject 的数据,用于存档和读档

savelistAllClear

清空存储表

SavelistAllClear

已被弃用

自v1.3.0起废弃,请使用新的savelistAllClear 清空存储表

savelistGet

获取存储表数据

SavelistGet

已被弃用

自v1.3.0起废弃,请使用新的savelistGet 获取存储表数据

savelistPush

存储表添加

SavelistPush

已被弃用

自v1.3.0起废弃,请使用新的savelistPush 存储表添加

savelistSet

设置存储表数据

SavelistSet

已被弃用

自v1.3.0起废弃,请使用新的savelistSet 设置存储表数据

savelistSplice

存储表插入

SavelistSplice

已被弃用

自v1.3.0起废弃,请使用新的savelistSplice 存储表插入

screenShot

截取当前屏幕图片

示例

ts
let base64 = LM.screenShot(this,2);
let img = new LM.ImgView();
img.src = base64;
this.addChild(img);

setAutoPlayStatus

设置自动播放状态

setBgmVolume

设置音量

setDubSpeed

设置配音速度

setEffectVolume

设置音效

setFullScreen

设置全屏状态 1 全屏 0 非全屏

已被弃用

自v1.3.86起废弃,请使用新的setFullScreenStatus

setFullScreenStatus

设置全屏状态

setInterval

设置间隔

示例

ts
// 这里不能直接使用 setinterval 设置。
LM.setinterval(()=>{
  console.log("间隔执行")
},1000)

setSaveViewData

设置存档数据

示例

ts
LM.setSaveViewData(0,{
  "name":"存档1",
  "money":"2000",
},()=>{
  console.log("设置存档数据成功");
});

setStoryPlusValue

设置剧情二周目数值的方法

setStoryValue

设置剧情数值的方法

示例

ts
LM.setStoryValue("int",0,200);

setTimeout

设置延时

示例

ts
// 这里不能直接使用 setTimeout 设置。
LM.setTimeout(()=>{
  console.log("延时执行")
},1000)

setVoiceVolume

设置语音

showScene

scene展示第一个scene

stopBgm

停止播放BGM

示例

ts
LM.stopBgm(1,1000);

stopEffect

停止播放音效

示例

ts
LM.stopEffect(1,1000);

stopVoice

停止播放语音

示例

ts
LM.stopVoice(1,1000);

writeFile

写入文件

示例

ts
LM.writeFile("test.txt","hello world");