首先明确一下,Label3D是如何使用的:
new Label3D(WALK, 0, 41);
// 参数1:标签名称(String)
// 参数2:标签起始帧(int)
// 参数3:标签结束帧(int)
接下来是具体示例代码:
package
{
import flare.basic.Scene3D;
import flare.basic.Viewer3D;
import flare.core.Label3D;
import flare.core.Pivot3D;
import flare.system.* //Input3D
import flash.display.*;
import flash.events.Event;
public class demo_anim extends Sprite
{
public static const WALK:String = "walk"
public static const RUN:String = "run"
private var scene:Scene3D;
private var model:Pivot3D;
private var walk:Label3D;
private var run:Label3D;
public function demo_anim()
{
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
scene = new Viewer3D( this );
walk = new Label3D( WALK, 0, 41 );
run = new Label3D( RUN, 50, 74 );
scene.addEventListener( Scene3D.COMPLETE_EVENT, completeEvent );
// flare3d 2.5.x开始已经不再支持f3d模型,全部使用 zf3d
model = scene.addChildFromFile( "../resources/player.zf3d" );
}
protected function completeEvent( event:Event ):void
{
model.addLabel( walk );
model.addLabel( run );
model.gotoAndPlay( WALK );
scene.addEventListener( Scene3D.UPDATE_EVENT, updateEvent );
}
protected function updateEvent( event:Event ):void
{
// 停止模型动作 - stop the model animation.
if( Input3D.keyHit( Input3D.S ))
model.stop();
// 恢复模型动作 - resume the model animation.
if( Input3D.keyHit( Input3D.P ))
model.play();
// 播放行走动作标签 - play certain animation label and blend between the animations.
if( Input3D.keyHit( Input3D.NUMBER_1 ))
model.gotoAndPlay( WALK, 15 );
// 播放跑动动作标签
if( Input3D.keyHit( Input3D.NUMBER_2 ))
model.gotoAndPlay( RUN, 15 );
// 恢复到第一帧
if( Input3D.keyHit( Input3D.NUMBER_3 ))
model.gotoAndStop( 0, 10 );
// 增加帧播放速率 - increment and decrement frameSpeed.
if( Input3D.keyHit( Input3D.NUMPAD_ADD ))
model.frameSpeed += 0.5;
// 减少帧播放速率
if( Input3D.keyHit( Input3D.NUMPAD_SUBTRACT ))
model.frameSpeed -= 0.5;
// 重置播放速率 - reset the frameSpeed.
if( Input3D.keyHit( Input3D.R ))
model.frameSpeed = 1;
}
}
}