세이박스

'디자인'에 해당되는 글 24건

  1. 앱 디자인 2기 스터디 회원 모집 안내
  2. WARNING: Actions on button or MovieClip instances are not supported in ActionScript 3.0. All scripts on object instances will be ignored.
  3. Adobe Air ... 를 써보자..
  4. 구글 차트 API
  5. Adobe Air 불친절한 강좌 - 1
  6. [포토샵] 사진을 스케치 효과 내기
  7. Adobe Illust 10.0 환경설정 초기화 하기
  8. DIV 레이어랑 본문의 플래시가 겹칠때 본문의 플래시를 더 위로 올리는 방법
  9. DVD 백업 프로그램 shrink 사용방법
  10. dvd 추출 프로그램 shrink 설치 과정
  11. 플래시 차트 (그래프)
  12. flash player 버젼업되면서 getURL안되는 문제
  13. [플래시] loadmovie 로 swf 파일 부를때 위치 지정하기
  14. Fla에서 외부 Flv 파일 재생하기
  15. 플래시 비디오파일 스트리밍 스킨, 크기 조작법
  16. [플래시] Adobe Flash Player 9 - 구버전삭제 후 설치
  17. 플래시 loadmovie 에 관해서
  18. getURL() 를 써서 swf에서 새창 띄우는 방법
  19. 이미지 로드하기(MovieClipLoader 이용)
  20. 장면(Scene)이 두개 이상인경우 gotoAndPlay(), gotoAn..
  21. 플래시 FullScreen(풀스크린) - AS3.0, AS2.0
  22. 플래시 MovieClipLoader
  23. 플래시 - loadMovie 최적화 - #1
  24. SilverLight 개발 환경 구축

앱 디자인 2기 스터디 회원 모집 안내

디자인
안녕하세요!
오랜만에 앱디자인 2기 모집을 진행 합니다.
앱디자인 모임이란?
앱 개발 프로젝트중 디자인 비중이 높아 지면서 최근에는 기획,개발,디자인 등으로 분야가 세분화 되고 있습니다.
그렇다고 앱디자이너라는 명칭도 생겨난지 얼마 되지 않았기에 해당 분야에 종사하는 분들이 자주 하는 말이 다른분들은 어떻게 디자인 하고 있는지 등에 대한 정보 공유를 필요로 하는 분들이 많더군요.
그래서, 앱디자인이라는 모임을 개설하게 되었습니다.
1기는 기존 개발자 분들이 디자인 까지 병행하고자 참석하셔서 툴을 배우실려고 하셨는데, 저희 스터디에서는 툴 다루는 것은 가르쳐 드리지 않습니다.
툴(포토샵, 일러스터)은 학원 등에서 더욱더 잘 가르쳐 주고 있지요.
최근 앱센터에서 무료 교육으로도 디자인 교육 하고 있구요. (현재 진행중)
따라서, 이번 2기는 앱디자인을 하고 계신분 위주로 모집을 하겠습니다.
모집내용 : 앱디자인 스터디 2기 모임 (지역 제한 없음)
모집기간 : 2012년6월13일 ~ 2012년6월20일 (모집 기간 이후에라도 수시 참여 가능)
참가자격 : 앱디자이너
신청방법 : 아래 게시판(URL) 접속하셔서 코멘트에 다음 내용을 작성해 주세요. 작성 내용은 지역, 소속회사(없으면 생략), 다룰줄 아는 툴, 간단한 자기소개 정도 남겨 주시면 됩니다.
모임방법 : 전국에 모든 디자이너 회원들이 스터디 게시판 "앱디자인 > 앱디자인2기" 게시판을 통해서 정보 교류를 합니다. 지역별로 2인 이상이면 1주일이나 2주 중 하루 정도 정기모임을 가집니다. 커피숍 등에서 만나서 자유롭게 토론하는 모임으로써 동호회 성격을 띄고 진행합니다.
- 지역별 오프라인 모임은 각 지역 그룹장이 대표해서 모임 일정 공지후 모임 참가 신청후 모임을 가집니다.
- 따라서, 부산 지역 이외의 분들도 온라인, 오프라인 모두 참여 가능합니다.
참가 신청 예시(코멘트) :
지역 : 부산
회사 : 앱툴즈
툴 : 포토샵, 일러스트
소개 : 2년정도 웹 디자인 하다가 최근 앱 디자인하고 있으며, 지금까지 2개정도 앱 디자인 했습니다.

 

WARNING: Actions on button or MovieClip instances are not supported in ActionScript 3.0. All scripts on object instances will be ignored.

디자인
플래시 CS5 에서 FLV 동영상 작업을 동작시 이상없이 잘되었으나 버튼 기능을 추가 한 뒤 부터 아래와 같은 오류가 발생하더군요.

WARNING: Actions on button or MovieClip instances are not supported in Actionscript 3.0. All scripts on object instances will be ignored.

원인은 버튼 함수 버전 문제 이더군요.
flv 동영상 플레이어는 Action script 3.0에서만 동작해서 3.0으로 제작했는데 문제는 버튼 action script가 3.0에서는 동작하지 않다는 것입니다.

그래서 버튼 영역을 별도의 플래시로 분리해서 FLV 동영상 플래시는 Actionscript3.0으로 제작하고 버튼 플래시는 Actionscript 2.0으로 제작해서 해결 하였습니다.


 ▶ 최신영화, 최신 미국드라마 무료 다운로드... 

Adobe Air ... 를 써보자..

디자인

   평소 Adobe사의 기술인 Flex 라던가 Air 에 관해서 솔직히 별반 관심이 없었던 것은 사실이다. 그렇지만 Air 란 놈은 상당한 물건인것 같다.


  우선 Air를 이용하여 개발할 경우 Client 프로그램으로 웹 페이지를 내려 앉힐수 있다. 물론 DB연결 및 네트워크 통신은 모두 자바 스크립트에서 지원 해주고 있으며 총 3가지의 방법을 제시 한다.


   1. Flash 를 이용한 Air

   2. Flex 를 이용한 Air

   3. JavaScript(Ajax)를 이용한 Air


   총 위의 3가지 방법을 이용하여 개발 할수 있으며 메인 페이지의 구성은 Flash 나 Flex는 자체에서 제공하는 swf 상에서 구성 하여도 되고 Ajax를 이용한 경우에는 html 로 구성시킬수 있다.


  특히 좋은 점은 eclipse 변형 개발툴인 Aptana studio를 이용할 경우 편리하게 샘플 코드 등을 볼수 있으며 상당히 편리하고 쉽게 개발 할수 있는 환경을 만들어 준다.


사용자 삽입 이미지


  현재 무료로 다운 받을수 있으니깐 한번씩 다운로드 받아서 써보는것도 좋은것 같다..


    첨부된 air 파일은 내가 간단하게 만든 텍스트 에디터 이다.. ^_^ 아무래도 메뉴만 Air 껄로 써볼려다가 모두 Ajax 기반인 jQuery를 이용하였다..


   정말 매력적이지 않을수 없다.. 단순하게 웹 프로그래밍을 한 후에 이를 어플리케이션 형태로 배포가 가능하다는 것은 최고인것 같다..


  앞으로는 점점 웹과 CS사이의 경계가 무너지지 않을까 한다.

구글 차트 API

디자인
 
구글에서 차트 API가 나왔습니다. 언제 나왔는지는 잘 모르겠지만 -_-;
새벽에 심심해서 open api들을 뒤지다가 이게 있다는걸 알게 됐습니다;;

근대 이 구글 차트 API 정말 물건이군요;; 아주 깔끔하게 차트를 그려 줍니다.


이게 Chart API로 방금 그린 Hello World chart 입니다. 정말 깔끔하지 않나요 -.,-;;

이 Chart를 그리는 방식은 다음과 같습니다.

http://chart.apis.google.com/chart?<parameter 1>&<parameter 2>&<parameter n>

즉 GET 방식으로 파라메터들을 묶어서 날리면 알맞은 이미지가 날아오는 것입니다.

위의 헬로우 월드를 그린 URL은 다음과 같습니다.

http://chart.apis.google.com/chart?cht=p3&chd=s:hW&chs=250x100&chl=Hello|World
여기서 각 파트를 나눠서 설명 해보면 다음과 같습니다.
  • http://char.apis.google.com/chart? 는 구글 chart api의 주소이고.
  • &로 각 파라메터를 나눕니다.
  • chs=250x100은 chart의 크기를 픽셀단위로 나타냅니다. width x height  입니다.
  • chd=s:hW 는 차트의 데이터 입니다. 따로 설명 하겠지만 google chart api에서 데이터를 나타내는 방식에는 Simple, Text, Extended 3가지가 있습니다. 그 중 Simple 방식으로 쓴 데이터 입니다.
  • cht=p3 는 차트를 그리는 방식으로 여기서는 삼차원 파이 차트 입니다.
  • chl=Hello|World 는 차트의 데이터에 각 각 라벨을 입히는 구문 입니다. 테스트 해본 결과 아직 한글을 라벨링 할 수는 없어 보이더군요 -.,-.
이렇게 만들어진 URL을 <img> 태그의 src 속성에 그냥 넣어주면 깔끔하게 차트 이미지가 표시 됩니다 -.,-

위에서 나온 것처럼 차트에 데이터를 넣는 방식에는 Simple encoding, Text encoding, Extended encoding 의 3가지 방식이 있습니다.
각각의 방식은 chd=s: 에서 굵게 표시된 s의 자리에 각 s,t,e 의 문자로 표시 됩니다.

Simple encoding 은 알파벳과 숫자를 순서 대로 쓰는 것으로
A(0), B(1), C(2) ... Z(25), a(26), b(27), c(28) ... z(51), 0(52), 1(53), 2(54) ... 9(61)
이렇게 대문자 A부터 숫자 9까지 61단계로 데이터를 표시 할 수 있으며, 각 데이터는 콤마(,)로 나누어 집니다. 또한 빈 데이터는 언더바(_) 로 나타냅니다.

Text encoding은 0.0부터 100.0 까지 소숫점이 있는 숫자 1000단계로 데이터를 나타낼 수 있으며, 각 데이터는 콤마(,)로 나눠지며 데이터의 묶음이 한묶음 이상일 경우 파이프(|)로 나눠지고 빈 데이터는 음수 1(-1) 로 표시 됩니다.
chd=t:10.0,-1,95.0|30.0,8.0,63.0
예를 들어 위처럼  표시 됩니다.
 
Extended encoding은 Simple encoding의 한자리를 두자리로 확장 한것입니다.
A(0), B(1), ... Z(25), a(26), b(27), ... z(51), 0(52), 1(53), 2(54) ... 9(61), -(62), .(63)
한 자리에는 Simple encoding 의 문자에 하이픈(-)과 포인트(.)를 추가 하여 2단계 더 많은 64단계를 한 자리에 쓰게 됩니다. 여기에 2자리 이므로
64 * 64 로 4096 단계 까지 한 데이터에 쓸 수 있습니다. 각 데이터는 Simple과 마찬가지로 콤마(,)로 나뉘며, 언더바 두개(__)로 빈 값을 나타냅니다.
AA = 0, AZ = 25, Aa = 26, Az = 51, A0 = 52, A9 = 61, A- = 62, A. = 63
BA = 64, BZ = 89, Ba = 90, Bz = 115, B0 = 116, B9 = 125, B- = 126, B. = 127
.A = 4032, .Z = 4057, .a = 4058, .z = 4083, .0 = 4084, .9 = 4093, .- = 4094, .. = 4095.
위처럼 쓰게 됩니다.

차트의 데이터는 URL에 GET 방식으로 들어가므로 URL의 최대길이 안으로 써야 한다는 제약이 걸립니다. IE의 경우 대략 2000개 정도문자가 URL에 들어가며, 아파치에서는 4000문자 이상이 URL로 리퀘스트 되면 413 Entity Too Large 에러가 걸립니다. 그러므로 대강 2000 케릭터 안팍으로 데이터를 축약해서 그리는 센스가 필요합니다.

Google Chart는 Line, Bar, Pie chart와 Venn diagram, Scatter plot을 chat 종류로 제공 하며 각 종류 별로 넣을 수 있는 옵션이 따로 제공 됩니다. 마찬가지로 모든 옵션은 URL 안에 파라메터로 넣을 수 있습니다.

각 차트는 색과 라벨 스타일을 줄 수 있으며 차트 타입과 색깔, 라벨, 스타일에 따라 다음과 같이 여러가지 모양의 차트를 그릴 수 있습니다.

상세한 옵션은 너무 많으므로 직접 가서 보시면 되겠습니다~ ..상세옵션 보기

  Line chart with unevenly spaced data points and lines in red, green and dashed blue
Horizontal bar chart with two data sets: one data set is colored in red the second is stacked in greenVertical bar chart with two data sets: one data set is colored in red the second is adjacent in green

Two-dimensional pie chart with six segments where segment colors are interpolated from dark to pale orangeThree-dimensional pie chart with six segments where segment colors are interpolated from dark to pale orange
Venn diagram with three overlapping circlesScatter plot with default blue circle data points in different sizes as defined by a third data set

Line chart with one red, one blue, and one green lineHorizontal bar chart with one data set in red, the second stacked in green, and the third in blue
Red line chart with pale gray background and chart area in a white to blue vertical linear gradient from bottom to top Blue line chart with alternating gray and white stripes from left to right
Venn diagram with two smaller circles enclosed by a larger circleLine chart with min, average, and max on the left, 0, 1, 2, 3, and 4 on the right, 0 to 100 along the x-axis and Jan, Feb, and March in blue below
Line chart with one solid line and one dashed lineLine chart with 20 pixel red cross, 20 pixel green diamond, 9 pixel purple arrow, 20 pixel orange circle, 10 pixel blue square, 1 pixel pale gray vertical line, 1 pixel blue line and a 20 pixel yellow cross all drawn on the data points of a single line. A thin black horizontal line intersects the vertical line v at point 7
Scatter plot with 10 pixel red square markersThree lines on a chart; chart is shaded in green from bottom to first line, red from first to second line, dark blue from second to third line and pale blue from third line to top of the chart

출처 : http://idkiller.tistory.com/category/Codes

Adobe Air 불친절한 강좌 - 1

디자인
Adobe Air는 HTML, AJAX, FLASH, FLEX 를 만들줄 아는 사람을 상대로 비교적 간단하게 Desktop에서 돌아가는 RIA(Rich Internet Application) 을 만들 수 있게 해주는 프로그램 입니다.

여기선 FlexBuilder 3와 Flex를 이용해서 HelloWorld 프로그램을 Air로 만들어 보겠습니다.

Adobe Air는 무료로 배포하는 SDK가 존재 합니다. 그러나 이걸로 Air를 만들려면 SWF를 만들 수 있는 다른 flex sdk 혹은 flash 혹은 flexbuilder가 필요 합니다. 또한 이래저래 설정에도 손이 많이 갑니다. 그래서 그냥 한방에 모두 해결되는 flexbuilder3를 씁니다. flex sdk + air sdk로 쓰시려는 분들은 이런 글이 없이도 문제를 해결 하실 실력이 되리라 믿습니다.

FlexBuilder3는 현재 Adobe Air beta2가 발표된 시점에서 다운받을 수 있는 가장 최신 버전인 Beta2 (M3)를 다운 받습니다.

http://www.adobe.com/cfusion/entitlement/index.cfm?e=labs_adobeflexbuilder3

위 URL에서 다운 받을 수 있지만 Adobe Lab의 계정이 필요 합니다. 그냥 별 조건 없이 가입 하시면 다운 가능 합니다.

다운 받으신 Flex Builder3를 설치 합니다. 그냥 next만 누르셔도 설치 됩니다. 뻔한 부분이라 더 뭐라 설명하기 힘드군요~

혹시 구버전의 FlexBuilder MOXIE를 설치 하셨었던 분은 언인스톨 하시고 설치 하십시오. 제 경우 제대로 인스톨이 되지 않더군요.
설치를 끝나고 Flex Builder3를 실행 시키시면 첫화면이 뜹니다. Eclipse가 base인 프로그램이라 Eclipse를 쓰시던 분들은 친숙한 UI가 보이실 것입니다.

여기까지가 인스톨 방법 이였고 누구나 프로그래밍을 한다면 다 짜봤다는 HelloWorld 를 만들어 보겠습니다. 그러나 코딩한줄 안하고 마우스로만 만들어 보겠습니다.

File - New - Flex Project를 선택 합니다. 그럼 다음과 같은 창이 나타납니다.
사용자 삽입 이미지
Project의 이름을 적은 후 Application Type을 Desktop Application으로 선택 합니다.
그다음 바로 Finish를 누릅니다. 그럼 다음과 같이 프로젝트가 생깁니다.
사용자 삽입 이미지

이제 Flex Builder3의 가운대 부분을 보면 뭔가 마우스로 컨트롤 할 수 있는 에디터가 떠 있는 것을 볼 수 있습니다. 여기에 HelloWorld 를 만들어 보겠습니다. 최종적으론 다음과 같이 편집 할 것입니다.
사용자 삽입 이미지

가운대 에디터 화면에는 Source와 Design의 탭이 있습니다. 이 탭들은 각각 MXML이라는 XML 파일의 형태로 소스를 작성하는 Text Editor 부분과 UI를 마우스 조작으로 만들 수 있는 Design Editor로 각각 소스를 보여 줍니다. 각 에디터에서 조작한 부분은 다른쪽에서 반영되어 바로 볼 수 있습니다.
이번에는 Design Editor만 써 보겠습니다.

최초로 나온 빈 박스를 누르면 사방의 크기를 조절 할 수 있습니다. 이 사각형을 잡아 원하는 크기로 줄일 수 있습니다.

또한 왼쪽 아랫부분에 다음과 같이 생긴 control 들을 골라 원하는 위치에 넣을 수 있습니다.
사용자 삽입 이미지

이번엔 Hello World라는 글자를 써야 하므로 Label Control을 쓰겠습니다.
Label Control을 마우스로 끌어와 가운대 Box에 넣은 후 Label에 Hello world라 적습니다.

그다음 Label의 속성을 변경해 보겠습니다. Label을 마우스로 선택 한 후 오른쪽 하단을 보면 다음과 같은 속성창들이 보입니다.

사용자 삽입 이미지
이 속성 창에서 Style 부분의 폰트 속성을 바꾸고 정렬 방법을 바꿉니다. 물론 Border/Alpha 등의 속성 또한 바꿀 수 있습니다. 하나씩 바꿔보면 모두 바로바로 적용되어 보이므로 한번씩 바꿔 보는 것도 좋습니다.

여기 까지 한 후 바로 화면 왼쪽 상단의 Run 버튼을 누르면
사용자 삽입 이미지

프로그램이 작동 하는 것을 볼 수 있습니다.
사용자 삽입 이미지

그다음 이 HelloWorld 프로그램에 약간의 양념을 쳐보겠습니다.

왼쪽의 Flex Navigator에서 HelloWorld 프로젝트의 파일들을 보면 HelloWorld-app.xml 이라는 xml 파일이 보일 것입니다.

이 파일은 Adobe Air 프로그램을 작성할때 생기는 설정 파일로, Air 프로그램의 Install과 Icon, root Window의 설정 등을 선택 할 수 있습니다. 이 파일을 열어 root Window에 변화를 주겠습니다.

HelloWorld-app.xml 파일을 열어 안을 보면, 다음과 같은 항목들이 보입니다.

<systemChrome>standard</systemChrome>
<transparent>false</transparent>
이 항목들을 다음과 같이 고칩니다.

<systemChrome>none</systemChrome>
<transparent>true</transparent>


각 항목들에 대한 자세한 설명은 그 항목의 윗부분에 주석으로 달려 있습니다. 좀 더 자세히 알고 싶은 분들은 주석을 보시면 많은 것을 알 수 있습니다.

이렇게 고친 후 저장 하고 다시 프로그램을 Run 시켜 봅니다.
그럼 윈도우 화면이 약간 달라져 있는 것을 알 수 있습니다.
사용자 삽입 이미지


이제 윈도우에 반투명 효과를 주겠습니다. Design Editor 화면에서 Control들을 집어 넣은 Box를 선택 합니다. 그 후 오른쪽 하단을 보면 다음과 같은 Properties Window가 보입니다.

사용자 삽입 이미지
이 윈도우에서 Border/Alpha 항목의 하단 오른쪽에 있는 Alpha값을 조절 합니다.
물론 다른 속성들을 변경해 보아도 됩니다.

Fill항목에서 Red 100%와 White 100%로 Gradient Color를 만든 후 Border/Alpha에서 Alpha에 60%를 변경시킨 후 Run 시키면 다음과 같은 결과가 나옵니다.
(Border/Alpha의 alpha와 Fill의 alpha를 혼동하면 안됩니다. Border/Alpha의 alpha는 윈도우 자체의 투명 효과를 조절 하며 Fill은 단지 색깔에 대한 투명 효과만을 조절 합니다.)

사용자 삽입 이미지

이제 이 프로그램을 Installer를 붙여 Air Application으로 만들어 보겠습니다.

Project - Export Release Version 을 선택 합니다. 그러면 다음과 같은 윈도우가 나옵니다.
사용자 삽입 이미지

여기서 Export to file에 Export 된 프로그램이 놓이길 원하는 곳을 설정 합니다. (기본 값은 프로젝트 폴더 안에 생깁니다.) 그다음 Next를 누르면 다음과 같은 창이 나옵니다.
사용자 삽입 이미지

이곳에서 Air 파일의 인증을 해야만 프로그램을 만들 수 있습니다.
인증파일은 임시로 Create에서 만들 수 있습니다.
Create 버튼을 누른 후 다음과 같은 창이 나옵니다.
사용자 삽입 이미지
Publisher name과 Country등을 선택한 후 패스워드를 입력하고 저장할 공간을 선택해 저장 합니다.

그다음 만들어진 Certificate file과 입력했던 패스워드로 방금 나온 창에 입력하여 finish를 눌러 파일을 생성 합니다.

그러면 원하는 곳에 HelloWorld.air와 같은 형태의 air 파일이 만들어 집니다.
이 파일을 실행 시키면 다음과 같은 인스톨 윈도우가 나타납니다.
사용자 삽입 이미지

이 윈도우의 하단에 보면 임시로 만든 Certificate file로 만들어진 것이기 때문에 보안 경고가 나타나지만 Install을 선택해 설치할수 있습니다.

설치하게 되면 같은 HelloWorld.air를 다시 작동 시키거나, 설치중에 선택할 수 있는 바탕화면혹은 시작메뉴에 에 바로가기 만들기로 만들어진 바로가기를 선택하여 프로그램을 작동 시킬 수 있습니다.
또한 HelloWorld.air를 설치 한 후 다시 작동 시키면 Uninstall 메뉴가 나와 프로그램을 제거 할 수 있습니다.

여기까지 HelloWorld를 만들어 보았습니다.
다음번엔 자주 쓰이는 Control들의 쓰임세를 알아보겠습니다.

출처 : http://idkiller.tistory.com/22

[포토샵] 사진을 스케치 효과 내기

디자인

포토샵으로 사진을 스케치 효과 내기

원본사진

사용자 삽입 이미지SONY | DSC-W230 | Normal program | Pattern | 1/800sec | F/2.8 | 0.00 EV | 5.3mm | ISO-160 | Flash fired, auto mode, return light not detected

스케치효과 적용 사진

사용자 삽입 이미지


1. [image] - [adjustiments - desaturate]

2. Background - layer copy

3. Ctrl + I

4. [Filter] - [Blur - gaussian blur] radius - 10

5. [레이어] 에서 블렌딩 모드 - Color dodge

6. [레이어] 에서 - [Flatten image]

7. Background layer copy

8. [Filter] - [noise - add noise]

9. [filter] - [Blur - motion blur]

10. [레이어]에서 블랜딩모드 - Multiply, opacity - 40%


[출처] 세이박스 - http://www.saybox.co.kr/bbs/board.php?bo_table=photoshop&wr_id=1

Adobe Illust 10.0 환경설정 초기화 하기

디자인
일러스트 이용중에 설정이 문제가 생겨 다시 재설치 해도 이전 설정되로 설치가 되는경우가 있죠.
일러스트를 다시 설치하면서 기본 환경 설정 파일이 제대로 안지워 져서 그렇습니다.
환경설정파일은 내문서에 숨겨져 있습니다.
따라서, 환경설정 파일을 지우면 됩니다.

파일위치는
C:\Documents and Settings\로그인아이디\application data\adobe\illustrator 10

사용자 삽입 이미지


안에 있습니다.

문제는 해당 폴더들이 숨겨져 있는데 숨겨져 있는 폴더나 파일을 볼려면 탐색기 메뉴에서 설정을 변경 하셔야 합니다.

도구 > 폴더 옵션 > 보기 > 고급설정 > 숨김 파일 및 폴더 > 숨김 파일 및 폴더 표시

사용자 삽입 이미지


에 체크를 하시면 보입니다.

AIPrefs 파일을 지우면 처음 설치 했을때와 같이 되돌아갑니다.

위 글은 세이박스에서 작성 한 글입니다. 내용 변경은 하시면 안되며 아래 출처를 반드시 남기셔야 합니다.
출처 : http://saybox.tistory.com/1162

DIV 레이어랑 본문의 플래시가 겹칠때 본문의 플래시를 더 위로 올리는 방법

디자인
div 레이어가 플래시가 겹칠때 가려지는 경우 z-index 와 플래시 옵션 추가로 높이 순서를 바꿀 수 있습니다.

1. 플래시 소스도 div로 감싸주고 z-index 값을 다른 div의 z-index 값보다 높게 입력한다.
(높은 숫자가 아래로 내려감)
<div style="z-index:1">
플래시에 가려졌던 내용
</div>

<div style="z-index:3">      
  <script language="javascript">
  FlashObject("./flash/mainvisual.swf", 1000, 609, "pageNum=0102");
  </script>
</div>


2. 플래시 옵션에 vmode 값을 추가

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="157" height="214" z-index:3; >
 <param name="movie" value="flash/quickmenu.swf">
 <param name="wmode" value="transparent">      <= 이 부분을 플래시 태드에 추가
.......
</object>


그럼, 잘 처리 해결 하시길 바라며, 세이박스에 즐겨찾기 추가하셔서 자주 방문 해 주세요!

DVD 백업 프로그램 shrink 사용방법

디자인


8.5G DVD용량을 4.7G DVD 시디에 복사 하고자 할때 다음과 같은 과정으로 설치 하시면 됩니다.
위 이미지 처럼 OpenDisk 를 클릭합니다.



읽고자하는 DVD 드라이버를 선택합니다.
그럼, 한참동안 DVD내용을 읽고 있는 창이 보일겁니다.
잠시 기다리시면 다음과 같이 DVD 정보가 나타납니다.



선택된 DVD 정보가 쭉 나타 났습니다.
Compression Settings 에서 Video에 Automatic 셀렉터 박스를 선택하시면 우측에 용량이 표시되는데 자신의 DVD용량에 맞게 선택을 하시면 됩니다.
보통 Automatic 상태에 두시면 4.7기가 이내로 선택해줍니다. 자막이나 사운드를 좀더 수동으로 조절 가능하기도 합니다.
다음 Backup 을 클릭하세요!



DVD롬이 두개인 분은 Select backup target 을 변경해주시면 DVD->DVD로 바로 복사 해줍니다.
DVD롬이 한개 인분은 읽어 들이는 DVD와 동일하게 선택해주시면 되며 다읽은뒤 복사할 DVD를 교체 해 달라고 합니다.
Select folder for temporary file 은 임시로 백업해둘 공간을 선택하라는 건데 이 임시 파일로 다음에 다시 DVD를 구울 수 있으므로 원본 DVD가 필요 없게 됩니다.
복사하고 필요없다면 해당 파일들을 지우시면 되구요!




자 그럼 다음과 같이 DVD 내용을 추출하는 과정을 보여 줍니다.
좀더 빠른 처리를 위해 Enable Video Preview 체크를 해지 해주세요!
그럼 이미지가 안나오는대신 좀더 빠른 처리를 합니다.
Time Remaing은 남은 시간인데 정확하진 안지만 비슷하게 남은 작업 시간을 알려줍니다.
이 과정이 모두 끝나면 DVD를 교체 해 달라고 합니다.
저의 경우 DVD RW를 사용하는데 이때 DVD안의 내용도 자동으로 지우고 기록할까요라고 묻기도 합니다.



이와 같이 DVD 기록하는 과정을 보여 줍니다.



복사가 끝났군요 위와 같은 메시지를 보여준뒤 DVD 트레이가 튀어 나옵니다.



OK를 누르니 이와 같이 해당 작업을 계속 하시겠냐구 물어 보군요.
DVD를 반복적으로 구울수 있는 기능인데 "취소" 하시면 됩니다.
드디어 완성! 잘 사용하세요!

dvd 추출 프로그램 shrink 설치 과정

디자인


일반적으로 구입한 DVD는 DVD-9 방식으로써 8.5GB 의 듀얼레이어 방식의 용량을 사용하고 있습니다.
듀얼레이어 방식의 DVD시디가 보통 몇배정도 비쌉니다.
그리고, DVD-5방식인 4.7G용량의 시디를 좀더 쉽게 구입하실거구요.
따라서 8.5G 용량의 내용을 shrink 프로그램을 이용해 용량을 줄여서 백업하거나 복사하실 수 있습니다.
shrink 프로그램은 http://www.dvdshrink.info/ 홈페이지에서 만든것으로 프리웨어로 제공 되고 있습니다.
즉, 공짜 프로그램이란 말이죠 ㅋㅋ

설치과정은 아주 간단합니다.
그냥 다음 다음...쭉 설치 하시면됩니다.













플래시 차트 (그래프)

디자인
 
플래시 차트를 홈페이지에 적용해보고자 찾아서 올립니다.
 
 

.

퓨전챠트에서 제공하는 무료 버전은
차트에 로고가 뜹니다.
참고하시고 이용하시길 ^^
폰트 사이즈 조정 가능 합니다.
사용방법은 xml 생성 또는 직접 플래쉬에 데이터를 전달하여 사용 합니다.
  

----------------------------------------------------------------------
이외에 찾은 차트 제공 사이트

Open Flash Chart
 
XML/SWF Charts
 
amCharts
 
국내사이트 회원가입이 좀 귀찮지만 꽤 이쁜 차트를 만들어주네요 (무료이고 워터마크 있음)
http://www.charteditor.com/

아래 사이트는 워터마크 없는 듯..
http://www.xchart.net/

아래 사이트도 예쁜데.. 무료는 몇가지밖에 안된다.
http://www.fusioncharts.com/free/Default.asp?gMenuItemId=1 

 


 

flash player 버젼업되면서 getURL안되는 문제

디자인
 
2007년 12월 adobe의 flash player 9가 115버전으로 upgrade되었다.
 
upgrade가 되면서 족족 들어나는 버그 및 오류들...
 
그중 한가지인 getURL이 먹통(?)이 되는 오류에 대해서 알아보자.
 
adobe사에서 의도적이진 않았겠지만 보안정책이 바뀌게 되면서 flash player 115버전을 사용하는 컴퓨터에서의 getURL의 사용이
 
제한되었다. 이로인한 해결책은.....
 
==============================================================================

The easiest fix is to specify AllowScript-xAccess="always" in the HTML page, as in this example:

<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase=" http://fpdownload.adobe.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="550" height="400" align="middle">

<param name="movie" value="http://otherdomain.com/exampleContent.swf">

<param name="allowScript-xAccess" value="always">

<embed type="application/x-shockwave-flash" pluginspage="http://www.adobe.com/go/getflashplayer" width="550" height="400" align="middle" src="http://otherdomain.com/exampleContent.swf" allowScript-xAccess="always"></embed>

</object>
==============================================================================
예문과같이 html코딩상 플래시를 부르는 부분에서의 parameter와 embed부분에 allowScript-xAccess 부분을 always로 추가해주면 된다.
 
crossdomain일 경우에도 마찬가지이다.
 
 
doc-ument.write ("<object classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' codebase='http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0' width='960' height='320'>")
doc-ument.write ("<param name='movie' value='http://stfam1.cafe24.com/stlye.swf'>")
doc-ument.write ("<param name=quality value=high>")
doc-ument.write ("<param name='allowScript-xAccess' value='always'>")
doc-ument.write ("<embed src='http://stfam1.cafe24.com/stlye.swf' quality=high pluginspage='http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash' type='application/x-shockwave-flash' width='960' height='320' allowScript-xAccess='always'></embed>")
doc-ument.write ("</object>")

[플래시] loadmovie 로 swf 파일 부를때 위치 지정하기

디자인
_root.createEmptyMovieClip("mm",1);
mm.loadMovie("./flash/nav_5mBar.swf");
mm._x = 285;
mm._y = 30

Fla에서 외부 Flv 파일 재생하기

디자인
 
1. Flash 저작 도구의 라이브러리 패널에서 문서를 연 다음,
   라이브러리 옵션 메뉴에서 새 비디오를 선택하여 비디오 객체를 작성합니다.

2. 비디오 객체를 라이브러리 패널에서 스테이지로 드래그합니다. 이와 같이 하면,
   비디오 객체 인스턴스가 만들어 집니다.

3. 스테이지에서 비디오 객체의 인스턴스 이름을 my_Video로 합니다.

4. 타임라인에서 프레임 1을 선택하고 액션 패널에 다음 코드를 추가합니다.

// Create a NetConnection object:
var netConn:NetConnection = new NetConnection();
// Create a local streaming connection:
netConn.connect(null)
// Create a NetStream object
var netStream:NetStream = new NetStream(netConn);
// Attach the NetStream video feed to the Video object:
my_Video.attachVideo(netStream);
// Set the buffer time:
netStream.setBufferTime(5);
// Being playing the FLV file:
netStream.play("videoFile.flv");

플래시 비디오파일 스트리밍 스킨, 크기 조작법

디자인
 
1) 컴포넌트에서 FLV_Playback 꺼내놓고 인스턴스네임을 my_FLVPlybk라고 줍니다.
2) 1번 프레임에 다음과 같은 액션을 넣어줍니다.
 
import mx.video.*;
// 플래시 무비에 같은 폴더에 configuration폴더안에 있는 skin폴더에서 자신이 원하는 스킨을 선택복사하여
//같은 폴더에 넣어줍니다.
my_FLVPlybk.skin = "MojaveExternalAll.swf";
my_FLVPlybk.contentPath = "http://자신의 도메인주소/jang.flv";
var listenerObject:Object = new Object();
listenerObject.ready = function(eventObject:Object) {
  var cuePt:Object = new Object(); // create cue point object
  cuePt.time = 2.444;
  cuePt.name = "ASCuePt1";
  my_FLVPlybk.addASCuePoint(cuePt);  //add AS cue point 
}
my_FLVPlybk.addEventListener("ready", listenerObject)
listenerObject.playing = function(eventObject:Object) {
    var rtn_obj:Object = new Object();
    if(rtn_obj = my_FLVPlybk.findCuePoint(2.444, FLVPlayback.ACTIONSCRIPT-x)){
      trace("Found cue point " + rtn_obj.name);
    }
  }
my_FLVPlybk.addEventListener("playing", listenerObject)
 
추가 : flash 8에서는
FLV 크기 조정하는 옵션이 변경되었습니다.
Parameters에서
maintainaspectRatio = false 로 하면 됩니다.

[플래시] Adobe Flash Player 9 - 구버전삭제 후 설치

디자인
 
유튜브 사이트에서 Adobe Flash Player 9를 다시설치해야 한다고 해서
설치를 했는데도 동영상이 안보이는 에러가 발생했을 경우
예전버전을 삭제한 다음 새로 설치해준다.
 
인터넷 익스플로러 > 도구 >
인터넷 옵션 > 임시 인터넷 파일의 '설정' > 개체 보기 > 전부 삭제 혹은 flash가 포함된것 삭제

 
 
 
 
 
 

플래시 loadmovie 에 관해서

디자인
질문: 플래시 loadmovie 에 관해서 wlsdnd211 / 2006-08-17 22:35
안녕하세요.
 
제가 버튼에 로드무비를 넣으려고 하는데요.. 어떻게 해야될지 모르겠어요., 로드 무비 사용법을 몰라서,, 로드무비 할 파일은 main.swf 에요
 
on(press){
 loadMovie(name,main.swf)
}    << 이렇게 하면 되는거 아닌가요?? ㅎㅎ
 
 
로드무비의 사용법과 액션을 좀 알려주셧으면 합니다.. 플래시 고수님! 부탁드립니다.
답변: re: 플래시 loadmovie 에 관해서 wolfe / 2006-08-11 08:56
on(press){
 loadMovie(name,main.swf)
}
 
 
이걸 그냥
 
on(press){
 screen.loadMovie("main.swf")
}

getURL() 를 써서 swf에서 새창 띄우는 방법

디자인
html 에 자바스크립트를 써주고.. 플래시에서는 자바스크립트만 호출하는 방법이 더 좋기는 하다.
하지만.. 가끔 이런 소스가 필요할 때가 있을 것 같다.
 
getURL() 를 써서 새창 띄우는 방법이다.
 
새창띄우기
on (press) {
 getURL("javascript-x:window.open('http://www.naver.com','nwindow','width=510,height=500,marginwidth=0,marginheight=0,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=no');void(0);");
}
 
또는
 
전체화면으로 띄우기
on (press) {
 getURL("javascript-x:window.open('http://www.naver.com','nwindow','fullscreen');void(0);");
}
 
참고) void(0); 을 추가함으로써 새창을 띄운후 본인페이지가 이동하는 것을 막는다..
한번 빼구서.. 테스트하면 금방 이해함..

이미지 로드하기(MovieClipLoader 이용)

디자인



< 출처 : http://namooya.com/zboard/zboard.php?id=f4f&no=24 >
[시작하기 전에]

이번에는 image로딩에 관해서입니다.

MovieClipLoader 클래스는 FlashMX2004버전때부터 지원하고 있습니다.
이미지나(jpeg) 또다른 플래시(swf)를 로딩하기 위해서 로딩 과정을 표시하는 것과, 로딩 완료후 그것을 어떻게 조정하느냐가 중요하죠.
예를 들어 img.jpg를 특정 무비클립내에 로딩한다고 하면, img.jpg가 얼마나 로드되고 있는지 알려줘야 하고, 다 로드 된 것을 알아차려, 그 크기와 위치를 조정해줘야 합니다.
2004버전이전에는  MovieClip.getBytesLoaded() 메소드를 통해서 로드과정을 표시하고, onClipEvent(data)MovieClip.onData를 통해서 로드가 다 되었다는 것을 알아냈습니다. 하지만, 쓰는 데 있어서 불편함이 많았고,
자주 쓰는 것임에도 불구하고, 새로운 플래시를 만들 때마다 로딩 과정 표시함수, 로딩 후 처리함수를 일일이 만들고, 그것들을 연결시켜줘야 했죠.
메크로미디어사 측에서도 이런 고충을 알았는지, MovieClipLoader 클래스를 제시해서 손쉽게 이미지와 swf 로딩을 할 수 있도록 하게 되었습니다.
사용한 소스는 액션스크립트에서 발췌해서 수정을 가한 것입니다.
따라서 변수 기명법이 지금까지 제가 해왔던 방식과는 약간의 차이가 있습니다.
하지만 이 방식이 메크로미디어사 측에서 추천하는 방식이니 제 방식으로는 고치지 않았습니다.
별로 다르지 않으니 보는데 무리는 없을 것입니다.
[활용방법]

이번 강좌 역시 어떠한 저작물을 만들기 위한 준비과정입니다.
[접두어]

무비클립 인스턴스명 : i+이름(사운드용 무비클립은 s+이름)
매개변수명 : v+이름
배열객체 : a+이름
클래스명 : c+이름
함수명 : f+이름
버튼인스턴스명 : b+이름
임시변수명 : temp+이름
링크에지명 : l+이름
어태치된 무비클립명 : place+이름
동적으로 생성된 무비클립명 : d+이름
외부파일에는 쓰는 변수명 : p+이름
LoadVars 객체의 인스턴스 명 : for+이름
텍스트 필드 계열 인스턴스명 : t+이름
[전체적인 구성]

모두 4개의 레이어로 구성되어 있습니다.
○ 제일 위의 레이어는 항상 그렇듯이 액션스크립트 전용 레이어입니다.
○ 그 다음에 보이는 '위배경' 레이어는 말그대로 위배경입니다. 그래픽요소만 있기 때문에 신경 쓸 것 없습니다.
○ 그다음이 'MnBnT' 레이어인데 여섯 개의 버튼과 한 개의 텍스트 필드, 한 개의 무비클립이 위치하고 있습니다.
○ 그 아래 '배경' 레이어입니다.

정리 해보면

순서

레이어이름

배치된 무비클립 & 콤포넌트 & 버튼

1

액션

없음

2

윗배경

없음

3

MnBnT

b0(Button),b1(Button),b2(Button),b3(Button),
b4(Button),b5(Button),tBoard(텍스트필드)
iLoadPlace(로드장소)

4

배경

 없음

 
[액션스크립트 설명]

모든스크립트는 메인프레임의 2프레임에 위치하고 있습니다.
[선수학습]
MovieClipLoader 클래스다음은 액션스크립트 사전의 내용입니다.

클래스를 사용하면 SWF 또는 JPEG 파일이 무비 클립으로 로드(다운로드)되는 동안 상태 정보를 제공하는 리스너 콜백을 구현할 수 있습니다.
MovieClipLoader 기능을 사용하려면 loadMovie()나 MovieClip.loadMovie() 대신 MovieClipLoader.loadClip()을 사용해 SWF 파일을 로드합니다.

MovieClipLoader.loadClip() 명령을 실행하면 다음과 같은 이벤트가 나열된 순서대로 발생합니다.

1. 다운로드되는 파일의 첫 번째 바이트가 디스크에 기록되었을 때
MovieClipLoader.onLoadStart() 리스너가 호출됩니다.

2. MovieClipLoader.onLoadProgress() 리스너를 구현한 경우, 이 함수는 로드 과정 동안 호출됩니다.
중요: 로드 과정 중에 아무 때나 MovieClipLoader.getProgress()를 호출할 수 있습니다.
3. 다운로드되는 파일이 모두 디스크에 기록되었을 때 MovieClipLoader.onLoadComplete() 리스너가 호출됩니다.

4. 다운로드된 파일의 첫 번째 프레임 액션이 실행된 후, MovieClipLoader.onLoadInit() 리스너가 호출됩니다.
MovieClipLoader.onLoadInit()가 호출된 후에는 속성을 설정하거나 메서드를 사용할 수 있으며 로드된 무비와 상호 작용할 수 있습니다.

파일을 완전하게 로드하지 못하면 MovieClipLoader.onLoadError() 리스너가 호출됩니다.

뭐.... 읽어보면 알 수 있는내용입니다.
사용법은 실제 소스를 보면서 설명합니다.

[메인스테이지 : 2frame]//MovieClipLoader 클래스를 사용하기 위한 인스턴스를 생성합니다.var my_mcl = new MovieClipLoader();

//리스너를 만들기 위해 새로운 객체를 만들어줍니다.
//이 객체에 중요함수 들이 들어갑니다.
//결론부터 말하면, 새로운 객체를 만들고, MovieClipLoader의 여러 가지 리스너 함수를 새로 정의한다음,
//MovieClipLoader의 인스턴스에 연결해주는 구조입니다.
//다소 복잡한 구성으로 보일 수 있으나 리스너의 구현은 보통 이런식으로 하니 이 방식을 잘 알아둘 필요가 있습니다.
//마우스 리스너, 키보드 리스너도 모두 이런 방식으로 구현합니다.

myListener = new Object();

//파일을 로드할 때], 가장 먼저 실행되는 리스너입니다. 이때 로딩이 시작된다는 메시지를 표시해주면 됩니다.
myListener.onLoadStart = function(
vTarget_mc) {
        _root.tInfo.text =
vTarget_mc+"에 이미지 로딩을 시작합니다.\n";

       //위에서 굵은 글씨로 중요라고 해서 getProgress()함수를 언제든지 실행할 수 있다고 되어있습니다.
       //이함수는 현재 로딩된 bytes를 구하는 데 씁니다.
       //사용법은 아래와 같이 변수를 하나 만들어 리턴값을 받고,
       //그 변수의
bytesTotal 속성을 참고하면 전체 크기를 알 수 있고,
       //
bytesLoaded 속성을 참고하면 현재 로드된 크기를 알 수 있습니다.
        var loadProgress = my_mcl.
getProgress(vTarget_mc);
        _root.tInfo.text += "전체크기 : "+loadProgress.
bytesTotal+"\n";
};

//로드가 진행되는 동안 계속적으로 호출되는 함수입니다.
//주의 할 것은 하드에 쓰기가 일어날 때 호출된다는 것입니다.
//따라서 플래시 자체의 다운로드 시물레이션에서는 호출되지 않습니다.
//
에 올려봐야 작동하는 것을 확인할 수 있습니다.
myListener.onLoadProgress = function(
vTarget_mc, loadedBytes, totalBytes) {
        _root.tInfo.text =
vTarget_mc+"에 이미지 로딩을 시작합니다.\n";
        _root.tInfo.text += "전체크기 : "+
totalBytes+"\n";
        _root.tInfo.text += "현재 : "+
loadedBytes+"\n";
};

//로드가 끝나면 호출되는 함수입니다.
myListener.onLoadComplete = function(vTarget_mc) {
        _root.tInfo.text += "로딩 완료!!\n";
};

//
다운로드된 파일의 첫 번째 프레임 액션이 실행된 후 호출되는 함수입니다.
//따라서 이곳에서 초기화를 해주면 됩니다.
//첫 번째 프레임 액션이 실행된 후 라는 것을 주의깊게 봐야 합니다.
myListener.onLoadInit = function(
vTarget_mc) {
        _root.tInfo.text += "크기와 위치를 조정합니다.\n";
       
 vTarget_mc._width = 300;
       
vTarget_mc._height = 160;
       
vTarget_mc._x = 25;
       
vTarget_mc._y = 25;
};

//로딩에 실패하면 호출되는 함수입니다. 실패원인은 errorCode를 통해 얻을 수 있습니다.
myListener.onLoadError = function(vTarget_mc,
errorCode) {
        _root.tInfo.text = "로딩 실패\n";
        _root.tInfo.text += "실패원인 : "+
errorCode+"\n";
};

//MovieClipLoader 의 인스턴에 연결시켜줍니다.
my_mcl.addListener(myListener);

//버튼 액션들입니다.
//누르면, 해당 버튼의 번호와 동일한 이미지를
iLoadPlace 무비클립에 로드합니다.
b0.onRelease = function() {
        my_mcl.
loadClip("img0.jpg", "_root.iLoadPlace");
};
b1.onRelease = function() {
        my_mcl.
loadClip("img1.jpg", "_root.iLoadPlace");
};
b2.onRelease = function() {
        my_mcl.
loadClip("img2.jpg", "_root.iLoadPlace");
};
b3.onRelease = function() {
        my_mcl.
loadClip("img3.jpg", "_root.iLoadPlace");
};
b4.onRelease = function() {
        my_mcl.
loadClip("img4.jpg", "_root.iLoadPlace");
};
b5.onRelease = function() {
        my_mcl.
loadClip("img5.jpg", "_root.iLoadPlace");
};
 

장면(Scene)이 두개 이상인경우 gotoAndPlay(), gotoAn..

디자인
 
장면(Scene)이 여러 개인 플래시 무비에서 gotoAndPlay(), gotoAndStop()을 사용해서 특정 장면의 프레임으로 이동한 후 재생 또는 정지하게 만들려면 다음과 같은 형식으로 코드를 작성합니다.
 
gotoAndPlay("main","1");  //main 장면 1번 프레임으로 이동한 후 재생
gotoAndStop("main","1");  //main 장면 1번 프레임으로 이동한 후 정지
 
두 개 이상의 장면(Scene)으로 이루어진 플래시 무비에서 gotoAndPlay(), gotoAndStop()을 사용하는 경우 액션 스크립트로 장면(Scene)을 제어할수 없기 때문에, 'A'란 장면에 맞는 'ClipA' 무비클립 안에 버튼을 만들고 버튼 액션을 다음과 같이 작성하면 버튼에 적용된 액션스크립트는 작동하지 않습니다.
 
on(release){
     _root.gotoAndPlay("B", 1);
}
 
이런한 문제를 해결하려면 사용자 정의 함수를 제작해서 gotoAndPlay() 함수를 메인 타임라인에서 호출되게 만들어야 합니다.
장면 'A'의 메인타임라인 1번 프레임에 플레이헤드를 장면 'B'의 1번 프레임으로 이동시키는 함수 changeScene()을 선언합니다.
 
function changeScene(){
     gotoAndPlay("B", 1);
}
 
'ClipA' 무비클립 안에 만든 버튼에 작성한 코드는 다음과 같이 수정합니다. 이렇게 하면 두 개 이상의 장면(Scene)으로 이루어진 플래시 무비에서 무비클립 안에 만든 버트으로 장면 간의 이동이 가능하게 만들 수 있습니다.
 
on(release){
    _root.changeScene();
}
 

플래시 FullScreen(풀스크린) - AS3.0, AS2.0

디자인
 
 
 
본 코드는 Flash Player9 이상에서 작동하며 Html단의 object태그에 다음 붉은 글씨가 추가로 삽입된다.
--------------------------------------------------------------------------------------------
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,18,0"
width="600"  height="400" id="fullscreen" align="middle">
<param name="allowFullScreen" value="true" />
<param name="movie" value="fullscreen.swf" />
<param name="bgcolor" value="#333333" />
<embed src="fullscreen.swf" allowFullScreen="true" bgcolor="#333333" width="600" height="400"
name="fullscreen" align="middle" type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
-----------------------------------------------------------------------
 
다음의 예제 코드는 플래시영역에서 마우스 오른쪽 버튼을 눌렀을경우 풀스크린 메뉴를 추가. 기능을작동시키는
펑션으로 구성되어 있다.
 
 
AS3.0에서 중요한 문장
------------------------------------------------------------------------
//풀창
stage.displayState = StageDisplayState.FULL_SCREEN;
//노멀창
stage.displayState = StageDisplayState.NORMAL;
----------------------------------------------------------------
 
 
 
AS2.0에서 중요한 문장
------------------------------------------------------------------------
//풀창
Stage["displayState"] = "fullScreen";
//노멀창
Stage["displayState"] = "normal";
----------------------------------------------------------------
 
 
 
AS3.0 형식
/*********************************************************************************/
import flash.display.Stage;
import flash.display.StageDisplayState;
import flash.display.InteractiveObject.*;
import flash.events.*;

// functions to enter and leave full screen mode
function goFullScreen(event:ContextMenuEvent):void
{
   stage.displayState = StageDisplayState.FULL_SCREEN;
}
function exitFullScreen(event:ContextMenuEvent):void
{
   stage.displayState = StageDisplayState.NORMAL;
}

// function to enable and disable the context menu items,
// based on what mode we are in.
function menuHandler(event:ContextMenuEvent):void
{
   if (stage.displayState == StageDisplayState.NORMAL)
   {
      event.target.customItems[0].enabled = true;
      event.target.customItems[1].enabled = false;
   }
   else
   {
      event.target.customItems[0].enabled = false;
      event.target.customItems[1].enabled = true;
   }
}

// create the context menu, remove the built-in items,
// and add our custom items
var fullscreenCM:ContextMenu = new ContextMenu();
fullscreenCM.addEventListener(ContextMenuEvent.MENU_SELECT, menuHandler);
fullscreenCM.hideBuiltInItems();

var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen" );
fs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, goFullScreen);
fullscreenCM.customItems.push( fs );

var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen");
xfs.addEventListener(ContextMenuEvent.MENU_ITEM_SELECT, exitFullScreen);
fullscreenCM.customItems.push( xfs );

// finally, attach the context menu to a movieclip
mc.contextMenu = fullscreenCM;
 
------------------------------------------------------------------------------------------------/
 
 
 
AS2.0 형식
/*********************************************************************************/
// functions to enter and leave full screen mode 
function goFullScreen() { 
	Stage["displayState"] = "fullScreen"; 
} 
function exitFullScreen() { 
	Stage["displayState"] = "normal"; 
} 
// function to enable, disable context menu items, based on which mode we are in. 
function menuHandler(obj, menuObj) { 
	if (Stage["displayState"] == "normal") { 
	// if we're in normal mode, enable the 'go full screen' item, 	disable the 'exit' item 
		menuObj.customItems[0].enabled = true; 
		menuObj.customItems[1].enabled = false; 
	} else { 
	// if we're in full screen mode, disable the 'go full screen' item, enable the 'exit' item 
		menuObj.customItems[0].enabled = false; 
		menuObj.customItems[1].enabled = true; 
	} 
} 
// create a new context menu 
var fullscreenCM:ContextMenu = new ContextMenu(menuHandler); 
// hide the regular built-in items 
fullscreenCM.hideBuiltInItems(); 
// now, add the items to enter and leave full screen mode 
var fs:ContextMenuItem = new ContextMenuItem("Go Full Screen", goFullScreen); 
fullscreenCM.customItems.push( fs ); 
var xfs:ContextMenuItem = new ContextMenuItem("Exit Full Screen", exitFullScreen); 
fullscreenCM.customItems.push( xfs ); 
// now, attach the context menu to any movieclip in your movie. 
// here we attach it to _root, (even though using _root is generally a bad idea,) 
// so it will appear if you right click anywhere on the movie. 
_root.menu = fullscreenCM;
----------------------------------------------------------------------------------------- 

플래시 MovieClipLoader

디자인
 
loadMovie 를 하게 되면..단순히 불러오는 정도 밖에 하지 못하지만.
MovieClipLoader 를 이용하게 되면, swf, jpg 등을 불러올 때에
좀더 디테일한 제어가 가능해진다.
 
 
_root.createEmptyMovieClip("mv", 15);

//로드되는 과정을 지켜볼 리스너객체를 생성한다.
var mclListener:Object = new Object();
mclListener.onLoadStart = function(target_mc:MovieClip) {

  //로딩을 시작할 때에 처리할 일을 작성한다.
}
 
mclListener.onLoadProgress = function(target:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void {
    //로딩이 진행되는 과정에서 처리할 일을 작성한다.
    trace(target + ".onLoadProgress with " + bytesLoaded + " bytes of " + bytesTotal);
    var percent:Number = Math.round(( bytesLoaded / bytesTotal  ) * 100);
    trace(percent);
}
 
 
mclListener.onLoadInit = function(target_mc:MovieClip) {
      //로딩이 완료된 직후 처리할 일을 작성한다.
     //이곳에서는 가로,세로 크기를 100 으로 맞춰주었다.
      target_mc._width = 100;
      target_mc._height = 100;

 }

 
mclListener.onLoadError = function(target_mc:MovieClip, errorCode:String, httpStatus:Number) {
  //로딩 중 에러가 발생했을 경우 처리할 일을 작성한다.
  trace(">> loadListener.onLoadError()");
  trace(">> ==========================");
  trace(">> errorCode: " + errorCode);
  trace(">> httpStatus: " + httpStatus);
 }  

 
//MovieClipLoader 객체를 생성하고, 리스너를 등록한다.
 var mcl:MovieClipLoader = new MovieClipLoader();
 mcl.addListener(mclListener);
 
//mv 무비클립에 test.jpg 를 로드한다.
 mcl.loadClip("test.jpg", mv);

플래시 - loadMovie 최적화 - #1

디자인

두가지 방식.. 모두 가능하다..
이를테면..
##경우1##
loadMovie("sub.swf",_root);

##경우2##
_root.loadMovie("sub.swf");
경우1과 경우2 같은 결과가 나온다.

위의 예제는 문제가 있다.
(다 알고 있는 부분이겠지만....)
_root.loadMovie("sub.swf");
이렇게 쓸 경우에.. sub.swf가... _root에 로딩 되는게 아니라
_root가 sub로... 바뀐다..
때문에... _root에 있던.. 기존 오브젝트들은 사라지게 된다.

그래서..
_root.createEmptyMovieClip("mm",1);
mm.loadMovie("sub.swf");
이렇게 써줘야... 기존 _root는 그대로 있고..
sub.swf만..Depth.. 1로 불러 들이게 된다.

자.. 여기까지가 기본이다..

실무로..볼때... 왠지 불안하다.. 왜냐면..loadMovie가.. 제대로 불러들
였는지 불안하고..
그리고..불러들인 녀석에 바로 어떤 액션을...적용할 경우
이 녀석이.. 들어온건지.. 들어오지 않았는지 확인할 길이 없다.
몇가지를... 더 생각해보자!!

##경우1##
_root.createEmptyMovieClip("mm", 1);
mm.loadMovie("sub.swf");
mm.onEnterFrame = function() {
this._x = i++;
};

##경우2##
_root.createEmptyMovieClip("mm", 1);
mm.createEmptyMovieClip("ss", 1);
mm.ss.loadMovie("sub.swf");
mm.onEnterFrame = function() {
this._x = i++;
};

경우1은 mm이라는 빈무비클립을 만들어 mm에 직접 sub.swf를 로딩
했고
경우2는 mm을 만들고 그 속에 ss를 만들어 ss에 sub.swf를 로딩시켰
다..
경우1은 mm의 onEnterFrame이 작동하지 않는다.
경우2는 잘 작동한다.

왜 그럴까??
..
결국.. loadMovie의.. 로딩은 엄밀히 말하면... 대체시켜 버리는 것이
다.
_root.createEmptyMovieClip("mm", 1);
mm.loadMovie("sub.swf");
mm.onEnterFrame = function() {
this._x = i++;
trace(i);
};
순서는 이렇다.
output에 1이 나온다..
예측하건데..
sub.swf가.. 완전히 불러오는 시점에서..mm이 완전... 바뀐다.
때문에.. i값이.. 약간(대부분1만) 보이게 된다.
그리고 그 이후에는 보이지 않는다.
로딩이 아니고... 바뀌어 버리기 때문이다.

자..그렇다면... 어떤... 녀석을 불러들일때.. 그 녀석의.. 용량을 체크
하고 싶다면.. 어떻게 할까??

##경우1##
_root.createEmptyMovieClip("mm", 1);
mm.loadMovie("sub.swf");
mm.onEnterFrame = function() {
a.text = this.getBytesLoaded() +"/"+this.getBytesTotal();
};

##경우2##
_root.createEmptyMovieClip("mm", 1);
mm.createEmptyMovieClip("ss", 1);
mm.ss.loadMovie("sub.swf");
mm.onEnterFrame = function() {
a.text = this.ss.getBytesLoaded()
+"/"+this.ss.getBytesTotal();
};

경우 1은 a에 값이 들어오지 않는다.
경우2는 잘 나타난다.


더 많은 말들을.. 할수 있겠지만..
한 가지만.. 더 해보자!!

예를들어 sub.swf를 불러들여서...
다..로딩된.. 순간에.. 화면의 어색함 없이..
너비 100
높이 100
알파값 50
x위치 50
y위치 50으로 위치 시켜보자!!

_root.createEmptyMovieClip("mm", 1);
mm._visible = false;
mm.createEmptyMovieClip("ss", 1);
mm.ss.loadMovie("sub.swf");
mm.onEnterFrame = function() {
a.text = this.ss.getBytesLoaded()+"/"+this.ss.getBytesTotal();
if (this.ss.getBytesTotal()>10 && this.ss.getBytesLoaded()
== this.ss.getBytesTotal()) {
with (this.ss) {
_width = 100;
_height = 100;
_alpha = 50;
_x = 50;
_y = 50;
}
this._visible =true;
delete this.onEnterFrame;
}
};
위와 같이..하면된다.
_root.createEmptyMovieClip("mm", 1);
mm._visible = false;
이 부분이..팁이다..
빈무비를 만들고...
바로... 감추는 것...
그리고..onEnterFrame으로..체크한다.

조건.. 즉,if (this.ss.getBytesTotal()>10 &&
this.ss.getBytesLoaded() == this.ss.getBytesTotal()) 이것이..성립
되었을때..

비로소..ss를.. 위치 시키고..
this._visible = true;
할거...다하고 나서... 제일 나중에.. 자신의..모습을.. 드러내는 것이
다.


소스다운로드

더 많은 부분이..있다..
사실... 실무적으로는..끝이 없는것 같다..
상황이라는건... 항상.. 바뀌니까..
그런.. 생각이 든다..

플래시로.. 웹상의..ACDsee같은 것을... 만들때나..
loadSound할때... 그리고..
기타.. 여러가지.. 상황들은...
개발기획, 설계 그리고.. 액션 등... 많은 부분 변화 시킨다..

결국... 중요한건.. 메서드를 알고(이해하고) 있는 부분 50%와..
알고 있는 메서드를 창의적으로... 연결하고..설계하는 부분.. 50% 라
는 생각이 든다.


다음번에는....
loadMovie 최적화 -#2
- _root변수 부분의 중복문제
- 네트워크환경이.. 좋지 않은 곳에서의 로딩
- 위의 내용을 prototype으로 만드는 방법.
- 기타..
그리고..
loadMovieNum 최적화에 대해서.. 알아보겠다..



P.S. - 1
loadMovie로.. 불러들인 녀석을.. onPress와.. onRelease로..
startDrag()
stopDrag() 하고 싶은 경우에도.. 마찬가지이다..
결국 계층을 2개로,,가져가야..
체크할수 있고.... 이벤트를 줄수 있고... 그리고 안전하다..
jpg를 불러들일때도.. 마찬가지이다..


P.S. - 2
C++이나..Java 같은 언어의 경우 객체와 메서드의 종류는...
액션스크립트와 비교할 수 없이 많다..
비교하는것이.. 어리석은 것일지 모르겠다..
하지만..
액션스크립트의 메서드와 프로퍼티를 단편적으로 보고..
별거 아니군.. 하고 치부해버리기에는..
너무나.. 많은 부분이.. 숨어있다..
사실...loadMovie(Num)는.. 구조화의 핵심이다..
핵심인 만큼... 안전성이.. 보장되어야 한다...
교육컨텐츠를 만들때나..
온라인 쇼핑을 만들때
혹은.... 아바타시스템을 만들때..
그 때마다... 상황을 고려한.. 코딩과 설계를 해야한다.
단순히...
MovieClip.loadMovie(불러들일swf(jpg)파일);
이라는 것을.. 말하며...
난... loadMovie에 대해서.. 다 알고.. 더 이상... 알아야 할게.. 없다
고.. 생각하는건... 잘못된 부분이다..

깊게 보면 볼수록... 액션스크립트코딩을 깊게 보는게..아니라..
인터넷 환경과... 프로그래밍 기법.... 개발기획... 구조화..XML,..등..
기본지식에 대한... 이해에 접근하게 된다.
결국.. "프로그램이라는 것은.. 한 길로.. 통하게 된다"라는 생각이 들
게 된다.

질문한 분중에
일주일동안.. 이 문제로.. 고생하고 있다고 말하는 분이 있었다..
우습게도.. 난.. 2년넘게... 고민했고...
지금도.. 고민하고 있다..
앞으로도.. 계속.. 고민해야할것 같다..

위의 설명한.. 내용들은.. loadMovie를 다루는 여러가지 방법중... 일
부에.. 속한다..
(심지어 로컬인지 웹환경인지, OS의 종류가 어떤것인지, 인터넷옵션
에 대한 고려, 그리고 파일존재여부... 기타... )

그렇다고... 난해하다고 말하는건.. 아니다..
다만....
더 깊은.. 부분이.. 있다는 것을 말하려는 것이다...




------------------------------------------------------
참고 하세요 - 예전에.. 제가 loadMovie관련 답변한..부분입니다.
----------------------------- ------------------------
loadMovieNum 은 전역함수로만.. 존재합니다.
그리고..loadMovie는 MovieClip 객체의..메서드로.. 존재합니다.
이 부분에.. 대해서.... 아셔야 합니다.
플래시4때까지는.. 거의 모든.. 액션들이..전역함수로.. 되어있었고..
플래시5에서는 상당수... 객체에 대한.. 메서드로.. 존재하고..
플래시MX에 와서는... 거의 대부분을... 객체로... 프로그래밍 가능합
니다
예를들어..
gotoAndStop 이라는 액션도... 두가지가.. 존재합니다.
전역함수와... 객체에 대한 메서드로요..
전역함수가 존재하는것은... 기존 버젼을 수용하기 위해서입니다.
예를들어
gotoAndStop(3);
이렇게 쓰면.. 전역함수이고..
aa.gotoAndStop(3);
여기서는 aa라는 무비클립객체의... 메서드로.. 존재하는겁니다.
즉... 위와.. 아래의 gotoAndStop는 전혀 다른 녀석입니다.
레퍼런스에 봐도... 두개가.. 다 나와 있습니다..
왜?? 그런 걸까요?? 서로.. 다른 녀석이기 때문입니다..
이것 외에도... getURL 이라든가.. 이런.. 부분은 많습니다.


loadMovieNum은 전역함수이고..
때문에...aa.loadMovieNum 이라고 쓸수 없습니다...

SilverLight 개발 환경 구축

디자인
 
SilverLight 2.0 Beta 1 개발환경 구축 
 
 
Visual Studio 2008 (필수)
: SilverLight는 기본적으로 .Net Framework 3.5에서 돌아갑니다. 따라서, .Net Framework 3.0까지만 지원이 되는 Visual Studio 2005에서는 개발을 할 수 없습니다. 그래서, VS 2008이 필요한데, 현재는 Professional Ver.이 90일 한정판으로 나와있습니다. 자유롭게 다운로드 가능합니다.
 
 
   
Microsoft Silverlight Tools Beta 1 for Visual Studio 2008 (필수)
: VS 2008에서 SilverLight 개발을 가능하게 해주는 툴입니다. 이것을 설치하면, 비로소 VS 2008의 프로젝트 생성에서 SilverLight 개발 프로젝트가 나옵니다.
 
 
 
Microsoft Expression Blend 2.5 March 2008 Preview (필수)
: Xaml 파일의 디자인을 돕는 툴입니다. 디자이너분들은 반드시 설치하셔야하고, 개발자분들도 간단한 테스트를 위해 설치하시면 좋습니다. (사실.. 개발하시다보면 있는게 좋다는것을 곧 느끼실꺼예요.. ^^)
 
 
 
Microsoft SilverLight 2.0 Beta 1 Plug-in (필수)
: 지금 굳이 깔지 않아도, 나중에 테스트하시면서 자동으로 설치하라는 메세지가 나오지만, 기왕.. 하시는김에..
 
http://www.microsoft.com/silverlight/resources/installationfiles.aspx?v=2.0