본문 바로가기

Flex

윈도우 흔들기 Flex 버전 - ExternalInterFace 응용편

ExternalInterface가 뭐하는건지 잘 모르는 분은
2009/12/30 - [Flex/ExternalInterface] - ExternalInterface 기본기  이 글을 보고 오면 됩니다.

ExternalInterface 가 자바스크립트의 함수를 실행시키기만 하는것이 아니고.

이전 글에 있듯이.

Externalinterface.call("window.alert('아싸~')");
처럼 자바스크립트 내장객체를 호출하거나 메서드를 실행하는것도 가능합니다.
이걸 이용해서 예전에 유행했던 윈도우 창 흔들기를 간단하게 구현해보도록 하겠습니다.



버튼을 클릭해보세요. 파일을 업로드 했습니다 ㅎㅎ

역시 아쉽게도 글쓰는 곳이 파일 업로드가 안되서 이 블로그를 흔드는것은 시범을 보여드릴수가 없고 어플리케이션 하나 만들어서 아래소스를 붙여넣기 하고 실행해보시면 됩니다.

import mx.controls.Alert;

private var timer:Timer;
private var dir:Boolean = false;
private var offsetX:int;
private var offsetY:int;

private function shakeWindow():void
{
	offsetX = int(Math.random() * 20);
	offsetY = int(Math.random() * 20);
	
	timer = new Timer(30, 10);
	timer.addEventListener(TimerEvent.TIMER, shakeIt);
	timer.addEventListener(TimerEvent.TIMER_COMPLETE, stopShake);
	timer.start();
}

private function shakeIt(e:TimerEvent):void
{
	if(dir)
	{
		offsetX = -offsetX;
		offsetY = -offsetY;
	}
	dir = !dir;
	ExternalInterface.call("window.moveBy("+offsetX+","+offsetY+")");
}

private function stopShake(e:TimerEvent):void
{
	timer.removeEventListener(TimerEvent.TIMER, shakeIt);
	timer.removeEventListener(TimerEvent.TIMER_COMPLETE, stopShake);
}

스크립트 블록은 이렇게 되고 버튼 하나 만들어서 shakeWindow()를 호출해주시면 됩니다.

자바스크립트의 window.moveBy(x,y) 함수는 현재의 윈도우 위치에서 x, y 만큼 윈도우를 이동시켜주는 함수 입니다.

간단하게 offset 값을 정해주고 해당 타이머가 돌아가는동안 윈도우를 움직인다.
이걸로 끝입니다.

간단한 것이 가능하다면 복잡한것도 가능합니다.

브라우저 쿠키를 AS 3.0 만으로 만들고 삭제하고 읽어들이고 할수도 있습니다.
AS3 에는 같은 기능을 하는 SharedObject가 있지만 프로젝트에 따라서 쿠키를 사용해야 하는 경우가 있는데 이런경우 html에 추가 해야 하는 불편 없이 추가 할수 있습니다.

이부분은 이미 잘 만들어진 것이 있기 때문에 따로 구현하지 않고 링크로만 대신합니다.


저 링크에서 보듯이 Externalinterface를 사용해서 뭘 할것이냐는 전적으로 아이디어에 달려있는것 같습니다.
그냥 간단하게 정보 확인용으로만 사용할수도 있고. javascript에서만 가능한것들과 연계해서 뭔가 훨씬 재밌는것들을 찾아낼수도 있지 않을까 싶습니다.