과정
1. 5개의 임의의 jpg 사진을 flex의 현재 작업하고 있는 프로젝트 안의 img 폴더에 저장한다.
2. flash에서 디자인한 SWC파일을 flex로 export한다.
3. PhotoGallery calss 코딩
4. PhotoGalleryTest 코딩
1.검정 사각형(width:410 heght:320)을 그리고 F8, convert to symbol 팝업창이 뜨면 무비클립 이름을 (PhotoGallery) 적고 Export to ActionScript를 체크한 후 저장
2.검정 무비클립 안으로 들어가서 새로운 레이어를 만들고 회색 사각 무비클립 (instance name은 screen_mc ) 생성
3.오른쪽에 무비클립은 버튼 5개 생성 ( instance name은 btn_1 ~btn 5)
4.libray로 돌아가 PhotoGallery 무비클립의 linkage를 확인 한 후 swc파일로 export 저장 장소는 flex 의 작업 프로젝트 안으로 함
5.flex에서 확인
자세한 과정은 [CH8] WeatherWigetTest를 참고
Package: timo.widgets Superclass: Sprite
package timo.widgets
{
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.net.URLRequest;
public class PhotoGallery extends Sprite
{
private var clip: PhotoGalleryClip = new PhotoGalleryClip();
private var loader: Loader = new Loader();
public function PhotoGallery()
{
super();
this.setLayout();
this.addEvent();
this.defaultSetting();
}
private function setLayout(): void
{
this.addChild( this.clip );
this.clip.screen_mc.addChild( this.loader );
}
private function addEvent(): void
{
this.clip._btn0.addEventListener( MouseEvent.CLICK, onClick );
this.clip._btn1.addEventListener( MouseEvent.CLICK, onClick );
this.clip._btn2.addEventListener( MouseEvent.CLICK, onClick );
this.clip._btn3.addEventListener( MouseEvent.CLICK, onClick );
this.clip._btn4.addEventListener( MouseEvent.CLICK, onClick );
}
private function onClick( e: MouseEvent ): void
{
// 선택된 버튼 번호 :: 이름의 마지막 글자..
var id: String = e.currentTarget.name.substr( 4 );
this.loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onComplete );
// 이미지 호출하기
this.loader.load( new URLRequest( "./img/img" + id + ".jpg" ) );
}
private function onComplete( e: Event ): void
{
// 이미지 도착하면 ( 410, 320 )에 맞추기
this.loader.scaleX = this.loader.scaleY = 1;
// 가로로 강제로 맞추기
this.loader.width = 410;
this.loader.scaleY = this.loader.scaleX;
// 가로로 강제로 맞추었는데, 세로가 더 길경우, 세로로 강제로 맞추기
if( this.loader.height > 320 ){
this.loader.height = 320;
this.loader.scaleX = this.loader.scaleY;
}
// 중앙에 배치
this.loader.x = ( 410 - this.loader.width ) / 2;
this.loader.y = ( 320 - this.loader.height ) / 2;
}
private function defaultSetting(): void
{
}
} // class
} // package
// 저장방식 : euc-kr, utf-8
// 플래시는 기본적으로 unicode ( utf-8 지원 )
// 만약 파일이 euc-kr로 저장되어 있으면, System.useCodePage = true;
// var xml: XML = new XML( 문자열 );
// 동기식 예외처리 try catch
// fileIO 처리부분 :: 네트웍 따라.. 서버에 가 봤는데... 파일이 없어졌다..!!
// -->> 비동기식 예외처리 ::: addEventListener( ErrorEvent로 체크...
Superclass: Sprite
package
{
import flash.display.Sprite;
import timo.widgets.PhotoGallery;
public class PhotoGalleryTest extends Sprite
{
public function PhotoGalleryTest()
{
super();
var photo: PhotoGallery = new PhotoGallery();
// photo.dataProvider = xml 데이터
addChild( photo );
}
}
}
버튼을 누르면 화면에 알맞게 조절된 이미지가 등장한다.