TAF로 개발된 샘플 #2

마지막으로 샘플 #2를 올리고 TAF에 대한 소개 시리즈를 끝내겠습니다.

프로그램 개요

이번에 만들 어플도 이전 것과 대동 소이 합니다. 단지 차이점이라면 이번엔 클릭하면 dae의 골격계 애니메이션이 일어난다는 점입니다. 마우스 오버 아웃시의 회전 기능은 여전합니다. 이번에는 FFX의 와카군이 수고하시겠습니다.

소스

이미 이전 시간에 학습했으므로 간단히 소스를 펼치겠습니다. 사실 정말 간단하기 때문에 주석조차도 달 필요가 없네요.

public class away2 extends TAF{

	include "embed/embed2.as";

	public function away2():void{}
	override protected function _init():void{
		var i:int, j:int;
		TAF.flowADD( {'rotator':rotator, 'ani':ani, 'over':over, 'out':out, 'aniRender':aniRender} );
		TAF.add3D( 'ui' );
		TAF.addCollada( 'ui', 'waka', {dae:'waka', material:{texture1:'t1',texture2:'t2'}} );
		TAF.bindTree( 'waka', 'ani & aniRender' );
		TAF.bindOver( 'waka', 'over' );
		TAF.bindOut( 'waka', 'out' );
		TAF.bindDown( 'waka', 'ani' );
		TAF.addData( 'wakaData', [0,0,0] );
		TAF.bindResize( '@ui' );
		TAF.bindRender( '@ui' );
	}

	private function aniRender( $tree:TAFtree ):void{
		var data:Array, ani:*, time:*;
		data = TAF.treeGET( TAF.treeKEY( $tree ) + 'Data' ).getTarget();
		time = ( getTimer() - data[2] ) * .001;
		ani = $tree.getTarget().animationLibrary.getAnimation("default").animator;
		if( time < ani.length ){
			ani.update( time );
		}else{
			ani.update( 0 );
			TAF.unbindRender( 'aniRender' );
		}
	}
	private function ani( $tree:TAFtree ):void{
		var temp:Array = TAF.treeGET( TAF.treeKEY( $tree ) + 'Data' ).getTarget();
		temp[2] = getTimer();
		TAF.bindRender( 'aniRender' );
	}

	private function over( $tree:TAFtree ):void{
		var data:Array;
		data = TAF.treeGET( TAF.treeKEY( $tree ) + 'Data' ).getTarget();
		data[0] = getTimer();
		data[1] = $tree.getTarget().rotationY;
		bindTree( TAF.treeKEY( $tree ), 'rotator' );
		TAF.bindRender( 'rotator' );
	}
	private function out( $tree:TAFtree ):void{
		unbindTree( TAF.treeKEY( $tree ), 'rotator' );
		TAF.unbindRender( 'rotator' );
	}
	private function rotator( $tree:TAFtree ):void{
		var data:Array;
		data = TAF.treeGET( TAF.treeKEY( $tree ) + 'Data' ).getTarget();
		$tree.getTarget().rotationY = ( getTimer() - data[0] ) / 5 + data[1];
	}
}

컴파일

3D자체야 훌륭한 away가 합니다. TAF가 해주는건 래핑하여 편리하게 사용할 수 있는 것과 render를 통한 CPU관리죠. 이번 와카군도 1700정도의 점과 다양한 uv맵으로 이뤄진 모델링에 골격데이터, 애니메이션 데이터가 모두 포함된 복잡한 dae입니디만 여전히 넷북에서도 돌긴 합니다.
클릭하면 애니메이션이 일어날테고 오버하시면 회전할 것입니다.

결론

이상 2가지 예제를 간단히 만들어봤습니다. 이 밑에 있는 포스트인 런타임 파서를 이용하면 위의 코드에 보이는 플로우 대부분이 외부설정파일로 빠집니다. 특히 TAF는 flow입장에서 this나 전역변수를 거의 모른 상태로 인자로 받아온 tree기반으로 작동하는게 기반이라 더욱 외부로 빼기 좋은 형태입니다.

개발할게 없는 그날까지 ^^

Browser does not supports flash movie


관련된 글:

  1. TAF로 개발된 샘플 #1
  2. TAF로 프로그래밍하기
  3. TAF 다이어그램
  4. 인자객체 표준 사용안
  5. Stream을 만들어보기

2 Comments

  1. 웹눈 says:

    그저 멋지다는 말밖에 !
    책이 주문했는데 15일이 되서야 배송되네요 ㅜㅜ

Leave a Reply