XPLATFORM 101

- Object Reference > Animation


Composite Animation 은 단어그대로 1개 이상의 애니메이션 효과가 동시에 이루어지는 것입니다.

하나의 Composite Animation에는 앞에서 설명한 Property Animation 이나 Transition Animation 이 포함될 수 있습니다.



화면에 보이는 것처럼 아이템을 추가하려 하면 2개의 애니메이션 타입 중 하나를 선택하게 됩니다.

여기서 하나를 선택하면 아이템이 추가되고 추가된 아이템의 속성을 지정할 수 있습니다.


그렇지 않고 동적으로 추가하는 경우에는 사전에 정의한 애니메이션 아이템을 아래와 같이 추가할 수 있습니다.

CA.addItem(PA);

CA.addItem(PA1);

CA.duration = 1000;

CA.run();

이렇게 지정된 애니메이션은 병렬로 처리되어 동작됩니다.


마지막으로 MoveAnimation 은 해당 애니메이션이 적용된 컴포넌트의 좌표값이 변경될때 동작됩니다.

컴포넌트의 moveeffect 의 영향을 받아 처리되어집니다.

Property Animation 에서 Move 부분만 따로 처리되는 형식이네요.


* 메인프레임이나 하위프레임, 폼 단위로 애니메이션을 처리할 수 있습니다.

* 커스터마이징된 interpolation을 구현하는 경우에는 InterpolationInfo의 속성을 정의해 사용할 수 있습니다.

duration, progresstime, progressvalue 를 설정해서 정의해줍니다.

function MyInterPolation_BounceOut(II)

{

var t = II.progresstime;

var d = II.duration;

var result;

t/=d;

if ((t) < (1/2.75)) {

       result = (7.5625*t*t);

 } else if (t < (2/2.75)) {

   result = (7.5625*(t-=(1.5/2.75))*t + .75);

 } else if (t < (2.5/2.75)) {

   result = (7.5625*(t-=(2.25/2.75))*t + .9375);

 } else {

   result = (7.5625*(t-=(2.625/2.75))*t + .984375);

 }

II.progressvalue = result;

}

http://cafe.naver.com/xplatform101/224


XPLATFORM 101

- Object Reference > Animation


TransitionAnimation은 데이터를 돋보이게 만들기 위해 많이 사용되는 방식입니다.

약간의 작업만으로 3D 처럼 보이도록 만들 수도 있고 데이터의 변화를 확실하게 알 수 있게 합니다.


먼저 지정가능한 속성은 다음과 같습니다.



기본 속성(Common Properties)는 모든 애니메이션이 동일합니다.

그리고 아래쪽에 각 애니메이션별 속성을 정의하도록 되어 있습니다.

엑스플랫폼에서 제공되는 Type 은 다음과 같은 5가지입니다.


cube3d, fade, wipe, slide, flip3d


대략적인 효과는 다음과 같습니다.



* 그림으로만 설명하려니 애매하네요. ^^


테스트한 코드는 다음과 같습니다. 참고로만 보세요.

<?xml version="1.0" encoding="utf-8"?>

<FDL version="1.2">

  <TypeDefinition url="..\..\default_typedef.xml"/>

  <Form id="test" classname="test" inheritanceid="" position="absolute 0 0 1024 768" titletext="New Form">

    <Layout>

      <Button id="Button00" taborder="0" text="cube3d" position="absolute 72 56 214 132"/>

      <Button id="Button01" taborder="1" text="slide" position="absolute 72 176 214 252"/>

      <Button id="Button02" taborder="2" text="wipe" position="absolute 424 56 566 132"/>

      <Button id="Button03" taborder="3" text="flip3d" position="absolute 248 176 390 252"/>

      <Button id="Button04" taborder="4" text="fade" position="absolute 248 56 390 132"/>

      <Button id="Button05" taborder="5" text="START" position="absolute 72 296 157 329" onclick="Button05_onclick"/>

    </Layout>

    <Objects>

      <TransitionAnimation id="TransitionAnimation00" direction="left" duration="1000" starttime="0" interpolation="Interpolation.circIn">

        <TransitionPropItems id="items"/>

      </TransitionAnimation>

    </Objects>

  </Form>

</FDL>

function Button05_onclick(obj:Button,  e:ClickEventInfo)
{
anitype(Button00);
anitype(Button01);
anitype(Button02);
anitype(Button03);
anitype(Button04);
}

function anitype(obj:Button)
{
TransitionAnimation00.targetcomp = obj;
TransitionAnimation00.type = obj.text;
if(obj.text=='fade' || obj.text=='wipe')
{
if(!obj.visible) obj.visible = true;
TransitionAnimation00.beginTransition();
obj.visible = false;
TransitionAnimation00.endTransition();
}
else
{
TransitionAnimation00.beginTransition();
TransitionAnimation00.endTransition();
}
TransitionAnimation00.run();
}

TransitionPropItem 을 정의해서 트랜지션의 상태를 지정할 수 있습니다.
해당 속성은 endTransition 메소드 앞에 설정하는 것과 동일한 효과를 발휘합니다.
동적으로 처리할 수 있다는 차이가 있겠죠.
var TI = new TransitionPropItem;
TI.propid = "style.background.color";
TI.propval = "#ff0000ff";
TA.addItem(TI);
TA.run();
http://cafe.naver.com/xplatform101/223
XPLATFORM 101

- Object Reference > Animation


드디어 미루고 미루었던 애니메이션이 나오네요. ㅠㅠ

애니메이션은 그 자체가 중요한 것이 아니라 정보와 데이터를 적절하게 보여질 수 있게 사용하는 것이 중요합니다.

많은 경우 개발자가 임의로 집어넣는데 그럴 경우에는 중구난방 어지러운 애플리케이션이 만들어집니다.

가능하면 인터랙션 디자이너가 참여하면 좋고

그렇지 못하더라도 공통적인 가이드를 가지고 적용해야 합니다.


애니메이션은 크게 다음과 같이 구분됩니다.

PropertyAnimation

- 속성 값을 직접 변경하는 애니메이션으로 해당 속성은 시각과 끝 값을 가져야 하며 중간값을 구할 수 있는 scalar 값을 가져야 합니다.

* scalar 값은 방향 구별 없이 하나의 수치로 완전하게 표현되는 값이라고 합니다.

- 그래서 텍스트나 boolean 값은 처리할 수 없습니다.

TransitionAnimation

- 우리말로 표현하면 '전이'라고 표현할 수 있는데 변경전과 변경후의 이미지가 어떻게 변하는지 보여주는 형식입니다.

MoveAnimation

- 말 그대로 좌표값이 변경되는 애니메이션입니다.

- 컴포넌트의 move 메소드에 효과를 적용하는 애니메이션입니다.

CompositeAnimation

- TransitionAnimation 와 PropertyAnimation 을 여러개 등록해서 동시에 동작시킬 수 있습니다.


말로는 잘 설명이 안되기 때문에...

일단 예제를 보도록 하겠습니다.


애니메이션을 처리하기 위해서는 먼저 해당 오브젝트를 설정해주어야 합니다.

UX 스튜디오에서 dataset과 마찬가지로 invisible objects 영역에 가져다 놓아주면 됩니다.



아무것도 지정하지 않은 상태라면 아래 코드와 같이 속성이 지정될 겁니다.

<PropertyAnimation id="PropertyAnimation00" endingmode="to" repeat="1" repeattype="normal" duration="0" starttime="0"/>


이 상태에서는 어떤 것을 애니메이션 처리할지 결정되어있지 않습니다.

이제 대상을 정해야 겠죠.


애니메이션의 속성은 2가지 형태로 UX 스튜디오에서 확인할 수 있습니다.

먼저 기본적인 속성 패널에서 확인하는 형태입니다.




해당하는 속성과 이벤트를 정의할 수 있습니다.

애니메이션을 어떻게 처리할지 사전에 정의되어 있는 경우에는 일반 속성 패널로도

가능합니다.

하지만 좀 더 세밀한 작업을 처리하고자 한다면 다음과 같이 처리할 수 있습니다.


Invisible Objects 영역에서 해당 애니메이션 객체를 더블클릭하면

애니메이션 에디터 패널로 이동합니다.



일반 속성 패널과 내용이 다른 것은 아니지만 몇가지 추가적인 기능을 제공합니다.

먼저 상단에 있는 Preview 버튼을 선택하면 디자인 영역에 있는 대상 객체가 어떻게 보여질지 바로 확인할 수 있습니다.

따로 애플리케이션을 실행시키지 않더라도 애니메이션의 동작을 확인할 수 있는 겁니다.


그리고 Interpolation 을 선택하면 하단의 Interpolation Graph 에서 동작을 확인할 수 있습니다.



Interpolation 은 보간법이라고 하며 몇개의 점에 주어진 함수값을 기초로 그 점들 사이의 함수값을 구하는 근사 계산법을 이야기한다고 합니다. 이를 기반으로 애니메이션의 가속을 어떻게 처리할지 판단하는 겁니다.


Interpolation Graph 에서 애니메이션을 확인하고 Preview 에서 실제 어떻게 동작하는지 확인하는거죠.

Interpolation 객체에 사전에 정의된 함수를 제공하고 있으며

필요에 따라 사용자가 직접 정의해서 사용할 수도 있습니다.


이렇게 지정된 애니메이션은 저절로 실행되는 건 아니고 run() 메소드를 실행시켜주어야 합니다.

run 메소드를 실행하면서 타겟을 지정할 수도 있습니다.


애니메이션을 지정하는 또 다른 방법은 해당 객체에 직접 스타일로 지정하는 겁니다.

예를 들어 아래와 같은 코드를 사용할 수 있습니다.

<Button id="Button18" taborder="34" text="Button18" position="absolute 528 121 663 154" style="mouseentereffect:PropertyAnimation00;"/>


마우스가 해당 객체영역에 들어가게 되면 지정된 애니메이션이 실행되는 겁니다.

UX 스튜디오에서 지정할때는 아래와 같이 애니메이션 속성을 드래그앤드롭해서


원하는 스타일 속성을 선택하고 지정할 수 있습니다.



1회성으로 사용되는 경우에는 애니메이션 객체를 지정하지 않고

코드상에서 애니메이션 속성을 정의할 수도 있습니다.


* 내용이 너무 길어지니 다음 편에 다시..

http://cafe.naver.com/xplatform101/222