Home > BetweenAS3 > BetweenAS3 이벤트 등록하기

BetweenAS3 이벤트 등록하기

BetweenAS3에서도 이벤트를 등록하고 해당 이벤트가 발생하였을 때 함수를 호출할 수 있습니다.
이벤트를 등록해서 해당 이벤트 발생 시 함수를 호출하는 방법에는 두 가지가 있는데,


먼저 “이벤트 리스너 객체를 등록해서 사용하는 방법”입니다.

// tween이 종료될 때 이벤트 발생
var t:ITween = BetweenAS3.to(box, {x:280}, 1.5, Bounce.easeOut);
t.addEventListener(TweenEvent.COMPLETE, hnTweenComplete);
t.play();

private function hnTweenComplete(e:TweenEvent):void
{
    trace("TweenComplete");
}
사용 가능한 이벤트
COMPLETE – tween이 종료되었을 때 이벤트 발생.
PLAY – tween이 시작되었을 때 이벤트 발생.
STOP – tween이 정지되었을 때 이벤트 발생.
UPDATE – tween이 진행되고 있는 동안 이벤트 발생.

아래는 “BetweenAS3의 메서드를 이용하는 방법”입니다.
이 방법의 이점은 변수를 배열의 형태로 전달할 수 있습니다.

// tween이 종료될 때 이벤트 발생(변수전달 가능)
var t:ITween = BetweenAS3.to(box, {x:280}, 1.5, Bounce.easeOut);
t.onComplete = hnTweenComplete;
t.onCompleteParams = ["param1", "param2"];
t.play();

private function hnTweenComplete(_param1:String, _param2:String):void
{
    trace(_param1, _param2);
}
사용 가능한 이벤트
onComplete – tween이 종료되었을 때 이벤트 발생.
onCompleteParams – onComplete 메서드에서 지정한 함수로 넘겨줄 변수.
onPlay – tween이 시작되었을 때 이벤트 발생.
onPlayParams – onPlay 메서드에서 지정한 함수로 넘겨줄 변수.
onStop – tween이 정지되었을 때 이벤트 발생.
onStopParams – onStop 메서드에서 지정한 함수로 넘겨줄 변수.
onUpdate – tween이 진행되고 있는 동안 이벤트 발생.
onUpdateParams – onUpdate 메서드에서 지정한 함수로 넘겨줄 변수.

YangGOON님께서 코멘트로 좋은 정보를 알려주셨기에 내용을 좀 더 추가해 봅니다.

아래는 스테이지를 클릭하면 작은 사각형 박스가 지정한 위치로 트윈되는 무비입니다.
하지만, 스테이지를 연속으로 클릭하면 트윈이 좀 엉성하게 재생되는 것을 볼 수 있습니다.
스테이지를 클릭할 때마다 activeMotion()함수를 호출하기 때문인데요.
YangGOON님께서 알려주신 코드가 이럴 때 유용하게 사용될 것 같네요.

public class BetweenAS3Test extends Sprite {

	private var tween:ITween;
	private var box:Sprite;

	public function BetweenAS3Test():void {
		box = new Sprite();
		box.graphics.beginFill(0x666666, 1);
		box.graphics.drawRect(-10, -10, 20, 20);
		box.graphics.endFill();
		box.x = box.y = 20;
		addChild(box);

		stage.addEventListener(MouseEvent.CLICK, hnClick);
	}

	private function hnClick(e:MouseEvent):void {
		trace("hnClick");
		activeMotion(box, 480, 80, 1);
	}

	private function activeMotion(target:Object, xPos:int, yPos:int, timeValue:Number):void {
		this.tween = BetweenAS3.tween(target, { x:xPos, y:yPos }, { x:20, y:20 }, timeValue, Cubic.easeInOut);
		this.tween.play();
	}
}

위 코드에 YangGOON님께서 알려주신 코드를 추가해 보았습니다.
activeMotion()함수가 호출될 때 지금 트윈이 재생 중인지를 체크 후 재생 중이라면 removeTween()함수를 호출합니다.
이렇게 되면 스테이지를 연속으로 클릭해도 클릭할 때마다 트윈을 처음부터 재생해 줍니다.
조금 응용한다면 트윈이 재생 중일 경우 마우스 이벤트를 막아두는 것도 방법이 되겠네요~~

public class BetweenAS3Test extends Sprite {

	private var tween:ITween;
	private var box:Sprite;

	public function BetweenAS3Test():void {
		box = new Sprite();
		box.graphics.beginFill(0x666666, 1);
		box.graphics.drawRect(-10, -10, 20, 20);
		box.graphics.endFill();
		box.x = box.y = 20;
		addChild(box);

		stage.addEventListener(MouseEvent.CLICK, hnClick);
	}

	private function hnClick(e:MouseEvent):void {
		trace("hnClick");
		activeMotion(box, 480, 80, 1);
	}

	private function activeMotion(target:Object, xPos:int, yPos:int, timeValue:Number):void {
		if (this.tween && this.tween.isPlaying) this.removeTween();

		this.tween = BetweenAS3.tween(target, { x:xPos, y:yPos }, { x:20, y:20 }, timeValue, Cubic.easeInOut);
		this.tween.play();
	}

	private function removeTween():void {
		trace("removeTween");
		this.tween.stop();
		this.tween = null;
	}
}

  • Share/Bookmark

Comments:2

YangGOON 09-10-15 (Thu) 11:15

좋은 정보 감사합니다.
몇가지 추가로 적어 봅니다.
트윈이 끈나기 전에 이벤트가 발생시 연결되는 부분에 관한 이야기 인데요. 물론 아시리라 생각되지만 ^^;

private function activeMotion(target:Object, xPos:int, yPos:int, timeValue:Number):void
{
if (this.tween && this.tween.isPlaying) this.removeTween();

this.tween = BetweenAS3.tween(target,
{
x:xPos,
y:yPos
}, null, timeValue, Cubic.easeInOut);
}

private function removeTween():void
{
this.tween.stop();
this.tween = null;
}

** if (this.tween && this.tween.isPlaying) this.removeTween();
이렇게 사용하면 편하더라구요. ^^

Siaa Reply:

오옷, 이런 방법이… 모르고 있었습니다.
이렇게 누추한 블로그를 찾아주신것도 감사한데… 유용한 정보까지 알려주시다니, 정말 감사드립니다!!!
블로그에 위 내용을 추가했습니다~
그럼, 좋은 하루 되세요^^

야호 09-11-09 (Mon) 15:13

오우 감사합니다!

Siaa Reply:

와우~~^^
찾아주셔서 감사합니다!!!

Comment Form
Remember personal info

Trackbacks:0

Trackback URL for this entry
http://blog.flasia.com/archives/1271/trackback
Listed below are links to weblogs that reference
BetweenAS3 이벤트 등록하기 from blog.flasia.com

Home > BetweenAS3 > BetweenAS3 이벤트 등록하기

Categories
Archives
RSS Feed
Meta

Return to page top