어제 올렸던 대시라인 그리기에서 조금 더 기능을 추가해 봤습니다. 포토샵에서 선택영역을 지정하면 점선이 이동하는 효과가 나오는데, 그걸 적용했습니다. 행진하는 개미 ^^

beginBitmapFill(bitmap:BitmapData, matrix:Matrix=null, repeat:Boolean=true, smooth:Boolean=false):void
위와 같이 Graphics.beginBitmapFill() 메소드에 2번째 파라메터로 매트릭스를 지정하여 사용할 수 있습니다. 그래서 하나의 비트맵데이터를 가지고 매트릭스에 회전을 주어서 사용을 했더니, 비트맵데이터가 외곡되는 문제가 생기네요. 일단 귀찮아서 비트맵데이터 4개를 가지고 그렸는데, 최적화하는 방법은 좀 더 찾아 봐야할 듯 하네요.

click to view the source code

 

이전 포스트와 마찬가지로, 이미지 에디터에서 필요한 기능 구현하면서 만들어 본 샘플입니다. 이번에는 점선 혹은 대쉬선(dashed line)을 그리는 기능입니다.

click to view the source code

 

오랜만에 플래시 관련 포스팅이네요 ^^
최근에 이미지 에디터 비슷한 걸 개발해야 하는데, 거기에 필요한 기능 구현하다가 만들어 본 샘플입니다. 기능은 포토샵의 컬러 피커와 거의 비슷하게 만들었습니다.

 

그동안 만들고 있던 KineticScroll 을 SWC 형식으로 공개합니다.

이전 포스트에서와 마찬가지로, 다음과 같이 간단하게 사용할 수 있습니다.

var ks1:KineticScroll = new KineticScroll();
ks1.setTarget(mc1, 0, 400);

필요에 따라서 KineticScrollEvent.UPDATE 이벤트 리스너를 등록하여, 별도의 동작을 하도록 처리도 가능합니다. 예를 들어 스크롤바와 연결 시켜야 한다던가 하는 경우 말이죠.

var ks2:EndlessKineticScroll = new EndlessKineticScroll();
ks2.addEventListener(KineticScrollEvent.UPDATE, ksListener2);
ks2.setTarget(mc2);
 
function ksListener2(e:KineticScrollEvent):void{
    // 별도 처리 코드
}

샘플 및 소스 다운로드: KineticScroll_Samples

 

플래시와 자바스크립트 사이에 연동을 좀 편하게 하려고 만든 어플. 이전 프로젝트에서 자바스크립트 연동이 많아서, 이를 좀 쉽게 처리하기 위한 유틸이었는데, 이걸 다시 만들어 봤습니다.

자바스크립트에서 플래시로 데이터를 보낼 때는 다음 코드와 같이 플래시 객체에서 sendToFlash() 함수를 호출합니다.

var data = new Object();
data.message = "message from JavaScript";
flashObj.sendToFlash(data);

자바스크립트에서 보낸 데이터를 받기 위해서는 아래와 같이 이벤트를 등록해 줍니다.

JSAgent.addEvent(receiveFromJS);
function receiveFromJS(e:JSAgentEvent):void
{
    trace(e.data.message);
}

반대로, 플래시에서 자바스크립트로 데이터를 보내려면 JSAgent.sendToJS() 함수를 사용합니다.

var data = new Object();
data.message = "message from Flash";
JSAgent.sendToJS(data);

이렇게 보내진 데이터를 받기 위해서 자바스크립트에서는 receiveFromFlash() 함수가 정의되어 있어야 합니다.

function receiveFromFlash(data)
{
    alert(data.message);
}

ExternalInterface를 사용할 때는 호출되는 함수명을 사용자가 지정할 수 있고, 파라메터의 갯수를 유동적으로 처리할 수 있다는 부분이 장점일 수 있지만, 경우에 따라서는 단점이 될 수도 있습니다. 유동적인 파라메터를 …args와 같이 배열로 받아서, 다시 apply() 등의 함수와 엮어줘야 하죠.
그래서 플래시 쪽에서 받는 함수명은 sendToFlash, 플래시에서 호출하는 자바스크립트 함수명은 receiveFromFlash로 고정시켰으며, 또한 파라메터는 하나만 사용하는 대신 Object 객체의 속성에 전달할 데이터를 넣는 구조로 만들었습니다.
사실 사용성 면에서 EI를 개선한 부분은 별로 없습니다. 그냥 EI를 사용하는 편이 나을지도……

샘플 및 소스 다운로드: JSAgent_Samples

© 2011 Hangun's World - Blog Suffusion theme by Sayontan Sinha