Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
  • Loading branch information
LayaCharley committed Jan 10, 2022
2 parents f80e472 + 9df1c7c commit aa5e28c
Show file tree
Hide file tree
Showing 64 changed files with 1,044 additions and 198 deletions.
4 changes: 2 additions & 2 deletions Chinese/LayaNative/webview/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
/**
* 显示一个webview
* @param url {string} 要显示的url地址。
* @param posx {number} weview的左上角位置
* @param posy {number} webivew的左上角位置
* @param posx {number} webview的左上角位置
* @param posy {number} webview的左上角位置
* @param width {number} webview的宽度
* @param height {number} webview的高度
* @param canclose {boolean} webview是否可以被关掉。
Expand Down
2 changes: 1 addition & 1 deletion Chinese/miniGame/oppo/rundebug/readme.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@

2、下载安装OPPO真机测试APP "快应用"(OPPO 小游戏调试器 )

前往OPPO官网文档([https://cdofs.oppomobile.com/cdo-activity/static/201810/26/quickgame/documentation/games/use.html](https://cdofs.oppomobile.com/cdo-activity/static/201810/26/quickgame/documentation/games/use.html))我们找到`安装 runtime.apk 包到 OPPO 手机上`这个栏目,通常会选择新版本,进行下载。
前往OPPO官网文档(https://activity-cdo.heytapimage.com/cdo-activity/static/201810/26/quickgame/documentation/#/games/use)我们找到`安装 runtime.apk 包到 OPPO 手机上`这个栏目,通常会选择新版本,进行下载。

要注意的是,调试器的版本,文档中有注明最小平台版本号。LayaAirIDE发布的时候,要和这里最小平台版本号对应上。

Expand Down
15 changes: 0 additions & 15 deletions Chinese/navConfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -1081,11 +1081,6 @@
"name_3_url": "Chinese/LayaNative/Platform_Interface/",
"name_3_file": "readme.md"
},
{
"name_3_name": "iOS-App内购",
"name_3_url": "Chinese/LayaNative/In_APP_Purchase_IOS/",
"name_3_file": "readme.md"
},
{
"name_3_name": "webview",
"name_3_url": "Chinese/LayaNative/webview/",
Expand Down Expand Up @@ -2180,11 +2175,6 @@
"name_3_url": "Chinese/LayaNative/Platform_Interface/",
"name_3_file": "readme.md"
},
{
"name_3_name": "iOS-App内购",
"name_3_url": "Chinese/LayaNative/In_APP_Purchase_IOS/",
"name_3_file": "readme.md"
},
{
"name_3_name": "webview",
"name_3_url": "Chinese/LayaNative/webview/",
Expand Down Expand Up @@ -3278,11 +3268,6 @@
"name_3_url": "Chinese/LayaNative/Platform_Interface/",
"name_3_file": "readme.md"
},
{
"name_3_name": "iOS-App内购",
"name_3_url": "Chinese/LayaNative/In_APP_Purchase_IOS/",
"name_3_file": "readme.md"
},
{
"name_3_name": "webview",
"name_3_url": "Chinese/LayaNative/webview/",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,138 @@
# LayaAir引擎适配版Spine骨骼动画使用

> *本篇采用LayaAirIDE 2.12.0版本截图说明,如有差异,请下载最新稳定版本的LayaAirIDE,并以最新版本为准。*
在2.12.1beta版的LayaAir中我们将免费开放Spine骨骼动画适配版,本篇文章我们将详细介绍如何在新版本中使用适配版Spine。



## 一、适配版Spine的介绍

### 1、适配版Spine格式

适配版Spine可以直接适配Spine,无需转换为LayaAir引擎格式,直接对spine的文件进行使用支持



### 2、适配版Spine版本的支持

适配版支持到3.4~3.8(含)以下的版本导出资源。



### 3、适配版Spine支持的功能列表

以下为适配版中支持的常用功能:

> - 支持图片裁剪功能。
> - 支持继承要同时选择旋转跟位移。
> - 支持动画的部位以及整体换色。
> - 支持路径动画。
> - 解除LayaAir引擎对骨骼数量255限制。
> - 解决美术制作动画对IK帧限制。
> - 支持 spine动画融合、蒙皮功能。
> - 支持spine插槽混合模式中除正常以外的另外三个“相加””相乘””滤色”。
> - 支持spine软件对插槽颜色和透明度的动画控制。
还有一些其他的功能也是可以使用的,但是未经过我们的测试,需要开发者自己去尝试



### 4、适配版Spine动画播放模式

在下面的示例代码中有一段代码

```typescript
this.skeleton = this.templet.buildArmature();
```

与内置版Spine动画播放模式不同的地方在于内置版我们需要传一个参数来确认使用哪种模式(三种模式中,0:不支持换装,1,2支持换装),而在适配版中我们使用的是Spine官方的适配方式,所以可以不用传参数了。





### 5、适配版Spine类库设置

在新版本之后使用适配版spine的时候,开发者需要在IDE中的引擎库中按照自己的需求勾选需要的类库spine-core-3.7.js或者spine-core-3.8js,不管是用的是3.8以后还是3.7之前的spine,都需要勾选上laya.spine.js。

![](../../../../../LayaAir_TS/2D/beginners/animation/SpineAdaptedVersion/img/1.png)



在代码中使用时,我们在使用适配版Spine时需要引用指定的类有`Laya.SpineSkeleton``Laya.SpineTemplet``Laya.SpineTempletBinary`

其中,`Laya.SpineSkeleton`是spine骨骼动画必须要引用的类,这里封装了spine的runtime库。

`Laya.SpineTemplet``Laya.SpineTempletBinary`是用于资源,它们的区别是:当使用资源为.json结尾的时候需要引用的是`Laya.SpineTemplet`,使用资源为.skel格式的时候需要引用的是`Laya.SpineTempletBinary`

如图所示因为用到的是.skel结尾的资源,所以我们引用的是`Laya.SpineTempletBinary`



![](../../../../../LayaAir_TS/2D/beginners/animation/SpineAdaptedVersion/img/2.png)





## 二、适配版Spine的使用

### 1、适配版Spine动画模板

适配版Spine和内置版Spine在使用时也是需要模板这个概念,在LayaAir引擎中模板是一种特别的概念,表示一种数据结构,这种数据结构可以被复用。骨骼动画就使用到了模板,对于同一个动画来说,可以只创建一个动画模板,然后实例多个播放的实例,这样内存中就只有一份的动画数据,但是却可以在舞台上显示多个动画。

代码示例:

```typescript
public class Main {
private var aniPath = "res/bone/spineboy-pma.skel";
private var templet:SpineTempletBinary;
private var skeleton:SpineSkeleton;
private var index: Number = -1;
public function Main() {
Laya.init(Browser.width, Browser.height, WebGL);
Laya.stage.scaleMode = Stage.SCALE_NOSCALE;
Laya.stage.bgColor = "#232628";
Stat.show();
this.startFun();
}

private function startFun(): void {
this.templet = new SpineTempletBinary();
this.templet.loadAni(this.aniPath);
this.templet.on(Event.COMPLETE, this, this.parseComplete);
this.templet.on(Event.ERROR, this, this.onError)
}

private function parseComplete(): void {
this.skeleton = this.templet.buildArmature();
Laya.stage.addChild(this.skeleton);
this.skeleton.pos(Browser.width / 2, Browser.height / 2 + 100);
this.skeleton.scale(0.5, 0.5);
this.skeleton.on(Event.STOPPED, this, this.play)
this.play();
}

private function onError(): void{
trace("parse error");
}

private function play(): void {
console.log("1111111111");
if(++this.index >= this.skeleton.getAnimNum()) {
this.index = 0
}
this.skeleton.play(this.index, false, true)
}
}
```

具体效果大家可以在官网引擎事例中查看。https://layaair2.ldc2.layabox.com/demo2/?language=zh&category=2d&group=Skeleton&name=SpineAdapted







Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
101 changes: 31 additions & 70 deletions LayaAir2.0/Chinese/LayaAir_AS3/2D/beginners/animation/spine/readme.md
Original file line number Diff line number Diff line change
@@ -1,54 +1,28 @@
# LayaAir引擎播放Spine骨骼动画
# LayaAir引擎内置版Spine骨骼动画

> 本篇采用LayaAirIDE 2.0.0版本截图说明,如有差异,请下载最新稳定版本的LayaAirIDE,并以最新版本为准。
Spine骨骼动画,是游戏中经常使用的骨骼动画之一,对于Spine的支持,LayaAir有两种方案,一种是购买Spine商业适配版,另一种是通过spine转换工具,被引擎免费支持的版本
Spine骨骼动画,是游戏中经常使用的骨骼动画之一,对于Spine的支持,LayaAir有两种方案,一种是使用Spine适配版,另一种是本篇要讲到的通过spine转换工具,使用的内置版

## 商业版与免费版区别
## 内置版的介绍

### 1、格式的区别
### 1、格式的介绍

免费版需要通过LayaAirIDE内置的工具,将Spine文件转换成LayaAir引擎识别的格式(本文档中会讲)。

商业适配版,直接适配spine,无需转换,直接对spine的文件进行使用支持。
内置版需要通过LayaAirIDE内置的工具,将Spine文件转换成LayaAir引擎识别的格式(本文档中会讲)。

### 2、新版本的支持

免费版支持spine 3.4.0.2至3.7.89之间的版本导出资源。

商业适配版支持到最新的版本导出资源。
内置版支持spine 3.4.0.2至3.7.89之间的版本导出资源。

### 3、性能的差异

LayaAir引擎中针对骨骼动画做出过深度优化,使用免费版,由于是通工具将spine转换为LayaAir引擎的格式。性能要更优一些。当使用的spine功能比较基础时,可以优先使用免费版。

商业适配版,spine解析播放过程是由spine官方提供的类库支持,也就是说spine这块所有的js计算,已经委托为spine-core了,只是渲染使用的LayaAir引擎,所以性能的瓶颈在于Spine本身。可能会弱于LayaAir引擎中骨骼动画方案。

### 4、商业版适配版支持,免费版不支持的功能列表

商业适配库包括了免费版中的全部功能,和一些LayaAir spine免费版不支持的功能,但商业适配版中支持的。
LayaAir引擎中针对骨骼动画做出过深度优化,使用内置版,由于是通工具将spine转换为LayaAir引擎的格式。性能要更优一些。当使用的spine功能比较基础时,可以优先使用内置版。

以下为商业适配版中支持的常用功能:
适配版,spine解析播放过程是由spine官方提供的类库支持,也就是说spine这块所有的js计算,已经委托为spine-core了,只是渲染使用的LayaAir引擎,所以性能的瓶颈在于Spine本身。可能会弱于LayaAir引擎中骨骼动画方案。

> - 支持图片裁剪功能。
> - 支持继承要同时选择旋转跟位移。
> - 支持动画的部位以及整体换色。
> - 支持路径动画。
> - 解除LayaAir引擎对骨骼数量255限制。
> - 解决美术制作动画对IK帧限制。
> - 支持 spine动画融合、蒙皮功能。
> - 支持spine插槽混合模式中除正常以外的另外三个“相加””相乘””滤色”。
> - 支持spine软件对插槽颜色和透明度的动画控制。

以上内容是开发者通常比较关注的,还有一些商业版中存在,但以上没有提及的功能,可以联系商业合作对接人沟通咨询,另外,免费版中支持的功能,商业版中全部支持。

![img](https://www.layabox.com/product/img/wechat.jpg)

(图)商务合作对接人 微信二维码



## 免费版的使用说明
## 内置版的使用说明

通过LayaAirIDE自带的转换工具,可以将Spine骨骼动画格式转换为LayaAir引擎支持的骨骼动画格式。

Expand All @@ -64,15 +38,15 @@ Spine骨骼动画支持JSON与二进制两种数据导出方式,需要注意

LayaAirIDE的Spine转换工具只支持图集模式的Spine骨骼动画转换,因此,在使用Spine骨骼动画编辑工具导出时,必须勾选`创建图集`,如图1所示。

![图1](img/1.png)
![图1](img\1.png)

(图1) Spine 骨骼动画编辑工具的导出界面

#### 1.3 在图集打包的设置项里,不能勾选旋转选项

在Spine骨骼动画编辑工具的创建图集右侧,点击`设置`按钮进入图集打包设置(Pack Settings)界面。要确认区域设置里的`旋转`选项处于未勾选状态。勾选`旋转`选项后,LayaAirIDE转换Spine工具,无法转换成功。

![图2](img/2.png)
![图2](img\2.png)

(图2) Spine 骨骼动画导出的图集打包设置界面

Expand All @@ -84,7 +58,7 @@ LayaAirIDE并非所有Spine版本都支持转换。支持的版本号在Spine转

导出生成的文件为`atlas,json,png`格式的文件,如图3所示。需要注意的是,使用转换工具转换时,不要直接拖动文件去转换,要将整个父级目录(*如图3中的spine目录*)拖入到转换面板中。

![图3](img/3.png)
![图3](img\3.png)

(图3)

Expand All @@ -96,14 +70,14 @@ LayaAirIDE并非所有Spine版本都支持转换。支持的版本号在Spine转

在LayaAirIDE的`设计模式`中,依次点击菜单栏的 `工具` --> `Spine动画转换` ,如图4所示,即可打开`Spine格式转换`工具。

![图4](img/4.png)
![图4](img\4.png)

(图4)


在打开的`Spine格式转换`工具面板中,顶部Spine后面的括号内是支持转换的spine版本号,如图5所示,当前支持将Spine 3.4.0.2和3.6.16版本以及两个版本之间的Spine骨骼动画转换为LayaAir引擎支持的格式。

![图5](img/5.png)
![图5](img\5.png)

(图5)

Expand All @@ -112,9 +86,9 @@ LayaAirIDE并非所有Spine版本都支持转换。支持的版本号在Spine转

#### 2.2 生成.sk后缀的骨骼动画文件

打开`Spine格式转换`工具面板后,将spine导出的资源目录拖入到转换面板,或者点击浏览按钮选择spine导出的资源目录。然后点击`确定` ,即可在原资源目录下生成一个新的.sk后缀的骨骼动画文件。如图6所示。
打开`Spine格式转换`工具面板后,将spine导出的资源目录拖入到转换面板,或者点击浏览按钮选择spine导出的资源目录。然后点击`确定` ,即可在原资源目录下生成一个新的.sk后缀的骨骼动画文件。

![图6](img/6.png)
![图6](img\6.png)

(图6)

Expand All @@ -126,44 +100,31 @@ LayaAirIDE并非所有Spine版本都支持转换。支持的版本号在Spine转

除了转换生成的.sk格式文件,.png后缀的图集资源也需要复制到项目的目录中,如图7所示。(*其它导出的文件则不用管,仅供转换工具使用。*

![图7](img/7.png)
![图7](img\7.png)

(图7)

#### 3.2 spine动画播放示例

下面的示例将用到`laya.ani.bone.Skeleton` 类,具体API说明可直接打开链接查看:[https://layaair.ldc.layabox.com/api/?category=Bone&class=laya.ani.bone.Skeleton](https://layaair2.ldc2.layabox.com/api2/Chinese/index.html?version=2.9.0beta&type=2D&category=Animation&class=laya.ani.bone.Skeleton)

创建文档类SpineDemo.as,代码编写如下:

```java
package
{
import laya.ani.bone.Skeleton;

public class SpineDemo
{
public function SpineDemo()
{
//初始化舞台
Laya.init(1334, 750);

//创建一个Skeleton对象
var skeleton:Skeleton = new Skeleton();
//添加到舞台
Laya.stage.addChild(skeleton);

skeleton.pos(600,700);

//通过加载直接创建动画
skeleton.load("res/spine/spineboy/spineboy.sk");
}
}
}
创建 SpineDemo.js,代码编写如下:

```javascript
//初始化舞台
Laya.init(1334,750);
//创建一个Skeleton对象
var skeleton = new Laya.Skeleton();
//添加到舞台
Laya.stage.addChild(skeleton);
skeleton.pos(600,700);
//通过加载直接创建动画
skeleton.load("res/spine/spineboy/spineboy.sk");
```

运行效果如动图8所示

![动图8](img/8.gif)
![动图8](img\8.gif)

(动图8)

Loading

0 comments on commit aa5e28c

Please sign in to comment.