package
{
import flash.display.Bitmap;
import flash.display.Sprite;
import flash.display.Stage3D;
import flash.display3D.Context3D;
import flash.display3D.Context3DRenderMode;
import flash.events.Event;
import flash.utils.ByteArray;
import jp.live2d.Live2DModelAs3;
import jp.live2d.util.UtSystem;
/**
* ...
* @author
*/
public class Main extends Sprite
{
public var context3D:Context3D;
public var live2DModel:Live2DModelAs3;
[Embed(source = '../assets/haru.moc', mimeType = 'application/octet-stream')] private var ModelData:Class;
[Embed(source = '../assets/haru.1024/texture_00.png')] private var Texture_00:Class;
[Embed(source = '../assets/haru.1024/texture_01.png')] private var Texture_01:Class;
[Embed(source = '../assets/haru.1024/texture_02.png')] private var Texture_02:Class;
public function Main():void
{
var stage3D:Stage3D = stage.stage3Ds[0];
stage3D.addEventListener(Event.CONTEXT3D_CREATE, onCreateStage3D, false, 1);
stage3D.requestContext3D(Context3DRenderMode.AUTO);
}
public function onCreateStage3D
(e
:Event):void {
context3D = (e.target as Stage3D).context3D;
context3D.configureBackBuffer(stage.stageWidth, stage.stageHeight, 0, false);
context3D.setRenderToBackBuffer();
// モデルの設定
live2DModel = Live2DModelAs3.loadModel( ByteArray(new ModelData) );
live2DModel.setGraphicsContext(context3D);
// テクスチャの設定
var tex00:Bitmap = new Texture_00;
var tex01:Bitmap = new Texture_01;
var tex02:Bitmap = new Texture_02;
live2DModel.setTexture(0, tex00.bitmapData );
live2DModel.setTexture(1, tex01.bitmapData );
live2DModel.setTexture(2, tex02.bitmapData );
// 表示位置の設定
var scale:Number = 2 / live2DModel.getCanvasWidth();
live2DModel.scaleX = scale;
live2DModel.scaleY = -scale * (stage.stageWidth/stage.stageHeight);
live2DModel.x = -1;
live2DModel.y = 1;
stage.addEventListener(Event.ENTER_FRAME, update
); }
public function update(e:Event):void
{
live2DModel.update(); // モデルのパラメータを更新
context3D.clear(1, 1, 1, 0); // 画面のクリア
live2DModel.draw(); // モデルを描画
context3D.present(); // 描画を適用
}
}
}