friendsofed 에서 본 actionscript 3.0 관련 책들

[FLASH/Note]
Foundation Actionscript 3.0 with Flash CS3 and Flex
By Sean McSharry, Steve Webster, Tim Willison
Temporary Cover Image
- Due: 15th October 2007
- ISBN-10: 1-59059-815-6
- ISBN-13: 978-1-59059-815-3
- RRP: $39.99
- 450 Pages


Object-Oriented ActionScript 3.0
By Peter Elst, Sas Jacobs, Todd Yard
Temporary Cover Image
- Due: 23rd July 2007
- ISBN-10: 1-59059-845-8
- ISBN-13: 978-1-59059-845-0
- RRP: $49.99
- 650 Pages


Foundation Actionscript 3.0 Animation: Making Things Move!
By Keith Peters
Foundation Actionscript 3.0 Animation: Making Things Move! Cover Image
- Published: 2nd April 2007
- ISBN-10: 1-59059-791-5
- ISBN-13: 978-1-59059-791-0
- RRP: $39.99
- 568 Pages

For help on technical issues, please visit the friends of ED support forums.
- Download All files to accompany the book (167.2 K)
- Sample Chapter


The Essential Guide to Flex 2 with ActionScript 3.0

By Charles E Brown
The Essential Guide to Flex 2 with ActionScript 3.0 Cover Image
- Published: 26th February 2007
- ISBN-10: 1-59059-733-8
- ISBN-13: 978-1-59059-733-0
- RRP: $49.99
- 520 Pages

For help on technical issues, please visit the friends of ED support forums.
- DownloadAll files to accompany the book (3.2 MB)
- Sample Chapter
2007/06/17 18:21 2007/06/17 18:21

[펌] Adobe Flash CS3의 새로운 기능

[FLASH/Note]
출처 : 땡굴이
  새로운 주요 기능

Adobe Photoshop 및 Illustrator 가져오기
레이어와 구조를 보존한 상태로 Photoshop(PSD) 및 Illustrator(AI) 파일을 가져와서 통합한 다음 Flash CS3에서 편집할 수 있습니다. 고급 옵션을 사용하여 가져오기 프로세스 도중에 파일을 최적화하고 사용자 정의할 수 있습니다.

Adobe Photoshop 및 Illustrator 가져오기Adobe Photoshop 및 Illustrator 가져오기

애니메이션을 ActionScript로 변환
타임라인 애니메이션을 개발자가 쉽게 편집, 재사용 및 활용할 수 있는 ActionScript 3.0 코드로 즉시 변환합니다. 하나의 오브젝트에서 다른 오브젝트로 애니메이션을 복사할 수 있습니다.

Adobe 인터페이스
다른 Adobe Creative Suite 3 어플리케이션과의 일관성을 강조한 새롭고 효율적인 인터페이스를 활용하여 작업 과정을 향상시키고 스테이지 공간을 극대화하도록 인터페이스를 사용자 정의할 수 있습니다.

ActionScript 3.0 개발
성능, 유연성 및 보다 직관적이고 구조화된 개발 기능을 제공하는 새로운 ActionScript 3.0 언어를 사용하여 시간을 절약할 수 있습니다.

고급 디버거
더욱 향상된 유연성과 사용자 피드백 기능을 제공하고 Adobe Flex™ Builder™ 2 디버깅과도 일관적인 작업 방식을 제공하는 새롭고 강력한 ActionScript 디버거를 사용하여 컨텐츠를 테스트할 수 있습니다.

Adobe Device Central
Adobe Creative Suite 3 전체에 통합되어 있는 Adobe Device Central을 사용하여 인터렉티브한 Adobe Flash Lite™ 어플리케이션과 인터페이스를 포함하는 모바일 장치 컨텐츠를 디자인하고 미리 보고 테스트할 수 있습니다.

Device Central screenshot  Device Central

풍부한 그리기 기능
스마트 모양 그리기 툴을 사용하여 스테이지에서 모양 속성을 시각적으로 조정하고, Adobe Illustrator에서와 같은 새로운 펜 툴을 사용하여 정밀한 벡터 일러스트레이션을 만들고, Illustrator CS3의 일러스트레이션을 Flash CS3로 붙여넣을 수도 있습니다.

사용자 인터페이스 구성 요소
ActionScript 3.0의 새롭고 간편하며 쉽게 스킨으로 사용할 수 있는 인터페이스 구성 요소를 사용하여 인터렉티브한 컨텐츠를 만들 수 있습니다. 코딩할 필요 없이 그리기 툴을 사용하여 구성 요소의 모양과 느낌을 시각적으로 수정할 수 있습니다.

고급 QuickTime 내보내기
고급 QuickTime 내보내기 기능을 사용하여 SWF 파일로 게시된 내용을 QuickTime 비디오로 렌더링합니다. 중첩된 무비 클립이 포함된 컨텐츠, ActionScript™에서 생성된 컨텐츠, 그림자 및 흐림과 같은 런타임 효과를 내보낼 수 있습니다.

정교한 비디오 툴
포괄적인 비디오 지원 기능으로 스트리밍 및 점진적 다운로드 Flash 비디오를 작성, 편집 및 배포할 수 있습니다. 독립형 비디오 인코더, 알파 채널 지원, 고품질 비디오 코덱, 삽입된 큐 포인트, 비디오 가져오기 지원, QuickTime 가져오기, 자막 기능 등을 사용하여 최상의 비디오 환경을 보장합니다.

시간을 절약해 주는 코딩 툴
새로운 코드 편집기 기능으로 코딩 시간을 줄일 수 있습니다. 코드 축소 및 주석 달기 기능으로 관련 코드에만 집중하고 오류 탐색 기능을 사용하여 코드 오류로 직접 이동할 수 있습니다.


유연한 디자인 성능

그리기, 애니메이션 및 인터렉티브한 디자인 툴 등의 완벽한 기능으로 표현하기 어려운 디자인 표현도 그 제한이 없습니다.

정교한 비디오 툴

독립형 비디오 인코더
FLV 파일을 만들 때 고급 인코딩 옵션에서 고품질 On2 VP6 코덱이나 Sorenson Spark 코덱 중에서 선택할 수 있습니다. 일괄 처리 프로세서를 사용하여 여러 비디오 파일을 한 번에 인코딩할 수 있습니다.

비디오 인코더 플러그-인
뛰어난 전문 사후 제작 어플리케이션에서 Flash CS3로 비디오를 직접 내보낼 수 있습니다.

알파 채널 지원
런타임 시에 투명 또는 반투명 알파 채널로 합성된 비디오를 다른 컨텐츠와 오버레이합니다. Adobe After Effects®와 같은 합성 툴을 사용하여 고유한 효과를 만들고 투명도가 보존된 상태로 Flash로 가져올 수 있습니다.

고품질 비디오 코덱
Flash 플레이어에서 고급 비디오 코덱인 On2 VP6을 사용하여 파일 크기를 작게 유지하면서 현재 최고의 비디오 코덱과 비슷한 퀄러티의 비디오를 제작할 수 있습니다.

삽입된 큐 포인트
Flash 비디오(FLV) 파일에 큐 포인트를 직접 포함시켜서 재생 중에 이벤트를 트리거하고 포함된 그래픽 및 애니메이션의 재생을 조정합니다.

삽입된 큐 포인트  삽입된 큐 포인트

비디오 가져오기 워크플로우
비디오를 가져오는 동안 FLV 배포 옵션을 제공하는 중앙 집중화된 대화 상자를 활용할 수 있습니다. 또한 이 대화 상자에서는 스킨으로 사용할 수 있는 비디오 구성 요소를 인스턴스화하고 필요한 배포 매개 변수를 미리 입력할 수 있습니다.

스킨으로 사용할 수 있는 비디오 구성 요소
비디오 구성 요소를 사용하여 파일 크기를 크게 늘리지 않고도 비디오 프로젝트의 모양과 느낌을 쉽게 사용자 정의할 수 있습니다. 이 구성 요소는 스트리밍과 점진적 다운로드를 비롯한 다양한 배포 옵션과 함께 사용할 수 있습니다.

고급 비디오 인코더
새 마법사를 사용하여 비디오를 쉽게 가져오고, 인터레이스 제거, 고급 큐 포인트 제어 및 새 비디오 구성 요소 스킨과 같은 새 인코딩 옵션을 사용하여 비디오 품질과 모양을 향상시킬 수 있습니다.

고급 QuickTime 내보내기
고 급 QuickTime 내보내기 기능을 사용하여 SWF 파일로 게시된 내용을 QuickTime 비디오로 렌더링합니다. 중첩된 무비 클립이 포함된 컨텐츠, ActionScript™ 언어에서 생성된 컨텐츠, 그림자 및 흐림과 같은 런타임 효과를 내보낼 수 있습니다.

새 비디오 플레이어 구성 요소
새로운 자막 기능 뿐만 아니라 Flash 비디오(FLV) 컨텐츠 스트리밍 및 점진적으로 다운로드되는 FLV 파일의 스트리밍 지원을 포함하는 새롭게 최적화된 비디오 재생 구성 요소를 사용하여 비디오를 ActionScript 3.0 프로젝트에 통합할 수 있습니다.

풍부한 그리기 기능

강력한 모양 그리기
강력한 모양 그리기 툴을 사용하여 벡터 모양을 조작할 수 있습니다. 구부리기, 지우기, 왜곡하기, 기울이기, 조합 등 자연스럽고 직관적인 방법으로 벡터 모양을 쉽게 조작할 수 있습니다.

모양 프리미티브
파이 조각을 만들고 사각형 모퉁이를 둥글게 하고 내부 반지름을 정의하는 등의 작업을 쉽게 할 수 있습니다. 스테이지에서 모양 속성을 시각적으로 조절할 수 있습니다. 또한 포함된 JavaScript API를 사용하여 사용자 정의 모양을 만들 수 있습니다.

모양 프리미티브  모양 프리미티브

펜 툴
Adobe Illustrator에서 사용되는 것과 같은 펜 툴을 사용하여 정밀한 벡터 일러스트레이션을 만든 다음 Illustrator 키보드 단축키를 사용하여 베지어 조절점을 조작할 수 있습니다.

Adobe Illustrator에서 붙여넣기
Adobe Illustrator에서 일러스트레이션을 복사하여 정확도를 그대로 유지한 상태로 Flash CS3에 직접 붙여넣을 수 있습니다.

모양을 오브젝트로 표현
Adobe Illustrator®에서와 같은 방식으로 오브젝트 그리기 모드를 전환하여 모양을 오브젝트로 표현하고 간단히 시각화할 수 있습니다.

강력한 애니메이션 툴

필터 효과
그림자, 흐림, 광선, 경사, 그래디언트 경사, 색상 조정 등 내장된 필터 효과를 사용하여 한층 매력적인 디자인을 창출할 수 있습니다. 무비 클립 및 텍스트 필드에 적용한 효과는 Flash 플레이어에서 런타임 시 렌더링되므로 파일 크기를 최소화할 수 있습니다.

블렌드 모드
블렌드 모드를 사용하여 이미지가 서로 겹칠 때 이를 시각적으로 표현하는 고유한 시각 효과를 만듭니다. 블렌드는 런타임 시에 렌더링되고 오브젝트 이동에 따라 실시간으로 업데이트됩니다. Adobe Photoshop®에서 가져온 블렌드 모드는 Flash CS3에도 그대로 유지되며 편집도 가능합니다.

사용자 정의 속도 제어
위치, 회전, 크기 조절, 색상 및 필터를 독립적으로 제어하는 직관적인 그래프를 사용하여 애니메이션 오브젝트의 속도를 쉽고 정확하게 제어할 수 있습니다.

애니메이션 복사 및 붙여넣기
오브젝트에 적용된 애니메이션을 복사하고 다른 타임라인 오브젝트에 붙여넣을 수 있기 때문에 애니메이션 제작에 소요되는 시간이 크게 줄어 듭니다.

선택 레이어 내보내기
동일한 파일을 여러 가지 버전으로 테스트하고, 복잡한 레이아웃을 관리하고, 내보낼 레이어만 표시하고 나머지는 숨겨서 시간을 절약할 수 있습니다.

MP3 오디오 지원
MP3 파일을 가져와서 프로젝트에 오디오를 통합할 수 있습니다. 통합된 Adobe Soundbooth™를 사용하여 오디오 제작 경험 없이도 필요에 따라 파일을 쉽게 편집할 수 있습니다.

비트맵 캐싱
비트맵 캐싱을 사용하여 벡터 오브젝트를 불필요하게 다시 렌더링하는 것을 방지합니다. 런타임 시에 오브젝트를 비트맵으로 플래깅하여 비트맵으로 캐싱하고 벡터 데이터를 유지하여 언제든지 벡터로 다시 변환할 수 있습니다.

확장 가능한 구조
Flash API(응용 프로그래밍 인터페이스)를 활용하여 사용자 정의 기능이 추가된 확장 기능을 쉽게 개발할 수 있습니다.

프레임 기반 타임라인
키 프레이밍 및 트위닝과 같은 기존의 애니메이션 방식을 활용한 사용이 간편하고 쉽게 제어할 수 있는 프레임 기반 타임라인을 사용하여 자신의 디자인에 모션을 신속하게 추가할 수 있습니다.

추가 기능

9단계 라이브 렌더링 크기 조정
스테이지에서 오브젝트를 9단계로 크기 조정하여 미리 봄으로써 크기 조정 비헤이비어가 올바른지 확인하고 런타임 시 Flash 플레이어에 표시되는 모양을 정확하게 확인할 수 있습니다. 9단계 크기 조정 기능은 오브젝트의 크기를 왜곡 없이 지능적으로 조절합니다.

뛰어난 글꼴 렌더링
혁신적인 글꼴 렌더링 기술을 사용하여 텍스트 선명도와 가독성이 향상되었습니다. 렌더링 옵션과 앤티 앨리어스 기능을 사용하여 여러 가지 사용 방식에 따른 최적화가 가능합니다.

실행 취소/다시 실행 옵션
오브젝트별 실행 취소 모드 또는 문서별 실행 취소 모드로 전환할 수 있습니다.

사용자 정의 가능한 작업 영역
패널 및 도구 모음 설정을 포함한 사용자 정의된 작업 영역을 쉽게 만들고 저장하여 실행할 때마다 원하는 방식으로 작업할 수 있습니다.


개발 생산성 극대화

새로운 ActionScript 3.0 언어로 코드를 작성하고 편집할 수 있습니다. 완벽한 개발 환경으로 작업 효율을 높일 수 있습니다.

시간을 절약해 주는 코딩 툴

코드 축소
코드를 선택하거나 태그를 사용하여 보기에서 코드를 표시하지 않고 개발 중인 코드에만 보다 쉽게 집중할 수 있습니다.

주석 태그
간편한 메뉴 명령을 사용하여 코드의 전체 라인 또는 일부 코드에 주석 태그를 사용하거나 해제할 수 있습니다. 스크립트 편집기 기능은 Flash CS3와 Dreamweaver 모두 일관된 방식으로 사용할 수 있습니다.

코드 오류 탐색
구문 검사, 동영상 테스트, 프로젝트 테스트, 동영상 디버그 또는 게시와 같은 작업을 수행할 때 자동으로 생성되는 코드 오류 목록을 별도의 패널에서 볼 수 있습니다. 목록에서 오류를 클릭하면 코드 보기에 있는 해당 코드 섹션으로 직접 이동합니다.

ActionScript 개발

ActionScript 3.0 개발
성능, 유연성 및 보다 직관적이고 구조화된 개발 기능을 제공하는 새로운 ActionScript 3.0 언어를 사용하여 시간을 절약할 수 있습니다.

고급 디버거
더욱 향상된 유연성과 사용자 피드백 기능을 제공하고 Adobe Flex™ Builder™ 2 디버깅과도 일관적인 작업 방식을 제공하는 새롭고 강력한 ActionScript 디버거를 사용하여 컨텐츠를 테스트할 수 있습니다.

스크립트 도우미
자동 구문 완성 및 특정 작업의 매개 변수에 대한 설명이 포함된 스크립트 편집용 시각적 사용자 인터페이스인 스크립트 도우미를 활용하여 스크립트 작업을 쉽게 수행할 수 있습니다.

액션 패널
모바일 개발용 프로파일을 포함하여 액션 패널의 여러 언어 프로파일 중에서 선택하여 여러 가지 ActionScript 언어 버전을 쉽게 사용할 수 있습니다.

애니메이션을 ActionScript로 변환
타임라인 애니메이션을 개발자가 쉽게 편집, 재사용 및 활용할 수 있는 ActionScript 3.0 코드로 즉시 변환합니다. 하나의 오브젝트에서 다른 오브젝트로 애니메이션을 복사할 수 있습니다.

사용자 인터페이스 구성 요소
ActionScript 3.0의 새롭고 간편하며 쉽게 스킨으로 사용할 수 있는 인터페이스 구성 요소를 사용하여 인터렉티브한 컨텐츠를 만들 수 있습니다. 코딩할 필요 없이 그리기 툴을 사용하여 구성 요소의 모양과 느낌을 시각적으로 수정할 수 있습니다.

추가 기능

SWF 메타데이터
SWF 파일 형식의 메타데이터 속성을 사용하여 파일에 제목과 설명을 추가하고 인터넷 검색 엔진에서 SWF 파일을 쉽게 검색할 수 있게 해줍니다.


다른 Adobe 소프트웨어를 간편하게 사용

주요 Adobe 소프트웨어를 통합 사용하여 작업 시간을 줄이고 어플리케이션 간에 에셋을 쉽게 교환할 수 있습니다.

Adobe Photoshop 및 Illustrator 가져오기

Adobe Photoshop 가져오기
레이어와 구조를 보존한 상태로 Photoshop(PSD) 파일을 가져와서 통합한 다음 Flash CS3에서 편집할 수 있습니다. 고급 옵션을 사용하여 가져오기 프로세스 도중에 파일을 최적화하고 사용자 정의할 수 있습니다.

Adobe Illustrator 가져오기
레이어와 구조를 보존한 상태로 Illustrator(AI) 파일을 가져와서 통합한 다음 Flash CS3에서 편집할 수 있습니다. 고급 옵션을 사용하여 가져오기 프로세스 도중에 파일을 최적화하고 사용자 정의할 수 있습니다.

향상된 Adobe 소프트웨어 통합 성능

Adobe After Effects 통합
새로운 QuickTime 내보내기 기능을 사용하여 투명도 설정과 함께 개별 레이어를 내보내고 After Effects로 가져와서 세부 사항을 조작할 수 있습니다. After Effects에서 FLV를 직접 가져올 수 있습니다.

Adobe Premiere Pro 통합
새로운 QuickTime 내보내기 기능을 사용하여 투명도 설정과 함께 개별 레이어를 내보내고 Adobe Premiere Pro로 가져와서 세부 사항을 조작할 수 있습니다. Adobe Premiere Pro에서 FLV를 직접 가져올 수 있습니다.

큐 포인트 가져오기/내보내기
Adobe Premiere Pro, After Effects 및 Soundbooth에서 XML 기반 큐 포인트 데이터 파일을 가져와서 세부적인 인터렉티브한 비디오를 만들 수 있습니다. 큐 포인트를 사용하여 비디오 및 오디오 컨텐츠의 특정 지점에서 인터렉티브한 작업을 트리거할 수 있습니다.

Adobe Creative Suite 3의 일반 기능

Adobe 인터페이스
다른 Adobe Creative Suite 3 어플리케이션과의 일관성을 강조한 새롭고 효율적인 인터페이스를 활용하여 작업 과정을 향상시키고 스테이지 공간을 극대화하도록 인터페이스를 사용자 정의할 수 있습니다.

Adobe Device Central
Adobe Creative Suite 3 전체에 통합되어 있는 Adobe Device Central을 사용하여 인터렉티브한 Adobe Flash Lite™ 어플리케이션과 인터페이스를 포함하는 모바일 장치 컨텐츠를 디자인하고 미리 보고 테스트할 수 있습니다.

Adobe Bridge
프로젝트 파일, 어플리케이션 및 설정에 대한 중앙 집중화된 액세스 기능 및 XMP 메타데이터 태그 지정과 검색 기능을 제공하며, Adobe Creative Suite 3의 허브 역할을 하는 Adobe Bridge를 사용하여 작업을 보다 효율적으로 수행할 수 있습니다.


제공 범위 확장

인터넷이 가능한 데스크탑의 96%를 포함하여 전세계적으로 7억대 이상의 컴퓨터와 장치에 설치되어 있는 Adobe Flash Player에 컨텐츠를 배포할 수 있습니다.

Adobe Flash Player

Adobe Flash Player
인터넷이 가능한 데스크탑의 96% 이상을 포함하여 전세계적으로 7억대 이상의 컴퓨터와 장치에 설치되어 있는 Adobe Flash Player에 컨텐츠를 배포할 수 있습니다. Flash CS3를 사용하여 컨텐츠를 만들면 인터넷 뿐만 아니라 다양한 모바일 및 컨슈머 전자 제품에서도 자신의 디자인을 사용할 수 있습니다.

[원문] http://www.adobe.com/products/flash/features/

2007/04/23 12:50 2007/04/23 12:50
TAG. ,

Flash 9 PV 3D Example : 3d bumpmapped objects demo.

[FLASH/Reference Site]
출처 : unitzeroone

Really, you have never seen this kind of realtime 3D in flash before. And it's all made possible by PaperVision3D. Some time ago I have joined the Papervision core team, (Carlos Ulloa (Founder), and John Grden), but silently since I had nothing to commit yet. Ever since I joined there was one primary focus, and that was : Materials. In it's current revision papervision has no shading, and 3 materials. What I set out to do was to try and make PV3D more realistic, be a bit faster, and have some easy to use Materials in there.

Since we started Carlos and me have been coding away to be able to implement new Materials, and getting stuff cleaned up afterwards. Today we had planned a demo of some of the new materials. Due to business with other things the last weeks, I didn't really get there yet, but instead did a whole new material tonight. And I just have to post it. 3D Bumpmapping. This is first version I have of bumpmapping, and when I finally got to run, a warm feeling of happiness took hold of me. It's there. It's working....

3D Bumpmapping sphere with earth texture:
paperPlanet.jpg

3D Bumpmapping rhino, with the same texture, just to show, no tricks.
bumpmapRhino.jpg

(both might take some time to load, be patient, and make sure you have Flash 9).

The great thing about this kind of bumpmapping is that we can now partially support normal mapping (we can not support DOT3, yet). This trick, widely used, is applied to a low poly count object (like pv3d can handle), to make it look like a thousands of poly object. Since the bumpmapping has a constant cpu cost, this could mean a whole new level of 3d in Flash.
Read this article on normal mapping at wikipedia.. Unfortunatly, the examples above do not employ the trick, but I'm hoping for someone to supply me with a model, texturemap and normalmap soon! ;-)

Bumpmapping is only one of the new materials, there are more to come; expect more demo's soon. The idea is also to support light and material setups straight out of collada; you go into your favorite 3d package of choice, export collada, and import it by just loading it. We are hoping to get all this done before going out of beta.
This is just a preliminary version, so some things are wrong : the environmentmap isn't cubic. We have cubic environment maps, but I couldn't get them to work with this yet. So the reflection follows the camera at the moment, it's the best I could do on a short notice. We will get this in the new revision of PaperVision3D as soon as we have it all cleaned up. In that revision there will be a whole lot more material goodness.

If you want more info on this or have models, mail me at ralph@unitzeroone.com. Papervision is here:Papervision3d, be sure to join the mailing list.

To make this thing even more epic I'll do some credits
Thanks to the following people, who helped getting this done:
Carlos Ulloa : Always kind to take some time to help think, or change something, coding, PV3D Founder, and the one good enough to make it opensource.
John Grden: Technical and moral support!
Mr.Doob: Putting my mindset back on the right track.
Jim (blackpawn) Scott : RGB info on normal maps.

2007/02/19 18:48 2007/02/19 18:48

as3.0 : Library MovieClip addChild() Tutorial

[FLASH/Tutorials]




라이브러리에 있는 무비클립에 클래스를 연결(linkage) 시켜 화면에 표현하고 마우스 클릭으로 컨트롤 하는 샘플이다. 기존의 'attachMovie'를 이와 같이 클래스로 연결하여 'addChild()'로 표현이 가능해 졌다.
2.0에서의 클래스 연결과 'attachMovie()'를 사용하여 표현했던 것을 클래스와 클래스로 연결하는 방법이 새로 생겼다고, 아니 약간의 코드 룰이 변했다고 보면 될꺼 같다. 계속 들여다 보니 조금씩 코드들의 구조들이 익숙해진다. 설명은 아래 스크립트의 코멘트로 남겨두었다.


## LibraryClass.fla ##

## Timeline script ##

/*********************************************************
## Library MovieClip addChild() Tutorial ##
2007. 2. 4
author by jin_u
www.jinustudio.com/weblog
jin_u@jinustudio.com
**********************************************************/

사용자 삽입 이미지

기존의 #include name.as; 가 'Document class'로 변하여 참 편리하다. 플래시 파일 안에서는 특별한 코드를 넣지 않아도 되고 'Document class'를 수정하여 자동(오브젝트 패널 기능) 퍼블리시를 하여 쉽게 눈으로 확인도 가능하다.

## LibraryClass.as ##

package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.StageScaleMode;
//
public class LibraryClass extends MovieClip
{
var circleMC:MovieClip;
var isClick:Boolean = false;
//
public function LibraryClass ():void
{
  trace ("LibrarytClass ()");
  // 스테이지 사이즈를 고정시킨다.
  stage.scaleMode = StageScaleMode.NO_SCALE;
  // circle을 만든다.
  createCircle ();
}
//
private function createCircle ():void
{
  trace ("createCircle ()");
  // 라이브러리에 있는 circle 무비클립에 linkage로 등록한 LibraryClassCircle 클래스 호출
  // LibraryClassCircle 클래스에 의해 객체가 생성이 되며 무비클립으로서 작동을 하게 된다.

  var c:MovieClip = new LibraryClassCircle(stage.stageWidth/2, stage.stageHeight/2);
  circleMC = c;
  // 스테이지에 추가.
  addChild (circleMC);
  // 이벤트리스러 마우스 클릭 추가
  stage.addEventListener (MouseEvent.CLICK, doClick);
}
// LibraryClassCircle 의해 만들어진 무비클립을 play 및 stop 시킨다.
private function doClick (e:MouseEvent):void
{
  if (isClick)
  {
   circleMC.play ();
  }
  else
  {
   circleMC.stop ();
  }
  isClick = !isClick;
}
}
}

사용자 삽입 이미지


## LibraryClassCircle.as ##

package
{
import flash.display.MovieClip;
//
public class LibraryClassCircle extends MovieClip
{
public function LibraryClassCircle (_x:int, _y:int):void
{
  trace ("LibraryClassCircle ()");
  // 라이브러리에 있는 circle 무비클립의 좌표값 넘긴다.
  initialize (_x, _y);
}
private function initialize (_x:int, _y:int):void
{
  trace ("initialize ()");
  // 라이브러리에 있는 circle 무비클립의 좌표값을 설정한다.
  x = _x;
  y = _y;
}
}
}
2007/02/04 15:48 2007/02/04 15:48

Adobe Flash 9 Public Alpha :: AS 3.0 퍼포먼스 체크

[FLASH/Experiments]
File Format : Adobe Flash9 Public alpha




기존에 작업했던 addChild()와 removeChild()를 사용해서 움직임을 넣어 보았다. 단순한 코딩이지만 클래스화를 시켜보았다. 아직 코딩에 대해서는 익숙하지 않아서 그런지 이거 하나 만드는데도 시간이 몇시간 걸린다. 앞으로 더 열심히 해야 되겠다는 생각밖엔 안든다.

ps. 메소드가 설정되어있지 않다는 에러에 나를 민감하게 만든다.

## 타임라인 스크립트
/*
## addChilc, removeChild sample ##
2007. 2. 3
author by jin_u
www.jinustudio.com/weblog
jin_u@jinustudio.com
*/
// 스테이지 사이즈를 고정시킨다.

stage.scaleMode = StageScaleMode.NO_SCALE;
// 이벤트 리스터에 MOUSE_MOVE 추가
stage.addEventListener (MouseEvent.MOUSE_MOVE, doMouseMove);
//
var container:MovieClip = this;
var boxArr:Array = new Array();
var depth:int = 1;
//
boxArr.push (new Alpha9_CreateBox(container, depth));
//
function doMouseMove (e:MouseEvent):void
{
depth ++;
boxArr.push (new Alpha9_CreateBox(container, depth));
}

## .as 스크립트
package
{
import flash.display.*;
import flash.events.*;
import flash.text.*;
//
public class Alpha9_CreateBox extends Sprite
{
// 최초 변수 설정
var _scope:MovieClip;
var _depth:int;
var gap:int = Math.round(Math.random()*7)+1;
var xd:int = Math.round(Math.random()*2) ? 1:-1;
var yd:int = Math.round(Math.random()*2) ? 1:-1;
var sW:Number;
var sH:Number;
// 최상위 컨테이너 생성.
public function Alpha9_CreateBox (scope:MovieClip, depth:int):void
{
  trace ("createBox("+scope.name+", "+depth+")");
  _scope = scope;
 
_depth = depth;
  //
  sW = _scope.stage.stageWidth;
  sH = _scope.stage.stageHeight;
  // 텍스트 필드와 박스를 감싸는 객체 생성
  var sprite:Sprite = new Sprite();
  sprite.name = "sprite"+_depth;
  // _scope에 등록하여 화면에 표시한다.
  _scope.addChild (sprite);
  sprite.x = _scope.mouseX;
  sprite.y = _scope.mouseY;
  // box 객체 생성
  var box:Sprite = new Sprite();
  box.name = "box"+_depth;
  var size = Math.random()*50+50;
  box.graphics.beginFill (Math.random()*0xffffff, 100);
  box.graphics.drawRect (box.x-size/2, box.y-size/2, size, size);
  box.graphics.endFill ();
  // sprite에 box를 등록하여 화면에 표시한다.
  sprite.addChild (box);
  // 텍스트 생성
  createTextField (box);
  // 버튼 활성화
  sprite.buttonMode = true;
  // 텍스트 필드와 박스를 감싸는 객체인 sprite에 마우스 설정
  sprite.mouseChildren = false;
  // 마우스 클릭을 이벤트 리스너에 등록
  sprite.addEventListener (MouseEvent.CLICK, doClick);
  sprite.addEventListener (Event.ENTER_FRAME, doEnterFrame);
}
// 텍스트 필드 만들기 :: 박스 이름을 표시하기 위한 함수
public function createTextField (sprite:Sprite):void
{
  // 새로운 텍스트 포멧 생성 및 설정
  var tfm:TextFormat = new TextFormat();
  tfm.font = "Verdana";
  tfm.color = Math.random()*0xff;
  tfm.bold = true;
  tfm.size = 12;
  // 새로운 텍스트 필드 생성 및 설정
  var tf:TextField = new TextField();
  tf.name = "textField";
  tf.autoSize = TextFieldAutoSize.LEFT;
  tf.background = true;
  tf.selectable = false;
  // 텍스트 포멧 적용.
  tf.defaultTextFormat = tfm;
  tf.text = sprite.name;
  //
  tf.x = -tf.width/2;
  tf.y = -tf.height/2;
  // 텍스트 필드를 box에 등록하여 화면에 표시한다.
  sprite.addChild (tf);
}
// 박스 삭제.
public function doClick (e:MouseEvent):void
{
  trace ("doClick()", e.target.name);
  // 컨테이너에 추가된 sprite을 삭제.
  _scope.removeChild (DisplayObject(e.target));
}
// 스테이지에서 움직이게 설정
public function doEnterFrame (e:Event):void
{
  var t = e.target;
  t.x += (gap * -xd);
  t.y += gap * -yd;
  if (t.x < t.width/2)
  {
   xd *= -xd;
  }
  if (t.y < t.height/2)
  {
   yd *= -yd;
  }
  if (t.x > sW - t.width/2)
  {
   xd *= xd;
  }
  if (t.y > sH- t.height/2)
  {
   yd *= yd;
  }
}
}
}
2007/02/03 18:23 2007/02/03 18:23

as3.0의 addChild, removeChild 활용예제

[FLASH/Experiments]
File Format : Adobe Flash9 Public alpha


addChild와 removeChild의 개념을 익히기 위해서 만들어본 예제이다.
구조를 이해하기가 처음에는 힘들었지만 이제는 좀 이해가 된다. 타임라인(프레임) 코딩을 사용했는데 표현에 한계를 느끼게 하는 코딩이였다. 이제부터는 클래스화 시키는 코딩 습관을 들여야 겠다.

## TimeLine Actionscript ##
/*
## addChilc, removeChild sample ##
2007. 1. 24
author by jin_u
www.jinustudio.com/weblog
jin_u@jinustudio.com
*/
// 스테이지 사이즈를 고정시킨다.

stage.scaleMode = StageScale.NO_SCALE;
// stage에 떠블 클릭 활성화
stage.doubleClickEnabled = true;
// 떠블 클릭 이벤트 리스너에 적용
stage.addEventListener (MouseEvent.DOUBLE_CLICK, createBox);
// 최상위 컨테이너 생성.
var container:Sprite = new Sprite();
container.name = 'container';
// 타임라인에 컨테이너 등록하여 화면에 표시한다.
addChild (container);
// 뎁스 변수
var depth:int = 0;
// 박스 만들기
function createBox (e:MouseEvent):void
{
trace ("createBox()");
depth ++;
// 텍스트 필드와 박스를 감싸는 객체 생성
var sprite:Sprite = new Sprite();
sprite.name = "sprite"+depth;
// container에 등록하여 화면에 표시한다.
container.addChild (sprite);
sprite.x = stage.mouseX;
sprite.y = stage.mouseY;
// box 객체 생성
var box:Sprite = new Sprite();
box.name = 'box'+depth;
var size = Math.random()*50+50;
box.graphics.beginFill (Math.random()*0xffffff, 100);
box.graphics.drawRect (box.x-size/2, box.y-size/2, size, size);
box.graphics.endFill ();
// sprite에 box를 등록하여 화면에 표시한다.
sprite.addChild (box);
// 텍스트 생성
createTextFile (box);
// 버튼 활성화
sprite.buttonMode = true;
// 텍스트 필드와 박스를 감싸는 객체인 sprite에 마우스 설정
sprite.mouseChildren = false;
// 마우스 클릭을 이벤트 리스너에 등록
sprite.addEventListener (MouseEvent.CLICK, doClick);
}
// 텍스트 필드 만들기 :: 박스 이름을 표시하기 위한 함수
function createTextFile (sprite:Sprite):void
{
// 새로운 텍스트 포멧 생성 및 설정
var tfm:TextFormat = new TextFormat();
tfm.font = "Verdana";
tfm.color = 0xFF0000;
tfm.size = 10;
tfm.underline = true;
// 새로운 텍스트 필드 생성 및 설정
var tf:TextField = new TextField();
tf.name = "textField";
tf.autoSize = TextFieldAutoSize.LEFT;
tf.background = true;
tf.selectable = false;
// 모든 설정을 완료하고 텍스트를 넣기 전에 텍스트 포멧을 설정해야 텍스트 포멧이 적용된다.
tf.defaultTextFormat = tfm;
tf.text = sprite.name;
tf.x = -tf.width/2;
tf.y = -tf.height/2;
// 텍스트 필드를 box에 등록하여 화면에 표시한다.
sprite.addChild (tf);
}
// 박스 삭제.
function doClick (e:MouseEvent):void
{
trace ("doClick()", e.target.name);
// 컨테이너에 추가된 sprite을 삭제.
container.removeChild (DisplayObject(e.target));
}

## Output ##
Level #0: Frame=1
  텍스트:
  Movie Clip: Frame=0 Target="_level0.container"
  Movie Clip: Frame=0 Target="_level0.container.sprite1"
     Movie Clip: Frame=0 Target="_level0.container.sprite1.box1"
       Edit Text: Target="_level0.container.sprite1.box.textField"
Variable= Visible=true Text = <P ALIGN=\"LEFT\"><FONT FACE=\"Times New Roman\" SIZE=\"12\" COLOR=\"#000000\" LETTERSPA
         CING=\"0\" KERNING=\"0\">box</FONT></P>"
  Movie Clip: Frame=0 Target="_level0.container.sprite2"
     Movie Clip: Frame=0 Target="_level0.container.sprite2.box2"
       Edit Text: Target="_level0.container.sprite2.box.textField"
Variable= Visible=true Text = <P ALIGN=\"LEFT\"><FONT FACE=\"Times New Roman\" SIZE=\"12\" COLOR=\"#000000\" LETTERSPA
         CING=\"0\" KERNING=\"0\">box</FONT></P>"
  Movie Clip: Frame=0 Target="_level0.container.sprite3"
     Movie Clip: Frame=0 Target="_level0.container.sprite3.box3"
       Edit Text: Target="_level0.container.sprite3.box.textField"
Variable= Visible=true Text = <P ALIGN=\"LEFT\"><FONT FACE=\"Times New Roman\" SIZE=\"12\" COLOR=\"#000000\" LETTERSPA
         CING=\"0\" KERNING=\"0\">box</FONT></P>"

스테이지에 3번 떠블 클릭하여 객체를 생성 한 후, 오브젝트 리스트를 출력한 것이다. 최고 뎁스에 container 객체를 생성하였고 그 속에 spriteN를 만들어 boxN, textfield를 넣은 구조를 하고 있다. 위와 같은 구조를 하여야 각각의 독립적인 박스(spriteN)를 생성할 수 있게 된다.
2007/01/24 01:01 2007/01/24 01:01

Adobe Flash 9 Public Alpha :: AS 3.0 Realtime Sound Spectrum

[FLASH/Experiments]

기본 코드 참조 : 코랴
File Format : Adobe Flash9 Public alpha


사용자 삽입 이미지

private var url:String = "alpha9_as3Equalizer.mp3";
음악 파일은 압축파일에 없음. 자신이 가지고 있는 파일로 변경.

스콥을 루트 타임라인으로 해서 그려주는 형태(_scope.addChild(객체)가 되야 작동을 하게 된다?.
Flex2 에서 작성한 것과는 좀 틀린거 같다. 툴 환경 탓일려나?? 어쨌든, 타임라인이 존재하지 않는 객체(Sprite()) 같은 경우 자신에게 표현(Sprite.graphics)하기 위해서는 타임라인에 의존한다.

공부 겸해서 코랴님의 기본 코드로 약간의 변경을 하면서 만들어 보는데, 재미있네...
어리버리 시간 까먹은 것만 몇시간인가... 자꾸 작동이 안되서 이케저케하면서 내 사고방식으로 코드를 이해해버리는 나.. 좀더 전문적으로 익힐 필요가 있을꺼 같다. 기본 부터 다시!!
ㅡ,.ㅡa

// Timeline ActionScript
// 화면에 그려주기 위한 경로를 넘겨준다.
var snd:alpha9_as3Equalizer = new alpha9_as3Equalizer(this)

// as file
/*

* as 3.0 리얼타임 사운드 스펙트럼 예제

* 2006. 01. 24

* http://blog.naver.com/q3korea

// Adobe Flash 9 Public Alpha 변환작업 및 위치 변경 및 필터 효과 추가.
// 2007. 01. 22
// converting by jin_u,
http://www.jinustudio.com/weblog
*/

package
{
// package import
import flash.utils.*;
import flash.display.*;
import flash.media.*;
import flash.events.*;
import flash.filters.*;
import flash.net.URLRequest;
import flash.geom.ColorTransform;
// as3Equalizer 클래스
public class alpha9_as3Equalizer extends Sprite
{
private var mp3Sound:Sound;
private var mp3Channel:SoundChannel;
private var mp3Byte:ByteArray;
private var leftSprite:Sprite;
private var rightSprite:Sprite;
private var circleSprite:Sprite;
private var waveSprite:Sprite;
private var waveArr:Array;
private var xPos:Number;
private var w:Number=256;
private var bandW:Number;
private var mouseSprite:Sprite;
private var _scope:MovieClip;
private var stageHeight:Number=400
// 원곡 타이틀 : Don't Tell Me - Avril Lavigne.mp3
private var url:String = "alpha9_as3Equalizer.mp3";
// as3Equalizer 생성자
public function alpha9_as3Equalizer (scope:MovieClip)
{
  trace ("as3Equalizer()");
_scope = scope;
  var request:URLRequest = new URLRequest(url);
  mp3Sound = new Sound();
  mp3Byte = new ByteArray();
  waveArr = new Array();
  mouseSprite = new Sprite();
  mp3Sound.load (request);
  mp3Channel = mp3Sound.play();
  makeWave ();
  makeBar ();
  addEventListener (Event.ENTER_FRAME, progressListener);
}
// 사운드 웨이브 생성 메소드
private function makeWave ():void
{
  trace ("makeWave()");
  var hex:String;
  var b:Number;
  bandW = Math.round(w/256);
  for (var i:uint=0; i<512; i++)
  {
   b = i<256 ? i : i-256;
   xPos=i*bandW;
   waveSprite=new Sprite();
   if (i<256)
   {
    hex=rgb2hex(b,0, 255-b);
   }
   else
   {
    hex=rgb2hex(0,b, 255-b);
    xPos+=12;
   }
  // 파형 드로잉
   trace ("bandW =",bandW, "xPos = ", xPos);
   waveSprite.graphics.beginFill (Number(hex));
   waveSprite.graphics.drawCircle (15+xPos,1,bandW);
   waveSprite.graphics.endFill ();
   waveSprite.y=stageHeight/2
   _scope.addChild (waveSprite);
   waveArr.push (waveSprite);
  }
}
// 사운드 좌,우채널 바 생성 메소드
private function makeBar ():void
{
  trace ("makeBar()");
  // 좌측채널 바 드로잉
  leftSprite =  new Sprite();
  leftSprite.graphics.beginFill (0x3333CC,100);
  leftSprite.graphics.drawRect (5,-stageHeight/2, 10, stageHeight);
  leftSprite.graphics.endFill ();
  leftSprite.y = stageHeight/2;
  _scope.addChild (leftSprite);
  // 우측채널 바 드로잉   
  rightSprite = new Sprite();
  rightSprite.graphics.beginFill (0xCC0099,100);
  rightSprite.graphics.drawRect (535,-stageHeight/2, 10, stageHeight);
  rightSprite.graphics.endFill ();
  rightSprite.y = stageHeight/2;
  _scope.addChild (rightSprite);
}
// 사운드 진행 리스너 메소드
private function progressListener (event:Event):void
{
  // trace ("progressListener()");
  // leftPeak, rightPeak 속성값을 Shape에 적용

  leftSprite.scaleY=mp3Channel.leftPeak;
  rightSprite.scaleY=mp3Channel.rightPeak;
  // 재생중인 사운드의 바이트(mp3Byte) 값을 computeSpectrum 메소드로 반환
  flash.media.SoundMixer.computeSpectrum (mp3Byte, false, 0);
  var i:uint = 0;
  while (i<2048)
  {
   mp3Byte.position=i;
   var float:Number =mp3Byte.readFloat()*100;
   var arrPos:Number =Math.round(i/4);
   waveArr[arrPos].scaleY=(float);
   i=i+4;
   var filter:BitmapFilter = getBitmapFilter(Math.random()*2000000, float, float);
   var myFilters:Array = new Array();
   myFilters.push (filter);
  _scope.filters = myFilters;
  }
}
// 블러필터 효과를 적용하기 위한 함수
private function getBitmapFilter (cor:Number, bx:Number, by:Number):BitmapFilter
{
  var color:Number = cor;
  var alpha:Number = 0.8;
  var blurX:Number = bx;
  var blurY:Number = by;
  var strength:Number = 2;
  var inner:Boolean = false;
  var knockout:Boolean = false;
  var quality:Number = BitmapFilterQuality.HIGH;
  //
  return new GlowFilter(color,alpha,blurX,blurY,strength,quality,inner,knockout);

}
// 그라디언트 색상생성 메소드
private function rgb2hex (r:Number, g:Number, b:Number):String
{
  trace ("rgb2hex()");
  var rh:String = r.toString(16);
  var gh:String = g.toString(16);
  var bh:String = b.toString(16);
  rh.length == 1 ? rh = "0" + rh : null;
  gh.length == 1 ? gh = "0" + gh : null;
  bh.length == 1 ? bh = "0" + bh : null;
  return ("0x" + rh + gh + bh);
}
}
}

2007/01/22 00:47 2007/01/22 00:47

as3.0 사운드 스펙트럼 컨테스트 결과

[FLASH/Reference Site]
AS3 Sound Spectrum Contest Results!!

위 링크로 가시면 실행되는 스펙트럼을 볼 수 있습니다.
as3.0으로 사운드 스펙트럼 컨테스트를 했네요. 와~ 머찌다~

2006/12/25 04:04 2006/12/25 04:04

ActionScript 3.0 언어 참조

[FLASH/Reference]

ActionScript 3.0 언어 참조

2006/12/19 23:53 2006/12/19 23:53
TAG. ,

Flash Professional 9 ActionScript 3.0 프리뷰

[FLASH/Tutorials]

Flash Professional 9 ActionScript 3.0 브리뷰 살펴보기

2006/12/19 23:48 2006/12/19 23:48
TAG. ,