Live2Dモデルを組み込んで使用する
前回のつづき
Live2Dのプログラミングをしていると数十個いや数百個いやそれ以上のモデルデータを使いたいなんてことがありますよね。
そんなときにはこれ、このクラスを使うと大量のモデルデータをスマートに活用できてしまいます。
構成
LoadBinaryL2dModel.fla //タイムラインにメインのコードを記述
moblist.as //mob形式のモデルデータ登録するファイル
monochromebit-L2dLoadCls.as //今回使用するクラス
model //mobデータ置場
使用方法
まず最初にmoblist.asに使用するLive2Dモデルのmobファイルを登録します。
実際はL2dLoadCls.asに記述してあるのですがわかりやすいように切り離してあります。
//埋め込むモデルをリストに登録する private static const MOB_LIST:Array = []; //0ドロイド [Embed(source='/model/android.mob',mimeType='application/octet-stream')] private static var embedMod0:Class; MOB_LIST.push(embedMod0); //1草 [Embed(source='/model/kusa.mob',mimeType='application/octet-stream')] private static var embedMod1:Class; MOB_LIST.push(embedMod1); //2アマゾン [Embed(source='/model/amazon.mob',mimeType='application/octet-stream')] private static var embedMod2:Class; MOB_LIST.push(embedMod2);
次はflaファイルのタイムラインにメインのコードを書きます。
//タイムラインに記述しています。 import jp.live2d.model.Live2DModel; import monochromebit.L2dLoadCls;//今回つくったクラス //組込クラスのインスタンス化 var l2dloadCls:L2dLoadCls = new L2dLoadCls(); //モデルの入れ物 var l2dAndMod:Live2DModel; //MOB_LIST[xx]のインデックス番号のモデルをセット l2dAndMod = l2dloadCls.getModel(2); //この場合MOB_LIST[2]=getModel(2)です。 //スプライトにモデルをセット var modSpt:Sprite = l2dAndMod.getSprite(); //スプライトを登録 this.addChild(modSpt) ;
使い方はこんな感じです。
今回CS5でflaファイルにメインコードを記述しましたがクラス自体はflex環境でも使用可能です。
実行にはLive2D SDK for Flash 1.0が必要です。
▽ダウンロードはこちら
zipでやる
ついでにL2dLoadClsクラスの中身
//mobファイルをバイナリとして組み込んでロード
package monochromebit
{
import jp.live2d.model.Live2DModel;
import flash.utils.*
/**
* 多量のMOB読み込み
*/
public class L2dLoadCls{
public var l2dMod:Live2DModel;
/**コンストラクタ**/
public function L2dLoadCls(){}
//モデルを生成して返す
public function getModel(element:int):Live2DModel{
//MOB_LISTからモデルロード
l2dMod = loadBinMod(element);//○番めのmob読み込み
return l2dMod;
}//getModelEND
//バイナリからモデルロード
private function loadBinMod(element:int):Live2DModel{
var byteArray:ByteArray = new MOB_LIST[element] as ByteArray;
return Live2DModel.loadFromByteArray(byteArray);
}//loadBinModEND
include "../moblist.as"//mob登録リスト
}//classEND
}/**packageEND**/