Adobe Flash Builder 4
사용자 삽입 이미지
Adobe® Flash® Builder™ 4(이전 Adobe Flex® Builder™) 소프트웨어는 소프트웨어 개발자가 오픈 소스 Flex 프레임워크를 사용하여 크로스 플랫폼 리치 인터넷 애플리케이션(RIA) 및 컨텐츠를 신속하게 개발할 수 있도록 고안되었습니다. 이 소프트웨어는 지능적인 코딩, 디버깅 및 시각적 디자인을 지원하고 개발 시간을 단축하고 애플리케이션의 성능을 더욱 향상시킬 수 있는 강력한 테스팅 툴을 제공합니다.
기능 보기: 새로운 주요 기능 전반적인 주요 기능 모두 강력한 코딩 툴 향상된 기능
MXML, Adobe ActionScript® 언어 및 CSS 편집기뿐만 아니라 구문 색상 표시, 구문 완성, 코드 축소, 인터랙티브한 단계별 디버깅, 일반적인 코드의 자동 생성 등 다양한 기능이 포함되어 있는 강력한 Eclipse™ 기반의 IDE를 사용하여 개발 작업을 수행할 수 있습니다.

풍부한 시각적 레이아웃 향상된 기능
내장된 구성 요소 라이브러리를 사용하여 유저 인터페이스의 레이아웃, 모양 및 작동 방식을 시각적으로 디자인하고 미리 볼 수 있을 뿐만 아니라, 내장되어 있는 Flex 프레임워크 구성 요소를 확장하거나 필요한 경우 새 구성 요소를 만들 수 있습니다. 인터랙티브한 Adobe Flash Catalyst™ 디자인 툴을 사용하여 만든 기능적인 애플리케이션 UI를 가져올 수 있습니다.

데이터 중심의 개발 새로운 기능
Java™, PHP, Adobe ColdFusion®, REST 및 SOAP 서비스를 검사하여 새로운 데이터/서비스 탐색기에서 메서드 및 속성을 표시할 수 있습니다. 또한 간편한 드래그 앤 드롭 방식으로 UI 구성 요소에 메서드를 바인딩할 수 있습니다.

인터랙티브한 데이터 시각화 향상된 기능
Flex 차트 라이브러리를 사용해 원하는 차트 유형을 드래그 앤 드롭한 다음 데이터 소스에 연결하여 데이터 대시보드 및 인터랙티브한 데이터 분석 기능을 만들 수 있습니다. 강력한 고급 데이터 그리드를 사용하면 사용자가 복잡한 데이터를 탐색할 수 있습니다.

스키닝 및 스타일링 향상된 기능
CSS 및 그래픽 속성 편집기를 사용하여 애플리케이션의 모양을 사용자 요구에 맞게 변경할 수 있습니다. 일반적으로 사용하는 속성을 신속하게 설정한 다음 디자인 뷰에서 결과를 미리 볼 수 있습니다. 새로운 테마 브라우저를 통해 사용 가능한 테마를 찾아 프로젝트에 적용할 수 있습니다.

Adobe Creative Suite 디자인 툴과의 통합 향상된 기능
Adobe Flash Professional, Illustrator®, Photoshop® 또는 Fireworks® 소프트웨어에서 만든 디자인 에셋을 가져오거나 Flash Catalyst에서 제작한 전체 애플리케이션 유저 인터페이스를 가져올 수 있습니다. Flash Professional과 Flash Builder 간의 새로워진 워크플로우를 통해 손쉽게 맞춤형 Flex 구성 요소를 가져와 업데이트할 수 있습니다.
Adobe AIR에 대한 기본 지원
AIR 애플리케이션을 구축, 디버그, 패키지 및 서명하는 데 필요한 모든 툴을 포함하고 있는 Flash Builder 4를 사용하면 Adobe AIR® 런타임에서 실행되는 애플리케이션을 개발할 수 있습니다. Adobe AIR를 사용하면 브라우저용으로 RIA를 구축할 때 사용하는 동일한 기법과 코드베이스를 사용하여 데스크탑용 RIA를 신속하게 구축할 수 있습니다.

코드 리팩토링 향상된 기능
신속하게 코드를 검색하거나 클래스, 메서드 또는 변수에 대한 모든 참조 이름을 변경하여 코드를 재구성할 수 있습니다. Flash Builder 4에는 이동 리팩토링 기능이 추가되었습니다.

강력한 테스팅 툴 향상된 기능 (Premium 에디션에만 해당)
메모리 사용 및 CPU 주기를 모니터링하고 분석하는 메모리 및 성능 프로파일러를 사용하면 애플리케이션 성능을 높일 수 있습니다. HP QuickTest Professional과 같은 자동화된 테스트 툴도 지원됩니다.

네트워크 모니터 새로운 기능 (Premium 에디션에만 해당)
로컬 Flex 애플리케이션과 백엔드 간에 전달되는 모든 데이터에 대한 상세한 감사 추적 내용을 생성하여 디버깅과 성능 튜닝을 지원합니다.

고급 데이터 서비스 향상된 기능
오픈 소스 BlazeDS를 사용하면 HTTP 기반의 고성능 바이너리 데이터 전송 방식을 추가하거나 Adobe LiveCycle® Data Services ES2 모듈을 사용하여 실시간 데이터 푸시 및 pub/sub 방식의 메시지 전송 서비스를 추가할 수 있습니다.

명령줄 빌드 새로운 기능 (Premium 에디션에만 해당)
새로운 명령줄 빌드 기능을 사용하면 빌드 프로세스를 자동화할 수 있습니다.

Flex 유닛 테스팅 통합 새로운 기능 (Premium 에디션에만 해당)
Flex 유닛 테스팅 프레임워크를 사용하여 기능 테스트를 자동화할 수 있습니다.

ASDoc 지원 새로운 기능
ASDoc을 사용하면 MXML 및 ActionScript 편집기에 주석을 표시할 수 있습니다.
2010/05/18 01:52 2010/05/18 01:52

TextInput과 TextArea의 속도 향상


한국 Adobe Flex 사이트의 블로그에 나와있는 힌트를 보고 실제로 한번 시도해 보았는데, 확실히 속도의 향상이 있네요.

"간단하게도 TextField의 alwaysShowSelection 이란 프로퍼티 값이 기본적으로는 false로 되어있는데 이것을 true로 바꿔주면 간단하게 해결됩니다."

지금까지 해결방법으로 제시되었던 것은 frame rate을 작게 바꾸는 것이었는데, 의외로 간단한 곳에 해결방법이 있었네요.

간단한 것이지만 샘플 코드를 원하시는 분들이 계시더군요.  몇몇 분들이 원하시는 것 같아서 이곳에 올려 봅니다. MXML 파일을 올립니다.


MyTextArea.mxml

<?xml version="1.0" encoding="utf-8"?>
<mx:TextArea xmlns:mx="http://www.adobe.com/2006/mxml"
    initialize="init()">
 <mx:Script>
  <![CDATA[
   private function init(): void {
    this.textField.alwaysShowSelection = true;
   }
  ]]>
 </mx:Script>
</mx:TextArea>

2010/03/10 22:21 2010/03/10 22:21
플렉스 유용한 단축키

- Ctrl+Tab : Open된 파일 이동

- Alt+Left,Right : Open된 파일 이동(좌,우)

- Ctrl+E : Open된 파일 이동

- Ctrl+L : 라인 이동

- Ctrl+K : 블록지정한 텍스트와 일치하는 텍스트 위치로 이동(아래)

- Ctrl+Shift+K : 블록지정한 텍스트와 일치하는 텍스트 위치로 이동(위)

- Alt+Up,Down : 현재 커서 위치의 코드 이동,또는 지정된 블록단위 코드 이동

- Ctrl+Q : 마지막으로 수정된 코드위치로 커서 이동

- Ctrl+Shift+T : 클래스 찾기

- Ctrl+Shift+R : 파일 찾기

- Ctrl+D : 현재 커서 위치의 라인 삭제

- Ctrl+O : 현재 파일의 속성,메소드 표시

- Ctrl+M : 현재페이지 최대화,이전크기로 전환

- Ctrl+F11 : Application 실행

- Ctrl+Shift+C : 블록지정한 텍스트 주석 처리

- Ctrl+Shift+D : CDATA 템플릿 삽입

- Ctrl+Shift+L : 단축키 목록 -> 사용가능한 모든 단축키 목록이 쭉~~~
2010/02/11 20:41 2010/02/11 20:41
사용자 삽입 이미지
사용자 삽입 이미지
2008/07/11 00:47 2008/07/11 00:47
플래시업로드 3종세트
2008/06/05 11:25 2008/06/05 11:25
HTML 소스에 보면 플래시 파일의 소스가 있을 겁니다.
자세히 보시면 <param> 이 설정된 부분에 다음과 같은 내용을 한 줄 추가 합니다.
<param name="wmode" value="transparent">

위의 태그는 플래시의 배경을 투명하게 해주는 태그입니다.
그런다음 레이어를 설정합니다.
<div> 에서 z-index를 swf 파일보다는 높게 잡아주면 됩니다.
z-index는 숫자가 높으면 높을수록 <div> 중에서 상단에 놓이게 됩니다.
swf 파일을 레이어삽입하지 않고 테이블에 삽입한다면 swf 파일은 z-index는 0 으로 잡힙니다.
2008/06/04 15:37 2008/06/04 15:37
fscommand ("fullscreen", "true");
fscommand ("allowscale", "false");
fscommand ("showmenu", "false");

첫프레임 액션에... 삽입
2008/06/04 15:36 2008/06/04 15:36

쇼핑몰 같은데서 많이 볼 수 있는 슬라이드
 Tween클래스가 있으니...enterFrame을 쓸 필요가 없어지네요.
 
import mx.transitions.Tween;
import mx.transitions.easing.*;
Stage.scaleMode = "noScale";
var container_mc:MovieClip = this.createEmptyMovieClip("container_mc", 0);
var image_mc:MovieClip = container_mc.createEmptyMovieClip("image_mc", 0);
var photo0:MovieClip = image_mc.createEmptyMovieClip("photo0", 4);
var photo1:MovieClip = image_mc.createEmptyMovieClip("photo1", 3);
var photo2:MovieClip = image_mc.createEmptyMovieClip("photo2", 2);
var photo3:MovieClip = image_mc.createEmptyMovieClip("photo3", 1);
var photo4:MovieClip = image_mc.createEmptyMovieClip("photo4", 0);
photo0.loadMovie("./photo/1.jpg");
photo1.loadMovie("./photo/2.jpg");
photo2.loadMovie("./photo/3.jpg");
photo3.loadMovie("./photo/4.jpg");
photo4.loadMovie("./photo/5.jpg");
var url_0:String = "http://www.naver.com";
var url_1:String = "http://www.daum.net";
var url_2:String = "http://www.empas.com";
var url_3:String = "http://www.yahoo.co.kr";
var url_4:String = "http://www.msn.co.kr";

var button_mc:MovieClip = container_mc.createEmptyMovieClip("button_mc", 1);
var bt0:MovieClip = button_mc.attachMovie("bt1", "bt0", 0, {_x:0, _y:0});
var bt1:MovieClip = button_mc.attachMovie("bt2", "bt1", 1, {_x:0, _y:27});
var bt2:MovieClip = button_mc.attachMovie("bt3", "bt2", 2, {_x:0, _y:54});
var bt3:MovieClip = button_mc.attachMovie("bt4", "bt3", 3, {_x:0, _y:81});
var bt4:MovieClip = button_mc.attachMovie("bt5", "bt4", 4, {_x:0, _y:108});
button_mc._x = 382;
button_mc._y = 22;

var photo_num:Number = 5; // 사진갯수
var WhoIsOn:Number = 0; // 현재의 위치를 나타내는 값
var slideTimer:Number; // 자동슬라이드를 위한 interval값
var interval_time:Number = 3000; // 슬라이드 지연 시간, 기본 3초설정
 

/* 자동 슬라이드 -------------------------------------------------*/
function makeSlide(){
 WhoIsOn = (WhoIsOn+1)%photo_num;
 var depth_num:Number = photo_num - 1;
 var target_mc:MovieClip = image_mc.getInstanceAtDepth(depth_num);
 
 image_mc["photo" + WhoIsOn].swapDepths(target_mc);
 var tw1:Tween = new Tween(image_mc["photo" + WhoIsOn], "_alpha", Strong.easeOut, 0, 100, 1, true);
 var tw2:Tween = new Tween(target_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);
 
 for(var i:Number = 0; i < photo_num; i++){
  button_mc["bt"+i%photo_num].gotoAndStop(1);
 }
 button_mc["bt"+WhoIsOn%photo_num].gotoAndStop(2);
}

/* 버튼에 마우스 오버 시-------------------------------------------*/
function showPhoto(){
 clearInterval(slideTimer);
 var depth_num:Number = photo_num - 1;
 var target_mc:MovieClip = image_mc.getInstanceAtDepth(depth_num);
 
 /*depth 테스트
 trace("depth 0 =>" + image_mc.getInstanceAtDepth(0));
 trace("depth 1 =>" + image_mc.getInstanceAtDepth(1));
 trace("depth 2 =>" + image_mc.getInstanceAtDepth(2));
 trace("depth 3 =>" + image_mc.getInstanceAtDepth(3));
 trace("depth 4 =>" + image_mc.getInstanceAtDepth(4));
 trace("-------------------------------------------");
 */
 image_mc["photo" + WhoIsOn].swapDepths(target_mc);
 var tw1:Tween = new Tween(image_mc["photo" + WhoIsOn], "_alpha", Strong.easeOut, 0, 100, 1, true);
 var tw2:Tween = new Tween(target_mc, "_alpha", Strong.easeOut, 100, 0, 1, true);
}
/* 버튼에 마우스 오버 시 showPhoto 함수를 실행-------------*/
function buttonAction(){
 for(var i:Number = 0; i < photo_num; i++){
  button_mc["bt"+i].onRollOver = function(){
   var my_num:Number = Number(this._name.substring(2));
   
   for(var j:Number = 0; j < photo_num; j++){
    this._parent["bt"+j].gotoAndStop(1);
   }
   this.gotoAndStop(2);
   
   if(_root.WhoIsOn != my_num){
    _root.WhoIsOn = Number(this._name.substring(2));
    _root.showPhoto();
   }
  }
 
  button_mc["bt"+i].onRelease = function(){
   var num:Number = this._name.substring(2);
   getURL(_root["url_" + num], "_parent");
  }
 }
 image_mc.onRollOver = function(){
  clearInterval(_root.slideTimer);
 }
 image_mc.onRollOut = function(){
  _root.slideTimer = setInterval(_root, "makeSlide", _root.interval_time);
 }
 
 image_mc.onRelease = function(){
  getURL(_root["url_" + WhoIsOn], "_parent");
 }
}
/* 처음 시작할 때의 설정----------------------------*/
function initSlide(){
 for(var i:Number = 0; i < photo_num; i++){
  image_mc["photo" + i]._alpha = 0;
 }
 image_mc.photo0._alpha = 100;
 button_mc.bt0.gotoAndStop(2);
 
 var tw1:Tween = new Tween(image_mc, "_alpha", Strong.easeOut, 0, 100, 2, true);
 tw1.onMotionFinished = function(){
  _root.slideTimer = setInterval(_root, "makeSlide", _root.interval_time);
 }
 buttonAction();
}
initSlide();
 
 
 

ver 8 에서만 가능합니다 -ㅅ-);
----------------------------------------------------------------------
 
 
 
 
2008/06/04 15:29 2008/06/04 15:29