네비게이션을 만들어 보면서 몰랐을때는 정말 이젠 앞으로 노가다좀 해야 겠다는 생각을 가지게 만든 부분이었다.
보통 무비클립영역 아래 버튼을 만들게 되면 기존에는 무비클립에 영향을 받질 않았다 그런데
cs3로 넘어 오면서 이부분이 바뀌게 되었습니다. 아래 swf를 보시면 반투명의 파란 색 무비클립이 보라색의 버튼 부분을 가리고 있습니다. 예전같으면 무시 했을걸 이제는 무비클립이 막아 버립니다.
그래픽 심볼의 경우는 버튼이 무시하고 히트영역이 잡히지만 이제는 무비클립이 버튼보다 위에 있는 경우에는 영역을 벗어 날수가 없습니다.
사실 장단이 있지만 의외로 작업을 할때 신경이 쓰이는 부분입니다.
이럴 경우를 대비해서 아래 속성들이 존재합니다.
대상 무비클립.mouseChildren= false;
대상 무비클립.mouseEnabled = false;
위에 있는 건 대상 무비클립 안에 있는 무비클립이 마우스 이벤트를 감지 하는 옵션을 끄는 부분
아래 있는건 대상 무비클립 자체의 마우스 이벤트를 감지를 끄는옵션 입니다.
이 코드를 두개다 넣어 줘야 하겠더군요
'Flash/script'에 해당되는 글 45건
- [2008/04/01] cs 3.0 네비게이션 만들기
- [2007/05/17] 플래쉬cs 레퍼런스 (1)
- [2007/05/16] flash cs 추가된 타임 관련 함수 (2)
- [2007/05/14] 플래쉬 cs attachMovie는 어떻게 바뀌었나? (2)
- [2007/05/11] 플래쉬 cs의 스테이지 속성
- [2007/05/09] cs 댑스 관리및 for in 구문 (3)
- [2007/04/26] flash cs 이벤트 방식 (1)
- [2007/04/24] 플래쉬cs3 의 트윈사용
- [2007/04/18] 트윈을 이용하는 필터 적용
- [2007/03/24] tween 딜레이 함수
Adobe Flash samples
You can download samples of ActionScript 2.0, ActionScript 3.0 and Flash Lite.
Flash resources
You can learn from livedocs or download PDFs.
thanks to jhb0b
일본어로 올라온 레퍼런스를 어떤분이 정리하셨는지는 모르겠지만 네이버의 번역기로 번역한것을 링크해 놓은 곳입니다. 번역이 완벽하지 않지만 그래도 볼만은 합니다.
http://m2c.iptime.org/as3.0/as3.0_Reference.html
cs로 바뀌면서 정말 많은 함수들이 추가가 됐을건데 제가 본것중에서 그래도 기억이 남는 함수를 소개해 드리겠습니다.
아마 setInterval의 대체로 된다는 애기가 있었는데 이번 버전엔 살이 있는듯 하구요
setTimeOut이라는 함수가 타임관련해서 메소드가 추가 되었습니다.
이함수는 사용자가 자신이 원하는 시간이 지난후에 함수를 실행 해주는 함수인데요 기존에 비슷하 기능이 setInterval인데 이건 불안정하기 때문에 사용하지 않고 거의 대부분의 사람들이 직접 자신이 정의한 함수를 썻는데 이걸 이번 버전엔 추가 해준것 같습니다.
사용 법은 머 간단합니다...
ex1)
function testFunc ()
{
trace ("str1 : ",arguments[0],"str2",arguments[1]);
}
setTimeout (testFunc,2000,"장난이냐?","테스트 입니다.");
이런식으로 함수를 사용하는데 기본적으로 파라미터는 2개를 가집니다.
첫번째는 함수 두번째는 ,밀리초 단위의 타임 그 이후에 들어가는건 사용자 임의로 함수에 넘겨줄 파라미터들입니다.
setInterval의 방식처럼 아이디 값을 주고 사용도 가능하고 아이디를 지우는 것도 가능합니다.
ex2)
var inter = setTimeout (testFunc,1,"머야","외요?");
clearTimeout (inter);
이런식으로 지우는것도 가능합니다.
이번 cs에서는 attahcMovie가 사라졌습니다.
음....사라졌다 하니까 그럼 어떻게 만들까 생각 하실수도 있지만 attahcMovie란거만 사라지고 새롭게 바뀌었다고 보면 될거에요...ㅎㅎ
일단 어떤식으로 구현되나 보도록 하겠습니다... 보시면 너무 간단해서...ㅎㅎ;;
#1

#2

여기도 똑같습니다. 대신 attachMovie에서 쓰던 식별자 대신 클래스가 활성화 되는데 클래스에다가 자신이 원하는 이름을 줍니다. 베이스 클래스는 건드리실 필요 없습니다. 머 건들여도 에러가 나죠...ㅎㅎ
여기까진 똑같습니다.
#3

이런 방법으로 사운드도 라이브러리에 있는 사운드를 가져올수 있더군요...
저는 attchSound가 사라져서 로드만 되는줄 알았는데 그게 아니더군요....ㅎㅎ;;;;
그냥 간단하게 클래스를 자동으로 만들어주는것 같습니다.
머 방식이 바뀌어서 그렇지 기존보다 쉬워진듯한 느낌입니다.^^
플래쉬로 마이크로 사이트나 플래쉬의 사이즈 속성을 제어하는 작업을 하다보면 스테이지 속성을 제어하는 경우가 있습니다. 스테이지가 커지 확대되는것을 막는것이나 스테이지의 정렬을 제어하는 경우죠.... 이게 어떻게 바뀌었는지 한번 알아보도록 하겠습니다. 제경우에 가장 많이 사용할 코드만 적도록 하겠습니다.
import flash.events.Event;
import flash.display.Stage;
import flash.display.StageScaleMode;
import flash.display.StageAlign;
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.showDefaultContextMenu=false;
stage.addEventListener (Event.RESIZE,resizeFunc);
function resizeFunc (e)
{
trace (stage.stageWidth);
}
//
//
일단 녹색의 새줄이 가장 많이 쓰일겁니다.
그리고 임포트는 안해도 되지만 하죠 일단은(이상하게 마우스 이벤트나 기타 다른 것들도 임포트를 안해줘도 에러가 안나는 경우가 있죠..-_-;;;; 나게 하려면 전부 그렇게 하든지)
스케일 모드는 크기를 키우지 안도록 막는 것이고 두버째는 정렬입니다. 정렬에 해당하는건 이외에도 많이 있습니다.
ex) 스테이지의 정렬
StageAlign.TOPTop Center StageAlign.BOTTOMBottom Center StageAlign.LEFTCenter Left StageAlign.RIGHTCenter Right StageAlign.TOP_LEFTTop Left StageAlign.TOP_RIGHTTop Right StageAlign.BOTTOM_LEFTBottom Left StageAlign.BOTTOM_RIGHTBottom Right
이 속성들이 스테이지의 정렬을 결정합니다.
그리고 스테이지 속성의 변함을 체크 하는 부분은 다른 이벤트를 등록해서 사용하는것과 동일합니다.
음.. 예전에 댑스메니저를 사용해 보질 않아서 새로 생겨난 child시리즈가 댑스메니저와 사용법이 비슷하지는 모르겠구요 아무튼 확~ 바뀌었습니다... depths를 쓰면 그냥 에러가 나주십니다...ㅎㅎ;;;
일단 지금의 cs는 댑스라는 문구를 사용하지는 않지만 일단 댑스라 부르겠습니다.
기존에 사용하던 loadMovie,attachMovie와는 다른데요... addChild()로 등록하고자 하는 오브젝트를 등록하면 등록한 오브젝트가 나타나고 자동으로 댑스가 증가해 줍니다...ㅠ..ㅠ 물론 지정도 가능합니다...지정해서 넣는 경우엔 addChildAt()입니다.
그런데 애전에는 댑스가 동일한게 두개면 사라져 버리거나 스테이지에서 무비클립은 보이는데 이게 제어가 안되고 막 그랬죠...^^;;;
이문제를 해결한듯 한데... 원천적으로 같은 댑스를 갖게 하는거 자체를 막아버린거 같습니다.
또한 1~5까지 무비클립을 만들어서 무비클립의 댑스가 5까지 만들어 졌는데 중간에 무비클립을 제거 하면 한간에 빠진것부터 채워서 댑스가 4까지 가게 됩니다.. 아직까지는 테스트를 많이 안해봤지만 제가 확인해본봐로는 채워지는듯 합니다.함수명이 아애 바뀌어서 생소하기도 하지만 머...편해졌다고 생각하죠...^^;;
아마 이 개념은 플래쉬를 하려면 계속 부딪히게 될건데 익숙해 져야죠...머..-0-;;;
일단 제 생각에 가장 자주 사용하지 않을까 하는 메소드를 정리해 봤습니다.
//타겟.getChildAt(0) 타겟이 되는 무비클립의 파라미터값에 따라 파라미터 값의 댑스에 해당하는 무비클립을 리턴시킵니다.
//타겟.getChildIndex(알고자 하는 무비클립)
//타겟.numChildren 타겟이 되는 클립의 가장 마지막 넘버를 알려준다.
//타겟.swapChildren(바꾸고자 하는 무비클립1,바꾸고자 하는 무비클립2)
//타겟.swapChildrenAt(바꾸고자 하는 무비클립 넘버1,바꾸고자 하는 무비클립넘버2)
//타겟.setChildIndex(바꾸고자 하는 무비클립,바꿀 넘버)
//
이것도 다 헬프에서 검색하면 나오지만...ㅎㅎ;;;;
그리고 또한가지 예전에 for in 구문을 이용해서 무비클립이 가진 속성을 알아볼수 있었죠 그런데.... 이게 사라졌습니다....ㅎㅎ;;;;;; 자주는 아니더라도 가끔 사용했는데 이제 어케 알아내지 생각했지만 다른 방식으로 for in을 이런식으로 구현 가능합니다..
//
//numChildren로 타겟이 되는 무비클립이 가진속성의 갯수를 알아내서 for문으로 돌리는 겁니다.
//타겟.getChildAt(i)이 메소드는 위에 나온것 처럼 타겟의 몇번째 속성에 어떤 녀석이 있는지 알아냅니다.
//
for (var i=0; i<타겟.numChildren; i++)
{
trace (타겟.getChildAt(i).name);
}
사실 제가 말 주변이 없어서 더 이상 자세히 설명은 불가능 하지만 한번씩 사용해보신다면 이해가 가실겁니다..ㅎㅎㅎ
이번 flash cs3는 워낙에 이것 저것 바뀐게 마나서 ^^;;;
바뀐게 어떤거라고 말하기가 힘들기는 합니다.
http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/index.html?fl/motion/Color.html&fl/motion/class-list.html
이 링크가 걸린 곳으로 가 보시면 플래쉬 as2.0에서 3.0으로 가면서 바뀐내용에 대한 이야기들이 정리가 되어있습니다. 없어지거나 바뀐 부분에 대한 정리 입니다.
그중에서도 이벤트 방식의 변화는
기존에 온클릭 이벤트를 중심으로 하는 5.0에서 6.0으로 가면서 콜백함수의 개념이 적용되었습니다.
그때 정도의 변화와 같다고 생각하면 될것 같습니다. 기존에 온클릭 이벤트에 익숙해져 있던 유저들은 꾀나 바꾸기 힘들었지만 일단 바꾸고 난 뒤에는 모두 편하게 사용했던지라 이번에도 그정도의 파급효과가 있을거 같습니다.
아무래도 저의 짧은 생각으로는 무비클립을 중심으로 하는 플래쉬에서 무비클립 자체의 많은 기능이 오히려 플래쉬 무비자체를 무겁게 만드는 원인이라 기본적으로 무비클립이라면 가지고 있던 이벤트에 관한 기능이나 기타 여러 기능들을 다 떼어 내고( 무비클립의 기능 약화) 그때 그때 상황에 맞추어서 이벤트를 등록을 하게 되었습니다.
처음 접하게 되면 이게 무척이나 혼란 스럽지만 차차 적응되니 괜찮아 지는군요 이로서 디자이너나 모션 그래퍼들도 어디에 어떤게 있다정도는 알수있게 공부를 하던지....스크립터가 짜준걸 토대로 작업이 진행되야 할듯 하기는 합니다.
그래서 당분간의 플래쉬 cs의 사용이 많지는 않겠지만 차차 나아지겠죠..
//
//
일단 이번엔 마우스 이벤트와 링크 거는 방식의 차이점을 한번 보도록 하죠...
more..
이렇게 바뀐게 한두가지가 아니라.... 이벤트의 등록과 사용에 대해서 이해를 가진다면 기존에 쓰던것과 비슷하 느낌으로 사용이 가능하긴 할것 같지만 이 익숙해지는 과정 자체가 쉽지 않은 문제인듯 합니다.
물론 아직 회사에서 구매를 하지 않은 관계로 트라이얼로 깔아서 사용을 하고 있습니다.
지금까지는 플래쉬에서 스크립트를 2.0에서는 어느정도는 1.0에서 사용하던 스크립트가 가능했지만 이젠 아애 시작 화면에서 부터 어떤걸 사용할지 고르게 되어 있습니다.
3.0은 일단 on클립 이벤트는 아에 지원을 안하고 코드를 짤수 있는 곳은 as파일과 프레임 창에서만 코딩이 가능 합니다.
기존에 mx에서 사용하던 트윈도 이제는 fl이라는 패키지로 따로 묶여져 있더군요....
그래서 mx의 트윈 패키지가 그대로 존재 하는지 알고 찾다가 헤매다가 헬프에서 카데고리가 있더군요......;;;
그래서 헬프에서의 카테고리를 3.0으로 지정하고 다시 찾아 봤더니.....검색이 되더군요...;;;
이번 버전의 헬프는 외이리 어려운지 기존의 헬프는 거의 모든 구문들이 예제가 있는데 3.0의 예제는 너무 적어서 이해하기가 좀 난감한 부분이 많더군요...;;;;;;;
아무튼 트윈의 사용법을 한번 보도록 하죠.
more..
//
보시면 트위의 사용법은 거의 비슷합니다..
다른 점이라면 역시나 예전에 사용하던 콜백들은 더이상 통용이 되질 않습니다.
이벤트를 등록해야 지만 가능합니다...음
처음에는 너무 불편하다고 생각했지만 알파때 부터 사용해 왔던지라 이제는 익숙해 지더군요.....ㅎㅎㅎ
아무튼 위의 코드는 img1_mc라는 무비클립을 x축 으로 300까지 10프레임동안에 이동을 합니다.
그리고 사용한 트윈에 이벤트 리스너를 등록해서 이벤트를 받아 냅니다.
이틀동안 사용해보고 테스트 해본결과 정말 속도나 포퍼먼스는 좋아졌다란 생각이 듭니다.
다만 인터페이스가 -_-;;; 외 알파를 먹으면서 이동을 하는지....
벌써 한 2년은 족히 지난거 같은데 이제 곧 출시가 임박해 있죠 9.0이 아무튼 나올 당시에는 스크립트나 모션으로도 플래쉬 자체적으로 블러를 줄수있다는것 자체도 좋고 했지만....사용을 자제 하게 되었습니다.
부하가 너무 심한 관계로 요즘은 컴 사양이 좋아져서 그런지 블러나 기타 비트맵에 대한 활용을 에이젼시들에서도 많이 사용 하더군요
아무튼 저도 예전에 사용 안하던 비트맵을 가끔 쓰는데 아무래도 9.0에 가서는 주로 사용하지 않을까 십네요 비트맵에 대한 클래스들이 제일 많이 쓰일것 같습니다.
//
이번에 올리는 함수는 블러 필터를 트윈에 적용한 경우 입니다 다른 필터도 적용은 가능하겠지만 제가 가장 많이 사용하는게 블러라 블러 필터를 적용하게 되었습니다.
//
more..
머 사실 특변한건 없고
import flash.filters.BlurFilter;
var blur:BlurFilter = new BlurFilter (targetMc.blurX, targetMc.blurY, qualityN);
e.obj.filters = [blur];
//
//
이렇게 3라인이 가장 중요합니다.
가끔 스크립트로 블러를 쓰실일이 있다면 한번 사용해보세요..^^
물론 사실 딜레이 함수쯤은 가지고 계신분들이 많이 계실 겁니다. 저도 물론 가지고 있긴 합니다...^^;;
하지만 트윈 클래스를 이용 하면 좀더 간결하게 코드를 만들어 보려고 딜레이 함수를 다시 만들어 봤습니다.
more..
blur.zip

::: 사람과 사람의 교감! 人터넷의 첫 시작! 댓글을 달아주세요! :::