'소스'에 해당되는 글 25건

  1. 2008/11/22 훌륭한 무료 소프트웨어로 내 PC를 토핑해볼까? (92)
  2. 2008/10/15 자바스크립트 복수 게시물 더보기/접기(more/less) 소스 (5)
  3. 2008/10/09 플래시, 외부 파일 데이터 가져오기 통신 샘플 소스 #2 (1)
  4. 2008/10/06 플래시, 외부 파일 데이터 가져오기 통신 샘플 소스 #1 (2)
  5. 2008/10/04 막대 그래프 만들기, 플래시 차트 소스
  6. 2008/10/01 학습용 배너 이미지 슬라이더 플래시 소스 (2)
  7. 2008/09/21 플래시 스터디, 세로형 네비게이션 만들기 (2)
  8. 2008/06/26 미리보기 이미지 썸네일 만들기 함수 PHP 소스 코드 (1)
  9. 2008/06/16 자유로운 메시지 교환을 위한 플래시톡(Flash Talk). (7)
  10. 2008/05/15 삽질할 수 있는 PHP로 이메일 보내기 샘플 소스 코드
  11. 2008/01/06 움직이는 막대그래프 자바스크립트 소스 (1)
  12. 2007/12/28 자바스크립트로 구성된 이미지 슬라이더입니다. (8)
  13. 2007/12/27 항상 위로 보이도록 해주는 유틸리티 Vitrite (Always On Top) (1)
  14. 2007/12/18 MYSQL 데이타베이스 백업과 복사, PHP소스
  15. 2007/12/13 현재 디렉토리(폴더) 파일 목록 보기, PHP소스
  16. 2007/11/30 블로그 주소가 바뀔때 필요한 간단한 자바스크립트 (7)
  17. 2007/11/08 플래시에서 책장 넘기는 효과 내는 학습 자료. (1)
  18. 2007/07/10 팩맨 플래시 게임 소스 2종 (1)
  19. 2007/07/09 추억의 스페이스 인베이더 게임과 게임 소스 (4)
  20. 2007/06/21 벽돌깨기 플래시 게임 소스코드 (5)
  21. 2007/05/30 초미니 플래시 테트리스 소스 코드 (965 바이트) (6)
  22. 2007/04/20 초보자를 위한 자바스크립트 이미지 슬라이더 소스코드 (1)
  23. 2007/04/11 [테터툴즈] 불편했던 디폴트 리퍼러 로그에 시간 보여주기 (4)
  24. 2007/04/10 초간단 php소스로 이쁜 블로그 만들기. (14)
  25. 2007/04/06 플래시(flash)로 만든 달력과 시계 3종 세트입니다.
무료라지만 유료로 써도 아깝지 않을 만큼 잘 만든 프리웨어 소프트웨어들이 생각보다 많고 이런 소프트웨어들만 가지고 내 PC를 토핑해도 불편하지 않을 정도입니다. 물론 새로운 소프트웨어의 사용법을 익히고 내 것으로 만드는 데 시간이 필요하긴 합니다. 무료 소프트웨어만으로 내 PC를 꾸미고 불편함 없이 PC를 사용하는 것이 가능할까요? 도전해 볼 만한 일입니다. 프리웨어 소프트웨어 중에는 소스 코드 또한 오픈 되어 있어 소프트웨어 개발에 관련된 분들에게 유익한 학습 자료가 될 수 있습니다.
아래 나열한 프리웨어 소프트웨어 리스트는 프로그램 이름, 홈페이지 주소, 프로그램 다운로드 링크 순으로 배치 되었습니다.

GIMP - 사진보정/이미지 저작툴
   http://www.gimp.org/
   http://downloads.sourceforge.net/gimp-win/gimp-2.6.2-i686-setup.exe
3D Box Shot Maker - 소프트웨어 상자 표지 디자인툴
   http://www.bosseye.com/boxshot/
   http://www.bosseye.com/dlfree/boxshot_setup.exe
7-Zip - 압축률이 높은 파일 압축 관리툴
   http://www.7-zip.org/
   http://downloads.sourceforge.net/sevenzip/7z457.exe
바닥 - 동영상 변환 유틸리티
   http://www.kipple.pe.kr/doc/badak/
   http://www.kipple.pe.kr/doc/badak/badak20081013.exe
빵집 - 국산 무료 파일 압축 관리툴
   http://www.bkyang.com/
   http://www.bkyang.com/download/bz3setup.exe
칼무리 - 국산 화면,웹페이지 캡쳐툴
   http://kalmuri.kilho.net/
   http://www.kilho.net/bbs/download.php?bo_table=temppds&wr_id=270&KaMuRi.exe
AbiWord - 워드 프로세서, 문서 편집툴
   http://www.abisource.com/
   http://www.abisource.com/download/
Alch Icon Suite - 윈도우즈 아이콘 추출, 편집툴
   http://alch.info
   http://www.brothersoft.com/alch-icon-suite-download-94853.html
AmitySource Userbar Generator - 가로형 막대 배너 제작툴
   http://www.amitysource.com/userbar_maker.php
   http://www.amitysource.com/distfiles/UBarGen2.2_en.exe
AnimPixels - 픽셀/비트맵 애니메이션 제작툴
   http://www.animpixels.com/
   http://www.animpixels.com/download.html
Aptana - 웹개발툴 IDE
   http://www.aptana.com/
   http://www.aptana.com/studio/download
Aqua Data Studio - 데이타베이스 관리툴 IDE
   http://www.aquafold.com/
   http://www.aquafold.com/downloads.html
Audacity - 사운드 녹음, 믹싱, 편집의 종합툴
   http://audacity.sourceforge.net/
   http://audacity.sourceforge.net/download/windows
Blender - 3D 애니매니션 툴
   http://www.blender.org/
   http://www.blender.org/download/get-blender/
   http://download.blender.org/release/Blender2.48a/blender-2.48a-windows.exe
CamStudio - 동영상 캡쳐 툴
   http://camstudio.org/
   http://www.camstudio.org/CamStudio20.exe
Code::Blocks - C++ 개발 툴 IDE
   http://www.codeblocks.org/
   http://www.codeblocks.org/downloads
Color Cop - 색상 추출 툴
   http://www.colorcop.net/
   http://www.colorcop.net/download
   http://www.colorcop.net/re/?download_colorcop
ColorPic - 색상 추출 툴
   http://iconico.com/colorpic/
   http://iconico.com/download.aspx?app=ColorPic
CPU-Z - PC 시스템 정보 조회 툴
   http://www.cpuid.com/cpuz.php
   http://www.cpuid.com/download/cpuz_148.zip
CutePDF Writer - 문서를 PDF 파일로 출력 및 변환 해주는 툴
   http://www.cutepdf.com/Products/CutePDF/writer.asp
   http://www.cutepdf.com/download/CuteWriter.exe
Cygwin - 윈도우즈에서 유닉스 환경 시뮬레이션 해주는 툴
   http://www.cygwin.com/
   http://www.cygwin.com/setup.exe
Digital Image Tool - 이미지 관리 및 변환 툴
   http://www.digitalimagetool.com/
   http://www.digitalimagetool.com/tank/digitalimagetoolinstaller1.3.exe
DrawPlus - 벡터 그래픽 애니메이션 제작 툴
   http://www.freeserifsoftware.com/software/DrawPlus/
   http://www.freeserifsoftware.com/commence-download.asp?CommenceDownload=drawplus&navproduct=drawplus&Check=True
DTaskManager - 윈도우즈 작업 관리자
   http://dimio.altervista.org/eng/
   http://dimio.altervista.org/stats/download.php?id=4
Easy Thumbnails - 이미지 섬네일 제작 및 변환 툴
   http://www.fookes.com/ezthumbs/
   http://www.fookes.com/ftp/free/EzThmb_Setup.exe
Eclipse - 통합 개발 환경 IDE
   http://www.eclipse.org/
   http://www.eclipse.org/downloads/
eMule - P2P 파일 공유 툴
   http://www.emule-project.net/
   http://www.emule-project.net/home/perl/general.cgi?l=1&rm=download
FastStone Image Viewer - 이미지 뷰어
   http://www.faststone.org/FSViewerDetail.htm
   http://www.faststone.org/FSViewerDownload.htm
FastStone Photo Resizer - 이미지 변환 툴
   http://www.faststone.org/FSResizerDetail.htm
   http://www.faststone.org/FSResizerDownload.htm
   http://www.faststone.org/DN/FSResizerSetup27.exe
Fedora - 리눅스 배포판
   http://fedoraproject.org/
   http://fedoraproject.org/en/get-fedora
Filezilla - 파일 FTP 전송 툴
   http://sourceforge.net/projects/filezilla/
   http://sourceforge.net/project/showfiles.php?group_id=21558
Firefox - 웹브라우져
   http://www.mozilla.or.kr/ko/products/firefox/
Flash Slide Show Maker Professional - 플래시 앨범을 슬라이드 쇼로 만들어주는 툴
   http://www.flash-slideshow-maker.com/
   http://www.flash-slideshow-maker.com/setup_flash_slideshow_maker.exe
FontHit Font Tools - 윈도우즈 글꼴/폰트 관리 툴
   http://www.download.com/FontHit-Font-Tools/3000-2316_4-10332216.html
   http://downloads.zdnet.com/abstract.aspx?docid=204056
FontInfo - 윈도우즈 글꼴/폰트 관리 툴
   http://www.xlmsoft.de/fontinfo.php
   http://www.xlmsoft.de/download/fisetup.exe
FontRenamer - 폰트에 사용된 이름들을 변경해주는 툴
   http://www.neuber.com/free/fontrenamer/
   http://www.webattack.com/dlnow/rdir.dll?id=105070
Foobar2000 - 음악/사운드 재생 툴
   http://www.foobar2000.org/
   http://www.foobar2000.org/?page=Download
FreeCommander - 윈도 탐색기 대체용 파일관리 툴
   http://www.freecommander.com/
   http://www.freecommander.com/fc_downl_en.htm
FreeMind - 무료 마인트맵 소프트웨어
   http://freemind.sourceforge.net/
   http://freemind.sourceforge.net/wiki/index.php/Download
Gadwin PrintScreen - 화면 캡쳐 툴
   http://www.gadwin.com/printscreen/
   http://www.gadwin.com/download/
GIMPShop - GIMP 를 포토샵 처럼 꾸며주는 툴
   http://thegimpshop.net/
   http://www.computerdefense.org/gimpshop/gimpshop_2.2.8_fix1_setup.exe
Google Chrome - 구글 웹브라우져
   http://www.google.com/chrome/
   http://www.google.com/chrome/eula.html
Google Docs - MS 오피스를 대체할 수 있는 구글 오피스 서비스
   http://docs.google.com/
Google Talk - 구글 메신져
   http://www.google.com/talk/intl/ko/
Handbrake - 강력한 DVD 리핑툴
   http://handbrake.fr/
   http://handbrake.fr/?article=download
HoverIP - 네트워크 IP 관리 툴
   http://www.hoverdesk.net/freeware.htm
   http://www.hoverdesk.net/dl/en/HoverIP.zip
ImageDiff - 픽셀단위의 이미지 비교 툴
   http://www.ionforge.com/products/
   http://www.ionforge.com/products/imagediff/imagediff.zip
ImageMagick - 명령어 방식으로 사용하는 그래픽 툴
   http://www.imagemagick.org/script/
   http://www.imagemagick.org/script/download.php
Inkscape - 일러스트레이터와 유사한 벡터 그래픽 편집기
   http://www.inkscape.org/
   http://downloads.sourceforge.net/inkscape/Inkscape-0.46.win32.exe
InsightPoint - 벡터 그래픽 편집기
   http://www.icytec.com/
   http://www.icytec.com/insightpoint/download/insightpoint-3.2.5.2-win.exe
IOBit Smart Defrag - 하드디스크의 조각모음 최적화 툴
   http://www.iobit.com/iobitsmartdefrag.html
   http://www.download.com/Smart-Defrag/3000-2094-10759533.html?part=dl-SmartDefr&subj=uo&tag=button
IrfanView - 이미지 뷰어 및 사운드, 동영상 재생기
   http://www.irfanview.com/
   http://www.irfanview.com/main_download_engl.htm
Jahshanka - 디자인 환경 통합 관리 툴
   http://jahshaka.org/
   http://jahshaka.org/Downloads
jEdit - 오픈소스 텍스트 에디터
   http://www.jedit.org/
   http://www.jedit.org/index.php?page=download
JR Screen Ruler - 윈도우즈 화면 길이/높이 측정 툴
   http://www.spadixbd.com/freetools/jruler.htm
   http://www.convertjunction.com/download/jruler.zip
Juice - 음악 재생 툴
   http://juicereceiver.sourceforge.net/
   http://prdownloads.sourceforge.net/juicereceiver/Juice22Setup.exe?download
KompoZer - 홈페이지 제작 공개 웹에디터
   http://kompozer.net/
   http://kompozer.net/download.php
LiveSwif Lite - 플래시 애니메이션 제작 툴
   http://www.download.com/LiveSwif-Lite/3000-6676_4-10276527.html
   http://www.zdnet.com.au/downloads/0,139024478,10276528s,00.htm
LOOXIS Faceworx - 2차원 사진을 이용해 3차원 얼굴 사진을 제작 하는 툴
   http://www.looxis.com/
   http://www.looxis.com/en/k75.Downloads_Bits-and-Bytes-to-download.htm
   http://www.looxis.com/download/LOOXIS_Faceworx_v1.exe
LS Screen Capture - 화면 캡쳐 툴
   http://www.linos-software.com/capture.html
   http://www.linos-software.com/FileDownload/SetupCapture.msi
Magnifier - 데스크탑 돋보기 화면 확대, 부분 캡쳐 툴
   http://iconico.com/magnifier/
   http://iconico.com/download.aspx?app=Magnifier
Media Coder - 오디오 및 비디오 일괄 변환 툴
   http://mediacoder.sourceforge.net/
   http://mediacoder.sourceforge.net/download.htm
Media Player Classic - 동영상 재생 툴
   http://sourceforge.net/projects/guliverkli/
   http://sourceforge.net/project/showfiles.php?group_id=82303
MPlayer - 동영상 재생 툴
   http://www.mplayerhq.hu/
   http://www.mplayerhq.hu/MPlayer/releases/win32/MPlayer-1.0rc2-gui.zip
NetBeans - 자바 통합 개발 환경 IDE
   http://www.netbeans.org/
   http://www.netbeans.org/downloads/index.html
Notepad++ - 프로그래밍 소스 편집기
   http://notepad-plus.sourceforge.net/
   http://notepad-plus.sourceforge.net/uk/download.php
Notepad2 - 텍스트 편집기
   http://www.flos-freeware.ch/notepad2.html
   http://www.flos-freeware.ch/zip/notepad2.zip
nPOP - POP3 이메일 클라이언트 툴
   http://www.nakka.com/soft/npop/index_eng.html
   http://www.nakka.com/soft/npop/download/npop109win32_EN.zip
ntop - 네트워크 모니터링 툴
   http://www.ntop.org/
   http://www.ntop.org/download.html
Open Capture - 화면 캡쳐 툴
   http://openproject.nazzim.net/opencapture.htm
   http://openproject.nazzim.net/download/opencapture_v1.3.5.exe
OpenOffice.org - MS 오피스 대체할 수 있는 오픈 오피스 툴
   http://www.openoffice.org/
   http://openoffice.or.kr/main/page.php?id=download
   ftp://ftp.daum.net/openoffice/localized/ko/3.0.0/OOo_3.0.0_Win32Intel_install_ko.exe
openSUSE - 노벨의 리눅스 배포판
   http://www.opensuse.org/en/
   http://software.opensuse.org/
Opera - 웹브라우져
   http://www.opera.com/
   http://www.opera.com/download/get.pl?id=31867&thanks=true&sub=true
Paint.NET - 그래픽 편집 툴
   http://www.getpaint.net/
   http://www.dotpdn.com/files/Paint.NET.3.36.zip
   http://fileforum.betanews.com/download/PaintNET/1096481993/1
ParticleDraw - 추상적인 이미지를 그려주는 툴
   http://www.anandavala.info/TASTMOTNOR/code/v5.1/ParticleDraw/SMNPD5_1.html
   http://www.anandavala.info/TASTMOTNOR/code/v5.1/ParticleDraw/SMN_v5.1_ParticleDraw.zip
PC Wizard - 하드웨어, 시스템 정보 제공 툴
   http://www.cpuid.com/pcwizard.php
   http://www.cpuid.com/download/pcw2008_v187.exe
photoWORKS - 디지털 이미지 수정 툴
   http://andojung.com/photoWORKS/
Picasa - 이미지 관리 툴
   http://picasa.google.com/
   http://picasa.google.com/picasa_thanks.html
PicPick - 캡쳐, 눈금자, 각도기, 색상추출 그래픽 툴
   http://picpick.wiziple.net/
   http://picpick.wiziple.net/features
Pidgin - 인스턴트 메신저
   http://www.pidgin.im/
   http://www.pidgin.im/download/
PrimoPDF - 인쇄물을 PDF 파일로 변환 해주는 툴
   http://www.primopdf.com/
   http://www.download.com/PrimoPDF/3000-10743_4-10264577.html?part=dl-10264577&subj=dl&tag=button
Project Dogwaffle - 애니메이션 제작이 가능한 그래픽 툴
   http://www.thebest3d.com/dogwaffle/free/
   http://www.thebest3d.com/dogwaffle/free/Dogwaffle_Install_1_2_free.exe
PuTTY - 텔넷/SSH 접속 툴
   http://www.chiark.greenend.org.uk/~sgtatham/putty/
   http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
Safari - 애플 웹브라우져
   http://www.apple.com/kr/safari/
   http://www.apple.com/kr/safari/download/
ScreenHunter - 화면 캡쳐 툴
   http://wisdom-soft.com/products/screenhunter_free.htm
   http://www.wisdom-soft.com/downloads/setupscreenhunterfree.exe
SharpDevelop - C#, VB.NET, Boo 프로젝트를 위한 개발 툴 IDE
   http://www.sharpdevelop.net/OpenSource/SD/
   http://www.sharpdevelop.net/OpenSource/SD/Download/
SketchUp - 3D 그래픽툴
   http://sketchup.google.com/
   http://sketchup.google.com/download/
SmoothDraw NX - freehand 드로잉/스케치 그래픽 툴
   http://www.smoothdraw.com/product/freeware.htm
   http://www.smoothdraw.com/sdnx/SmoothDrawNXSetup.exe
Sothink SWF Catcher - 플래시 파일 추출/저장 툴
   http://www.sothink.com/product/swfcatcher/ie/
   http://www2.sothink.com/download/swfcatcher_IE.zip
SPRAY vector generator - Vector sceleton creation tool, 이미지 제작 툴
   http://xaraxtv.at.tut.by/
   http://www.download.com/3001-2191_4-10623896.html
Spread32 - 스프레드시트
   http://www.byedesign.co.uk/
   http://www.byedesign.co.uk/s32/spre32en.zip
SQLTools - 오라클 관리 툴
   http://www.sqltools.net/
   http://www.sqltools.net/downloads.html
SQLTools for ORACLE - 오라클 관리 툴
   http://heiya.webice.kr/
   http://heiya.webice.kr/PDS/SQLTools.zip
SQuirreL SQL Client - 자바 기반 데이타베이스 관리 툴
   http://www.squirrelsql.org/
   http://www.squirrelsql.org/#installation
Starter - 시작 프로그램, 프로세서, 서비스 관리 툴
   http://codestuff.tripod.com/products_starter.html
   http://codestuff.tripod.com/Starter_English.zip
Stickies - 포스트잇, 윈도우즈 메모장 툴
   http://www.zhornsoftware.co.uk/stickies/
   http://www.zhornsoftware.co.uk/stickies/download.html
Synfig Studio - 2D 애니메이션 툴
   http://www.synfig.com/
   http://www.synfig.com/download/
Tail for Win32 - 로그 파일 모니터링 툴
   http://tailforwin32.sourceforge.net/
   http://sourceforge.net/projects/tailforwin32
Terragen - 지형 제작 툴
   http://www.planetside.co.uk/terragen/
   http://www.planetside.co.uk/terragen/win/downloadwin.shtml
The Font Thing - 윈도우즈 트루타입 폰트 관리 툴
   http://members.ozemail.com.au/~scef/tft.html
   http://members.ozemail.com.au/~scef/tft/tftdownloadmain.html
The KMPlayer - 동영상 재생 툴
   http://www.kmplayer.com/
   http://www.kmplayer.com/forums/showthread.php?t=4094
Thunderbird - 이메일 클라이언트 프로그램
   http://www.mozilla.com/en-US/thunderbird/
   http://www.mozilla.com/products/download.html?product=thunderbird-2.0.0.18&os=win&lang=ko
Tomahawk PDF+ - PDF 파일 생성 툴
   http://www.nativewinds.montana.com/software/tpdfplus.html
   http://www.nativewinds.montana.com/downloads/TPDFPlus.zip
TortoiseSVN - SVN 클라이언트 툴
   http://tortoisesvn.tigris.org/
   http://tortoisesvn.net/downloads
TouchArt Sampler - 3D 아트워크 조절 및 실행 툴
   http://www.derivativeinc.com/TouchArt/TouchArtSampler.asp
   http://www.derivativeinc.com/Temp/TouchArtSampler017.exe
Ubuntu - 리눅스 배포판
   http://www.ubuntu.com/
   http://www.ubuntu.com/getubuntu/download
uMark Lite - 워터마크 삽입 툴
   http://www.uconomix.com/Products/uMark/
   http://www.uconomix.com/Downloads.aspx
UnFREEz - 실행창 닫기, 컴퓨터 종료 툴
   http://www.whitsoftdev.com/unfreez/
   http://www.whitsoftdev.com/files/unfreez.zip
uTorrent - P2P 파일 공유 툴
   http://www.utorrent.com/
   http://www.utorrent.com/download.php
VirtualDub - 동영상 편집 및 형식 변환 툴
   http://www.virtualdub.org/
   http://virtualdub.sourceforge.net/
VirtuaWin - 윈도우즈 가상 데스크탑 관리 툴
   http://virtuawin.sourceforge.net/
   http://virtuawin.sourceforge.net/downloads.php
VLC Media Player - 동영상 재생 툴
   http://www.videolan.org/vlc/
   http://www.videolan.org/vlc/download-windows.html
Winamp - 음악 파일 재생 툴
   http://www.winamp.com/
   http://www.winamp.com/player
WinTail - 로그 파일 모니터링 툴
   http://www.baremetalsoft.com/wintail/
   http://www.baremetalsoft.com/wintail/download.php?p=p
X-Chat - IRC 채팅 툴
   http://silverex.info/
   http://silverex.info/download/
Xnews - 뉴스리더 툴
   http://xnews.newsguy.com/
   http://xnews.newsguy.com/#download
XnView - 이미지 관리 툴
   http://pagesperso-orange.fr/pierre.g/xnview/enxnview.html
   http://pagesperso-orange.fr/pierre.g/xnview/endownload.html

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 2012/02/01 15:15  댓글주소  수정/삭제  댓글쓰기

    감사합니다 ㅎㅎ~

  2. ㅇ-ㅇ 2011/05/29 22:53  댓글주소  수정/삭제  댓글쓰기

    화면캡쳐프로그램은
    오픈캡처라는 프로그램이 아무리봐도 진리인거 같네요.
    국산 프로그램 오픈캡처 한번써보세요 ~

  3. 토실 2010/07/09 14:21  댓글주소  수정/삭제  댓글쓰기

    읽어 내려가면서 입이 떡! 벌어졌습니다.
    블로그에 비공개로 담아갈께요!!

  4. 뿌니느엘 2010/06/06 00:10  댓글주소  수정/삭제  댓글쓰기

    화면 캡처툴을 받으려는데 영어... <-
    그래서 좀 아쉬웠지만 대충 받아보는중입니다 ★
    정보 감사합니다

  5. 레나 2010/05/28 13:25  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다. 참고할게요.

  6. 비밀방문자 2010/05/18 09:54  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  7. 감사합니다. 2010/05/09 22:49  댓글주소  수정/삭제  댓글쓰기

    유용한 정보로군요 ^^ 담아갑니다~

  8. 좋네용 2010/05/08 07:46  댓글주소  수정/삭제  댓글쓰기

    출처 밝히고 담아갑니다^^

  9. 골목대장 2010/04/28 20:07  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다. 출처밝기고 담아갑니다.^^

  10. 보아쓰 2010/04/17 03:13  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사해요. 퍼갑니다.~~

  11. 감사요. 2010/04/16 20:59  댓글주소  수정/삭제  댓글쓰기

    좋은자료 보고 퍼갑니다.^^

  12. 감사합니다 2010/04/16 18:02  댓글주소  수정/삭제  댓글쓰기

    감사해요 퍼감니다~

  13. 조군 2010/04/16 17:49  댓글주소  수정/삭제  댓글쓰기

    출처 밝히고 퍼갑니다^^

  14. riri 2010/04/14 08:55  댓글주소  수정/삭제  댓글쓰기

    블로그에 출처포함, 트랙백 걸어서 담아갑니다- 좋은 정보 감사합니다!

  15. 담아갑니다. 2010/04/13 21:18  댓글주소  수정/삭제  댓글쓰기

    출처 밝히고 퍼가도록 하겠습니다.

  16. 이승구 2010/03/31 14:22  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합해요. 개인 블로그에 담아 갈게요..

  17. 박종식 2010/03/31 09:19  댓글주소  수정/삭제  댓글쓰기

    개인 참고용으로 퍼갈께요~~ 출처는 꼬옥 남길께요~~ 감사합니당~

  18. 그림을그리다[브라이트] 2010/03/29 01:07  댓글주소  수정/삭제  댓글쓰기

    담아갈게요. 그리고 제가 아는 분들에게도 유용한 정보를 알려드려야 겠네요^^

  19. 진룡 2010/03/26 13:40  댓글주소  수정/삭제  댓글쓰기

    와우..멋지네욤 -ㅁ- 저도 좀 담아갈게용~ ㅎ
    출처는 당욘히 밝히고 ㅎㅎ

  20. 롸잇놔우 2010/03/20 03:30  댓글주소  수정/삭제  댓글쓰기

    담아갈게요 ^^

  21. ㅁㅎ 2010/02/09 22:05  댓글주소  수정/삭제  댓글쓰기

    근데 저기있는 파티클드로우는 추상적이미지보다는 물리학 예제 제작도구 쯤으로 봐야할듯 ?

  22. 일어나 2010/02/05 21:00  댓글주소  수정/삭제  댓글쓰기

    유익한정보여서 컴퓨터를이제 입문하려는데필요할듯싶어서요.퍼갑니다감사

  23. 일어나 2010/02/05 20:55  댓글주소  수정/삭제  댓글쓰기

    아주유익한정보감사해요

  24. 2010/02/05 18:40  댓글주소  수정/삭제  댓글쓰기

    감사합니다~

  25. 비밀방문자 2010/02/03 11:40  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  26. 2010/01/28 11:26  댓글주소  수정/삭제  댓글쓰기

    고맙습니다. 담아감니다.

  27. tflb50482000 2010/01/26 14:19  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사드립니다. 개인 참고용입니다. 담아갈께요.

  28. 메이트 2010/01/10 20:04  댓글주소  수정/삭제  댓글쓰기

    담아가는 방법을 몰라서 복사해갈게요; 출처 꼭 써놓겠습니다

  29. 메이트 2010/01/10 20:02  댓글주소  수정/삭제  댓글쓰기

    네이버 블로그에 담아갈게요^^

  30. 비밀방문자 2010/01/10 13:30  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  31. 유리 2010/01/10 11:10  댓글주소  수정/삭제  댓글쓰기

    감사히 담아가겠습니다

  32. 노구리 2010/01/10 11:06  댓글주소  수정/삭제  댓글쓰기

    짱입니다

  33. 엑스퍼 2010/01/08 13:29  댓글주소  수정/삭제  댓글쓰기

    개인 참고용으로 퍼갑니다. 출처도 꼭 밝힐게요

  34. 마갱 2009/12/28 14:48  댓글주소  수정/삭제  댓글쓰기

    와우!
    이렇게 좋은 정보가 있다니 감사합니다.^^

  35. 자달 2009/12/02 10:18  댓글주소  수정/삭제  댓글쓰기

    담아갑니다^^ 고맙습니다.

  36. kyks 2009/12/02 08:52  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 잘 보구, 출처 포함 퍼갈게요.. 노력에 감사의 한표~

  37. baljern 2009/11/12 02:55  댓글주소  수정/삭제  댓글쓰기

    깔끔하게 정리하셨군요.
    퍼갑니다~ 고맙습니다! ^^

  38. 좋아 2009/10/25 20:00  댓글주소  수정/삭제  댓글쓰기

    아 정말 좋은 정보네요 ㅎ
    감사합니다

  39. 이윤경 2009/10/25 12:05  댓글주소  수정/삭제  댓글쓰기

    담아가여

  40. 별바라기 2009/10/19 08:00  댓글주소  수정/삭제  댓글쓰기

    감사합니다. 담아 갈께요.

  41. 김동욱 2009/10/19 05:06  댓글주소  수정/삭제  댓글쓰기

    쓰는거 두개 나왔다고 되게 기뻐하는중(푸바,바닥...;;;)
    생각보다 무료 소프트웨어의 종류가 엄청나군요
    필요한것도 좀 보이고...잘 보고 찾아가서 쓰겠습니다
    감사합니다

  42. blueprinsess 2009/10/19 01:36  댓글주소  수정/삭제  댓글쓰기

    좋은정보 너무 감사드립니다...
    담아갑니다...

  43. 러블리 2009/10/13 21:13  댓글주소  수정/삭제  댓글쓰기

    네이버 블로그에 담아갑니다~* 감사합니다~*

  44. 비밀방문자 2009/10/05 16:54  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  45. 길손 2009/10/05 15:37  댓글주소  수정/삭제  댓글쓰기

    정말 좋은 글이네요! 감사

  46. 비밀방문자 2009/09/27 10:46  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  47. SO홀릭 2009/09/22 08:36  댓글주소  수정/삭제  댓글쓰기

    파코*에 다른 분이 소개해준 글 보고 보러 왔습니다.
    게중에 몇가지 큰 도움이 되었습니다.^^
    괜찮다면 블로그에 출처 표기 후 옮겨 가도 될런지요^^

  48. jami 2009/09/18 13:18  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 참고합니다.
    담아갑니다(http://docs.springnote.com/pages/4248351)

  49. 비밀방문자 2009/09/09 13:44  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  50. 김정민 2009/08/30 19:37  댓글주소  수정/삭제  댓글쓰기

    동영상 변환 프로그램 중 바닥 대신에 외제 Free Video Converter 도 괜찮고 오히려 안정적이고 속도도 빨랐던것 같습니다.
    http://www.koyotesoft.com
    위 주소로 가면 멀티미디어 기반 무료 프리웨어 소프트웨어가 널려있습니다.

  51. 비밀방문자 2009/08/25 16:46  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  52. 제강 2009/08/17 15:46  댓글주소  수정/삭제  댓글쓰기

    ^^ 퍼갈게요 감사합니다

  53. 다니 2009/07/14 16:24  댓글주소  수정/삭제  댓글쓰기

    유용한 정보네요.
    담아가겠습니다. ^^

  54. 숲속얘기 2009/07/14 10:13  댓글주소  수정/삭제  댓글쓰기

    전 엔지니어인데도 왜 김프가 그렇게 어렵죠? 몇번깔았다 지웠습니다. 오픈캔버스 쓰고 있습니다.

  55. 비밀방문자 2009/07/02 23:06  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  56. 리버스 2009/06/26 21:55  댓글주소  수정/삭제  댓글쓰기

    유용하네요. 담아가겠습니다.

  57. 인츠유 2009/06/16 18:19  댓글주소  수정/삭제  댓글쓰기

    우와! 정말 유용한 정보네요!
    이거 내용 개인 블로그에 출처 밝히고 퍼갈게요!

  58. 님아 2009/06/16 17:48  댓글주소  수정/삭제  댓글쓰기

    짱임

  59. 최고 2009/05/26 16:36  댓글주소  수정/삭제  댓글쓰기

    담아갑니다~

  60. 짱이야.. 2009/05/26 14:28  댓글주소  수정/삭제  댓글쓰기

    유용한 정보 감사합니다 ^^
    잘쓰겠습니다~ 퍼가요 ^^

  61. 가을사랑 2009/05/22 14:32  댓글주소  수정/삭제  댓글쓰기

    유용한 정보 퍼갑니다.
    감사합니다.

  62. 북극의빛 2009/05/12 19:41  댓글주소  수정/삭제  댓글쓰기

    이스트소프트 계열 프로그램도 좋지요~

    • 김정민 2009/08/30 19:39  댓글주소  수정/삭제

      이스트소프트사 제품은 개인 및 가정을 제외한 나머지 사용자들은 사용임으로 주의하시고 사용하셔야하며 만약 회사나 관공서등지의 라이센스 구입 대상 사용자분이 잘못 사용하다가는 불법복제로 걸립니다.

  63. 크리쓰 2009/03/27 14:51  댓글주소  수정/삭제  댓글쓰기

    정말 유용한 정보로군요. 감사합니다 ^^

  64. 임종걸 2009/03/23 12:44  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다!!!...유용한 자료!!
    담아갈게요!

  65. 여혜인 2009/03/12 10:03  댓글주소  수정/삭제  댓글쓰기

    좋은 정보 감사합니다.
    제 네이버 블로그에 담아갈게요^^;;
    출처는 밝히겠습니다.^^ 감사해요

  66. 낭만마술사 2009/03/12 09:10  댓글주소  수정/삭제  댓글쓰기

    유용하게 쓸수 있는 것들이 많네요^^ 담아갈께요^-^/

  67. 초보2 2009/03/12 08:41  댓글주소  수정/삭제  댓글쓰기

    잘보고 담아갑니다

  68. 재핑 2009/03/11 17:28  댓글주소  수정/삭제  댓글쓰기

    좋은정보 잘보고 갑니다

  69. Y 2009/03/11 10:54  댓글주소  수정/삭제  댓글쓰기

    저는빵집을이용해본적이있어요~
    꽤괜찮았었죠ㅋ

  70. SoUseful 2009/03/11 10:47  댓글주소  수정/삭제  댓글쓰기

    캬 이렇게 좋은 유용한 정보를 올리시다니...

    죄송하지만 제 블로그에 담아갈도 될런지...

  71. 초보 2009/03/11 09:14  댓글주소  수정/삭제  댓글쓰기

    정말 좋은 자료네요~ 담아갑니다.

  72. 감사합니다. 2009/03/05 17:25  댓글주소  수정/삭제  댓글쓰기

    링크 담아가요~

  73. 타블로 2009/02/26 09:09  댓글주소  수정/삭제  댓글쓰기

    담아갑니다...

  74. 감사해요. 2009/02/15 15:11  댓글주소  수정/삭제  댓글쓰기

    이걸 다 정리하시다니 대단해요. 수고가 많으셨어요. 좋은 정보 감사합니다. 출처 남기고 담아갑니다.^^

  75. i 2009/02/15 14:33  댓글주소  수정/삭제  댓글쓰기

    퍼갑니다. 출처는 남기고요.

  76. 담아갑니다 2009/02/15 13:08  댓글주소  수정/삭제  댓글쓰기

    링크 스크랩으로 담아갈께요~~

  77. 데슈 2009/02/13 12:14  댓글주소  수정/삭제  댓글쓰기

    좋은글 담아갑니다.

  78. 감사 2009/02/07 03:01  댓글주소  수정/삭제  댓글쓰기

    좋은 내용 감사합니다..담아갈께요.

  79. 퍼갑니다 2009/02/06 14:20  댓글주소  수정/삭제  댓글쓰기

    좋은글 담아갑니다.
    감사합니다.

  80. jjsm0 2009/02/06 09:30  댓글주소  수정/삭제  댓글쓰기

    좋은정보 감사합니다. 굿 입니다
    개인 블로그에 담아 갈게요..

  81. 고고룽 2009/02/04 13:41  댓글주소  수정/삭제  댓글쓰기

    고맙습니다!! 아주 좋은 정보였습니다

  82. 비밀방문자 2009/01/20 17:19  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  83. kaingwoo 2009/01/20 11:42  댓글주소  수정/삭제  댓글쓰기

    제 개인 블로그에 담아갈게요 출처는 남기겠습니다.

  84. windows 2009/01/18 16:45  댓글주소  수정/삭제  댓글쓰기

    저 이글이요
    매우 감사합니다.
    그런데 출처밝히고 퍼갈깨요..

  85. 파초 2008/12/11 01:44  댓글주소  수정/삭제  댓글쓰기

    winamp도 좋지만, 요즘은 winamp 닮은 꼴인 AIMP2가 더 맘에 들더군요 :)

  86. snowall 2008/11/22 21:00  댓글주소  수정/삭제  댓글쓰기

    http://osswin.sourceforge.net 에 가보시면 좀 더 다양한 프로그램이 있습니다.

  87. wmino 2008/11/22 18:07  댓글주소  수정/삭제  댓글쓰기

    무지하게 좋은 내용일 듯 한데.... 각 링크마다 어떤 소프트웨어인지 설명이 없어서....ㅠㅠ 이거 뭐 다 들어가볼 수도 없고.ㅠㅠㅠ

    • 웹프로그래머 2008/11/24 08:50  댓글주소  수정/삭제

      정리하는 것이 생각보다 시간이 많이 걸리는 일이더군요. 어째꺼나 다음 기회에 이미지와 설명도 포함된 좀더 업그레이드된 리스트를 다시 올리도록 하겠습니다.^^

자바스크립트로 만든 더보기/접기(more/less)  소스입니다. 본 소스는 여러개의 게시물 중에 지정된 제한 높이 보다 긴 게시물만 더보기/접기 버튼을 일괄적으로 붙여주고 있습니다. 게시물 샘플 중에는 이미지가 포함된 것도 있고 플래시가 포함된 것도 있습니다. 구현 원리는 레이어 속성 중에 offsetHeight 속성으로 해당 레이어의 높이를 확인할 수 있고 이와 제한 높이를 비교해서 제한 높이 이외의 내용은 숨겨주고 바로 밑에 더보기 버튼을 붙여 주는 것입니다. 이는 서버 스크립트와 조합해서 블로그나 게시판에 적용해볼 수 있습니다. 이를 체험할 수 있는 하단에 제시된 HTML 소스의 실행화면은 아래 링크를 통해 확인할 수 있습니다. 자바스크립트 입문자 여러분들은 본 소스를 자신에 맞게 수정 개선해보시면 자바스크립트 학습에 도움이 될 것입니다.

[실행화면 확인 링크]
http://www.hompydesign.com/javascript/more/more_less.html

[더보기/접기 HTML 소스]
<HTML>
<HEAD>
<TITLE>More/Less TEST</TITLE>
<script type='text/javascript'>
<!--
var content_height = 112;
var content_idx_array = [1001,1002,1004,1005,1008];
var content_show_array = [];
var content_push_array = [];
for (i=0;i<content_idx_array.length;i++) {
    content_show_array[content_idx_array[i]] = 'div_show_' + content_idx_array[i];
    content_push_array[content_idx_array[i]] = 'div_push_' + content_idx_array[i];
}
function get_more_html(idx){
    return "<a href=\"javascript:print_more('"+idx+"')\">--- [더보기] ---</a>";
}
function get_less_html(idx){
    return "<a href=\"javascript:print_less('"+idx+"')\">--- [접기] ---</a>";
}
function print_less(idx){
    sobj = document.getElementById(content_show_array[idx]);
    pobj = document.getElementById(content_push_array[idx]);
    if (sobj) {
        sobj.style.height=content_height+'px';
        pobj.innerHTML = get_more_html(idx);
    }
}
function print_more(idx){
    sobj = document.getElementById(content_show_array[idx]);
    pobj = document.getElementById(content_push_array[idx]);
    if (sobj) {
        sobj.style.height='';
        pobj.innerHTML = get_less_html(idx);
    }
}
function init_more_less(){
    var i, max=content_idx_array.length;
    for (i=0;i<max;i++) {
        sobj = document.getElementById(content_show_array[content_idx_array[i]]);
        pobj = document.getElementById(content_push_array[content_idx_array[i]]);
        if (sobj && parseInt(sobj.offsetHeight)>content_height) {
            sobj.style.height=content_height+'px';
            pobj.innerHTML = get_more_html(content_idx_array[i]);
        }
    }
}
function onload_event(){
    init_more_less();
}
if (window.attachEvent) window.attachEvent('onload', onload_event);
else if (window.addEventListener) window.addEventListener('load', onload_event, false);
-->
</script>
<style>
div{margin:0; padding:0;}
body {font-family:Dotum, tahoma, sans-serif; font-size:12px;}
.my_title {font-weight:bold; margin-top:20px;}
.my_show {width:460px; overflow:hidden; word-wrap: break-word; word-break:break-all;}
.my_push {font-size:11px; margin-top:4px;}
a:link {color:blue; text-decoration:none; }
a:visited {color:blue; text-decoration:none;}
a:hover {color:blue; text-decoration:underline;}
</style>
</HEAD>
<BODY>
<div id="div_title_1001" class="my_title"><a href="http://hompy.info/517" target="_blank">위자드팩토리 위젯으로 블로그를 토핑해볼까?</a></div>
<div id="div_show_1001" class="my_show">
몇일전 위자드웍스에 의해 런칭한 위자드 팩토리에 있는 이쁜 위젯들로 블로그를 토핑해보면 어떨까요? 막 오픈한 서비스라서 선택할 수 있는 위젯의 폭이 아직은 좁은 편이나 좀더 쉽고 좀더 간편하게 사용할 수 있도록 구성한 유저 인터페이스와 아기자기한 디자인이 돋보입니다.<br>
<img src="http://hompy.info/attach/1/1182021495.jpg"><br>
유저가 직접 위젯을 제작할 수 있도록 이미 공개되었고 이번에 추가 버전업 된 오픈API도 제공하고 있으니 유저가 손수 만들어서 올릴 수 있습니다. 이렇게 만들어진 공개된 위젯은 위자드 팩토리에 의해 다양한 채널로 배포될 수 있습니다. 앞으로 퍼가고 싶은 다양하고 개성있는 위젯들이 얼마나 많이 진열될 것이냐에 따라 위젯공장의 역할을 할 수 있을지 여부가 결정될 것 같습니다. 위젯공장에 있는 눈에 띄는 시계,날씨,아기 위젯과 이번에 추천 블로그 선정으로 위젯공장에 등록된 제 블로그 RSS피드 위젯을 띄워봅니다.
</div>
<div id="div_push_1001" class="my_push"></div>

<div id="div_title_1001" class="my_title"><a href="http://hompy.info/516" target="_blank">뉴스 기사 소재, 블로깅 소스를 찾을 수 있는 뉴스와이어</a></div>
<div id="div_show_1002" class="my_show">
기자나 블로거들이 뉴스 기사 소재, 블로깅 소스를 찾을 수 있는 뉴스와이어라는 홈페이지가 있습니다. 2004년에 오픈한 이 서비스를 이용하는 기자분들이 많은 것으로 알고 있고 또한 기업이나 정부,기관,단체 입장에서 보면 홍보할 수 있는 채널로 활용될 수 있어 홍보나 마케팅에 관여하는 분들이 이 서비스를 많이 이용하고 있기도 합니다. 네이버 백과사전으로 검색해 보면 아래와 같은 소개가 나오는군요.
</div>
<div id="div_push_1002" class="my_push"></div>

<div id="div_title_1001" class="my_title"><a href="http://hompy.info/515" target="_blank">위젯 공유 서비스 위자드 팩토리 런칭 파티 후기</a></div>
<div id="div_show_1004" class="my_show">
저번에 위자드닷컴 추천 블로그로 선정되어 VIP(?) 초대장을 받고 어제 위젯 공유 서비스 위자드 팩토리 런칭 파티에 놀러 갔었습니다. 개인적으로 플래시 위젯 만드는 일이 취미이기도 하고 몇년 전 표철민 대표님과 메시지를 교환한 인연도 있었고 이번에 선정된 추천 블로거들도 만나볼려고 겸사겸사 퇴근하고 연세대 공학원에 마련된 행사장으로 직행했습니다. "1부, 위자드 팩토리 소개 및 시연회"에선 라면 이야기와 하루 2시간 자며 만들었다는 이야기가 인상적이었습니다. 위자드 웍스에 대한 자세한 회사 소개와 위자드 팩토리에 대한 간단한 소개를 들을 수 있었습니다. 1부는 식사 시간을 많이 늦출 수 없는 이유로 간소하게 진행된 것 같습니다. 위자드웍스가 어떤 일에 애정을 쏟고 있는 지 알 수 있게 되었고 앞으로 위젯 관련해서 어떤 일들이 벌어질 지 예측할 수 있는 시간이었습니다. "2부, 후원사들과 함께 하는 신나는 파티"에서는 깔끔한 식단의 뷔페식 식사 시간이 있었고 위젯을 내장한 흑맥주를 마시며 스텐딩 파티 형태의 참가자들 간 만남의 시간이 있었습니다. 예상 만큼 많은 블로거들과 인사를 나누지 못했고 위젯 관련해서 많은 정보를 교환하지 못해 아쉬운 부분이 있었습니다. 앞으로 또 다른 이름의 행사로 그 아쉬움을 채울 수 있는 기회가 만들어 질 것이라 기대하며 행사장을 빠져나왔습니다. 빠져나오는 중에 명찰을 반납하고 나니 "웹 패러다임을 바꾸는 위젯" 이라는 책이 포함된 선물을 한 보따리 주시더군요. 받은 선물을 들고 귀가 하느라 팔이 빠지는 줄 알았습니다.^^ 선물 감사했습니다.
위자드웍스 임직원 여러분들이 마련한 뜻 깊은 행사 즐거웠습니다. 앞으로 위자드웍스가 끊임없는 발전을 해서 위젯 업계의 부흥기를 이끌어갈 수 있기를 바라며 언제나 블로거들에게 사랑 받는 기업이 되주시길 바랍니다. 위하여!!!
</div>
<div id="div_push_1004" class="my_push"></div>

<div id="div_title_1001" class="my_title"><a href="http://hompy.info/514" target="_blank">전문직 직장인들이 함께하는 가을 축제가 있습니다.</a></div>
<div id="div_show_1005" class="my_show">
2008년 11월 1일에 전문직 직장인들과 함께하는 링크나우 가을 축제가 있습니다. 대학가요제 입상 경력이 있는 직장인 밴드와 가수들의 공연도 즐길 수 있고 노래와 춤 그리고 연주가 있는 직장인들의 장기자랑도 보며 즐거운 시간 가질 수 있게 될겁니다. 상품도 있다고 하니 장기자랑에 참여해보는 것도 좋겠지요. 더불어 부페 식사도 하고 맥주도 마시며 만남과 교류의 시간도 가질 수 있습니다. 행사명은 "링크나우 가을 페스티벌-음악과 만남의 밤"이고 최대 참석인원은 200명이군요. 행사 예약 페이지를 보시면 자세한 행사 내용과 어떤 분들이 참가하는 지 확인할 수 있습니다. 일정이 맞는 분들은 부담없이 참여해봐도 좋겠습니다.
</div>
<div id="div_push_1005" class="my_push"></div>

<div id="div_title_1001" class="my_title"><a href="http://hompy.info/513" target="_blank">플래시, 외부 파일 데이터 가져오기 통신 샘플 소스 #2</a></div>
<div id="div_show_1008" class="my_show">
플래시로 외부 파일 데이터를 가져오기 위한 웹서버와 통신하기 두번째 샘플 소스 코드입니다. 플래시 액션스크립트 초급자를 위해 학습용으로 부담없이 테스트할 수 있도록 만들었으므로 차근 차근 살펴 보시면 이해에 도움이 될 것이라 생각됩니다.<br>
<EMBED pluginspage="http://www.macromedia.com/go/getflashplayer" src="http://www.hompydesign.com/club/blogchat.swf" width="190" height="200" type="application/x-shockwave-flash" quality="high" wmode="transparent"></EMBED><br>
아래 예제 처럼 LoadVars 객체를 이용해서 통신을 하는 것이 먼저 소개해드렸던 XML 객체를 이용하는 것 보다는 좀더 손쉽게 사용될 수 있습니다. 그러나 전달해야할 데이터가 복잡한 구조를 가질 경우 XML 객체를 이용하는 것 보다 혼란스러울 수 있으며 눈으로 손쉽게 데이터를 해석하기 어려울 수 있습니다. 아래 제공하는 샘플 소스 코드를 필요에 맞게 수정하고 개선해보면 어떻게 사용하는 것인지 이해하기 쉽습니다. 잘 익혀두었다가 사용자의 데이터를 등록하고 갱신하는 응용 프로그램 모양의 플래시를 만드는데 활용해보세요.
</div>
<div id="div_push_1008" class="my_push"></div>
</BODY>
</HTML>

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 원숭 2010/04/30 14:20  댓글주소  수정/삭제  댓글쓰기

    땡쓰요~~~

  2. 네임펜 2010/02/09 02:56  댓글주소  수정/삭제  댓글쓰기

    님~ 감사해요.. 저에게 정말 필요했던 부분이었습니다. 이것 때문에 온종일 컴퓨터에 앉아서 고민했는데.. 바로 해결되었습니다. 정말 감사드려요.

  3. karin 2009/03/10 23:23  댓글주소  수정/삭제  댓글쓰기

    저도 가져갈게요~ 감사합니다 ^^

  4. dodo1028 2009/03/10 09:28  댓글주소  수정/삭제  댓글쓰기

    가져갈게요~ 좋은 정보 감사합니다^^

  5. dusskapark 2008/10/16 01:22  댓글주소  수정/삭제  댓글쓰기

    감사합니다....html에서 접기 갖다 붙이기는 하는데 지 좀 짜증났었는데 확풀리네요 감사합니다 열공할께요

플래시로 외부 파일 데이터를 가져오기 위한 웹서버와 통신하기 두번째 샘플 소스 코드입니다. 플래시 액션스크립트 초급자를 위해 학습용으로 부담없이 테스트할 수 있도록 만들었으므로 차근 차근 살펴 보시면 이해에 도움이 될 것이라 생각됩니다. 아래 예제 처럼 LoadVars 객체를 이용해서 통신을 하는 것이 먼저 소개해드렸던 XML 객체를 이용하는 것 보다는 좀더 손쉽게 사용될 수 있습니다. 그러나 전달해야할 데이터가 복잡한 구조를 가질 경우 XML 객체를 이용하는 것 보다 혼란스러울 수 있으며 눈으로 손쉽게 데이터를 해석하기 어려울 수 있습니다. 아래 제공하는 샘플 소스 코드를 필요에 맞게 수정하고 개선해보면 어떻게 사용하는 것인지 이해하기 쉽습니다. 잘 익혀두었다가 사용자의 데이터를 등록하고 갱신하는 응용 프로그램 모양의 플래시를 만드는데 활용해보세요.

[product.txt]
title=system&attribute=name|price|total|date&product=desktop|380000|10|2008-10-01,monitor|270000|5|2008-10-04,printer|160000|2|2008-09-28,notebook|870000|15|2008-10-06,mouse|12000|20|2008-09-20

[product_txt.fla]
System.useCodepage = true;
var product_vars = new LoadVars();
product_vars.onLoad = function(success) {
    if (success) {
        var attribute_str = this.attribute;
        var product_str = this.product;
        var attribute_array = this.attribute.split('|');
        var tmp_array = product_str.split(',');
        var product_array = [tmp_array[0].split('|'), tmp_array[1].split('|'), tmp_array[2].split('|'), tmp_array[3].split('|'), tmp_array[4].split('|')];
        tf_textarea.text += '[text file tester]\n';
        tf_textarea.text += '01: ' + this.title + '\n';
        tf_textarea.text += '02: ' + this.attribute + '\n';
        tf_textarea.text += '03: ' + this.product + '\n';
        tf_textarea.text += '\n';
        tf_textarea.text += '04: ' + this.attribute.split('|')[0] + '\n';
        tf_textarea.text += '05: ' + this.attribute.split('|')[1] + '\n';
        tf_textarea.text += '06: ' + this.attribute.split('|')[2] + '\n';
        tf_textarea.text += '07: ' + this.attribute.split('|')[3] + '\n';
        tf_textarea.text += '\n';
        tf_textarea.text += '08: ' + this.product.split(',')[0] + '\n';
        tf_textarea.text += '09: ' + this.product.split(',')[1] + '\n';
        tf_textarea.text += '10: ' + this.product.split(',')[2] + '\n';
        tf_textarea.text += '11: ' + this.product.split(',')[3] + '\n';
        tf_textarea.text += '12: ' + this.product.split(',')[4] + '\n';
        tf_textarea.text += '\n';
        tf_textarea.text += '13: ' + this.product.split(',')[0].split('|')[0] + '\n';
        tf_textarea.text += '14: ' + this.product.split(',')[0].split('|')[1] + '\n';
        tf_textarea.text += '15: ' + this.product.split(',')[0].split('|')[2] + '\n';
        tf_textarea.text += '16: ' + this.product.split(',')[0].split('|')[3] + '\n';
        tf_textarea.text += '\n';
        tf_textarea.text += '17: ' + tmp_array[1].split('|')[0] + '\n';
        tf_textarea.text += '18: ' + tmp_array[1].split('|')[1] + '\n';
        tf_textarea.text += '19: ' + product_array[1][2] + '\n';
        tf_textarea.text += '20: ' + product_array[1][3] + '\n';
        tf_textarea.text += '\n';
        textarea += '21: ' + product_array[2][0] + '\n';
        textarea += '22: ' + product_array[2][1] + '\n';
        textarea += '\n';
        //trace(this.title);
    } else {
        //trace('error');
    }
}
product_vars.load("product.txt");

[product_txt.swf]



[product_txt.html]
<embed src="http://www.hompydesign.com/flash/sample/product_txt.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="520" height="420" base="http://www.hompydesign.com/flash/sample/"></embed>

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

플래시로 외부 파일 데이터를 가져오기 위한 웹서버와 통신하기 샘플 소스 코드입니다. 플래시 액션스크립트 초급자를 위해 학습용으로 부담없이 테스트할 수 있도록 만들었으므로 차근 차근 살펴 보시면 이해에 도움이 될 것이라 생각됩니다. XML 로 규격화된 자료 파일을 플래시에서 읽을 수 있다는 것은 자료에 근거하여 어플리케이션 처럼 동작하는 동적 플래시를 만들 수 있는 장점이 있습니다. 플래시로 XML 객체를 어떻게 다루는지 잘 익혀두시고 차후에 쓸만한 플래시 만드는 일에 잘 활용해보세요.

[product.xml]
<?xml version="1.0" encoding="euc-kr" ?>
<product>
    <item>
        <name>desktop</name>
        <price>380000</price>
        <total>10</total>
        <date>2008-10-01</date>
    </item>
    <item>
        <name>monitor</name>
        <price>270000</price>
        <total>5</total>
        <date>2008-10-04</date>
    </item>
    <item>
        <name>printer</name>
        <price>160000</price>
        <total>2</total>
        <date>2008-09-28</date>
    </item>
    <item>
        <name>notebook</name>
        <price>870000</price>
        <total>15</total>
        <date>2008-10-06</date>
    </item>
    <item>
        <name>mouse</name>
        <price>12000</price>
        <total>20</total>
        <date>2008-09-20</date>
    </item>
</product>


[product_xml.fla]
System.useCodepage = true;
function product_loader() {
    var product_xml = this.firstChild.childNodes;
    var product_len = product_xml.length;
    var item_xml = product_xml[0].childNodes;
    var item_len = item_xml.length;
    var name_xml = item_xml[0].childNodes;
    var name_len = name_xml.length;
    tf_textarea.text += '[xml file tester]\n';
    tf_textarea.text += '01: ' + product_len + "\n";
    tf_textarea.text += '02: ' + product_xml + "\n";
    tf_textarea.text += '03: ' + item_len + "\n";
    tf_textarea.text += '04: ' + item_xml + "\n";
    tf_textarea.text += '05: ' + name_len + "\n";
    tf_textarea.text += '06: ' + name_xml + "\n";
    tf_textarea.text += '\n';
    tf_textarea.text += '07: ' + item_xml[0].nodeName + "\n";
    tf_textarea.text += '08: ' + item_xml[0].firstChild.nodeValue + "\n";
    tf_textarea.text += '07: ' + item_xml[1].nodeName + "\n";
    tf_textarea.text += '08: ' + item_xml[1].firstChild.nodeValue + "\n";
    tf_textarea.text += '09: ' + item_xml[2].nodeName + "\n";
    tf_textarea.text += '10: ' + item_xml[2].firstChild.nodeValue + "\n";
    tf_textarea.text += '11: ' + item_xml[3].nodeName + "\n";
    tf_textarea.text += '12: ' + item_xml[3].firstChild.nodeValue + "\n";
    tf_textarea.text += '\n';
    textarea += '13: ' + product_xml[3].childNodes[0].nodeName + "\n";
    textarea += '14: ' + product_xml[3].childNodes[0].firstChild.nodeValue + "\n";
    textarea += '15: ' + product_xml[3].childNodes[1].nodeName + "\n";
    textarea += '16: ' + product_xml[3].childNodes[1].firstChild.nodeValue + "\n";
    textarea += '17: ' + product_xml[3].childNodes[2].nodeName + "\n";
    textarea += '18: ' + product_xml[3].childNodes[2].firstChild.nodeValue + "\n";
    textarea += '19: ' + product_xml[3].childNodes[3].nodeName + "\n";
    textarea += '20: ' + product_xml[3].childNodes[3].firstChild.nodeValue + "\n";
    tf_textarea.text += '\n';
    textarea += '21: ' + product_xml[3].firstChild.nextSibling.nodeName + "\n";
    textarea += '22: ' + product_xml[3].firstChild.nextSibling.nextSibling.nodeName + "\n";
    /*
    trace('product len = ' + product_len);
    trace('product xml = ' + product_xml);
    trace('item len = ' + item_len);
    trace('item xml = ' + item_xml);
    trace('name len = ' + name_len);
    trace('name xml = ' + name_xml);
    */
}
my_xml = new XML();
my_xml.onLoad = product_loader;
my_xml.ignoreWhite = true;
my_xml.load("product.xml");

[product_xml.swf]
 

[product_xml.html]
<embed
src="http://www.hompydesign.com/flash/sample/product_xml.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="520" height="420" base="http://www.hompydesign.com/flash/sample/"></embed>

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. ^.^ 2008/10/22 15:54  댓글주소  수정/삭제  댓글쓰기

    node childnode 구분해서 보라고 올려두신거 같네요 ㅋㅋㅋ

오늘 오후에 있을 플래시 스터디 과제인 막대 그래프 만들기에 대한 이해를 돕기 위해 간소화 시킨 플래시 차트 소스를 준비했습니다. 그래프 막대로 사용하기 위해 다섯 가지 색상의 무비클립을 만들었습니다. 차트에 적용할 데이터는 2차원 배열에 담았고 Tween 클래스를 활용해 막대 그래프에 활력을 불어 넣었습니다. 여러가지 Tween 클래스 효과를 실험하기 위해 onEnterFrame 이벤트를 이용해 5가지 다른 스타일을 일정한 시간 간격으로 보여주고 있습니다. 플래시 입문자들은 아래 소스를 수정하고 개선해 보시면 플래시 액션스크립트 학습이 도움이 될 것입니다. 뭐든 직접 해보는 것이 중요하므로 손수 멋진 디자인을 입혀서 자신만의 개성있는 막대 그래프를 만들어보세요.

 


import mx.transitions.Tween;
import mx.transitions.easing.*;

var chart_array = Array(
    Array('80','94','70','80','60')
    ,Array('60','100','78','50','80')
    ,Array('90','80','100','75','95')
);

var style_array = Array(
    Strong.easeOut, Elastic.easeOut, Bounce.easeOut, Regular.easeOut, Back.easeOut
);

var menu_max = chart_array.length;
var part_max = chart_array[0].length;
var time_step = 0, style_pos = 0;

function show_chart(set_style){
var i, j, y1, y2, style, mc;
    y1 = 0;
    for (i=0;i<part_max;i++) {
        for (j=0;j<menu_max;j++) {
            mc = this['mc_bar_'+j+'_'+i];
            y2 = chart_array[j][i] * 2;
            style = style_array[set_style];
            new Tween(mc,"_yscale",style,y1,y2,20,false);
        }
    }
}

this.onEnterFrame = function(){
    if (time_step>100) time_step = 0;
    if (time_step==0) {
        show_chart(style_pos);
        style_pos = (style_pos+1)%5;
    }
    time_step ++;
}

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

이미지 슬라이더는 좁은 공간에 좀더 많은 것을 보기 좋게 보여주기 위해 유용한 유저 인터페이스입니다. 아래 소개하는 내용은 이번 플래시 스터디 과제를 해결하기 위한 힌트이기도 하며 플래시 액션스크립트 초급자를 위한 학습용 플래시 소스이기도 합니다. Tween 클래스를 사용해서 매끄러운 배너 이동에 적용했으며 주기적으로 반복해서 함수를 실행하게 해주는 setInterval 함수를 이용해 일정 시간 간격으로 배너를 교체하도록 하였습니다. 그리고 마우스를 배너 위에 올렸을 경우 clearInterval 함수로 반복하는 것을 중지 하도록 했고 마우스가 배너 위를 벗어났을 때 다시 setInterval 함수를 이용해 다시 반복 하도록 했습니다. 배너의 갯수(menu_max), 배너의 폭(menu_width), 이동 시간 간격(show_time), 어떤 스타일로 이동할 것인지(show_style)를 변경할 수 있는 변수도 적용하였습니다.
백번 설명하는 것 보다 한번 직접 해보는 것이 플래시 액션스크립트 학습의 지름길입니다. 자신의 필요나 구미에 맞게 아래 플래시 소스를 수정 보완 해보시면 학습에 도움이 될 것입니다. 이렇게 만들어진 플래시는 블로그나 홈페이지 배너로 사용하면 보기 좋을 것이며 실제 많이 사용하고 있기도 합니다.







import mx.transitions.Tween;
import mx.transitions.easing.*;

var menu_pos = 0;
var menu_max = 4;
var menu_width = 200;
var show_style = 0;
var show_time = 4000;
var
menu_distance = menu_width * -1;
var time_id = setInterval(_root,"do_next", show_time);
mc_screen.onRollOver = function (){
    clearInterval(time_id);
}
mc_screen.onRollOut = function (){
    time_id = setInterval(_root,"do_next", show_time);
}
mc_screen.onRelease = function (){
    getURL("http://hompy.info/507","_blank");
}
function do_next(){
    var pos1, pos2, x1, x2;
    pos1 = menu_pos;
    menu_pos = menu_pos + 1;
    pos2 = menu_pos;
    x1 = pos1 * menu_distance;
    x2 = pos2 * menu_distance;
    menu_pos = (menu_pos) % menu_max;
    switch (show_style){
        case 1: new Tween(mc_screen,"_x",Elastic.easeOut,x1,x2,20,false); break;
        case 2: new Tween(mc_screen,"_x",Bounce.easeOut,x1,x2,20,false); break;
        case 3: new Tween(mc_screen,"_x",Regular.easeOut,x1,x2,20,false); break;
        case 4: new Tween(mc_screen,"_x",Back.easeOut,x1,x2,20,false); break;
        default: new Tween(mc_screen,"_x",Strong.easeOut,x1,x2,20,false); break;
    }
    trace (menu_pos+":"+x1+"->"+x2);
}

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 임채경 2010/06/23 13:46  댓글주소  수정/삭제  댓글쓰기

    감사합니다!

  2. 학생 2009/04/17 21:33  댓글주소  수정/삭제  댓글쓰기

    굳!
    아주 유용합니다.

9월 20일 오늘 스터디에서는 각자 만들어온 플래시에 대해 설명하고 제작할때 생긴 문제에 대해 질문하고 함께 풀어보고 트윈 클래스와 배열에 대해서 이해하는 시간을 가졌고 즉석에서 플래시 네비게이션을 만들어보는 시간을 가졌습니다. 10월 4일 스터디 과제는 이번에 학습한 몇가지를 응용하셔서 플래시 그래프와 전광판을 만들어보는 것입니다. 하단에 있는 자료들을 참고하시면 도움이 될 것입니다.
그리고 과제는 반드시 직접 해보시고 잘 안되는 부분에 대해 질문할 내용을 준비해두세요.

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

[제3회 스터디 학습 자료]

세로형 네비게이션 액션 스크립트 소스 - flashmenu.as
아래 소스는 몇년전 플래시에 대해 제대로 파악하고 있지 못했던 시기에 만든 것으로 부족한 부분이 있을 수 있으나 오히려 입문자를 위한 학습 자료가 될 수 있어 공개합니다.






import
flash.geom.ColorTransform;
import flash.geom.Transform;

var mc_max = 8;
var mc_top = 10;
var mc_height = 30;
var mc_sub_height = 20;
var mmc_height = new Array();
var mmc_height_more = 26;
var mc_select = -1;

menu_list = new Array("플래시(Flash)","포토샵(Photoshop)","서비스(Service)","카페(Cafe)","블로그(Blog)");
menu_link = new Array("http://www.hompydesign.com/club/meet.htm","http://www.hompydesign.com/club/ani.htm","http://www.hompydesign.com/showdir.php","http://coordy.cyworld.com/","http://www.hompydesign.com/ex/main_index.htm");

submenu_list = new Array();
submenu_list[0] = new Array("미니홈피","플래시채팅","플래시소스","플래시갤러리","RSS 리더","PHP 사전","한자게임","달력과 시계");
submenu_list[1] = new Array("포토 라이브러리","랜덤 이미지");
submenu_list[2] = new Array("무료 도메인","한글 도메인","블로그 스크랩","미니홈피 갤러리","프로게이머");
submenu_list[3] = new Array("패션 코디 클럽","직장인 인맥만들기","플래시 카페","스타크래프트 클럽");
submenu_list[4] = new Array("블로그","싸이월드 홈2","미니홈피","게시판");

submenu_link = new Array();
submenu_link[0] = new Array("http://www.hompydesign.com/club/flash.htm","http://www.hompydesign.com/flash/chat.htm","http://www.hompydesign.com/club/flash_movie.php","http://www.hompydesign.com/club/photo.htm","http://www.hompydesign.com/club/xmlreader.htm","http://www.hompydesign.com/flash/phpdic/phpdic.htm","http://www.hompydesign.com/hanja/","http://www.hompydesign.com/club/calendar.htm");
submenu_link[1] = new Array("http://www.hompydesign.com/club/photolib.html","http://www.hompydesign.com/club/ani.htm","","","","","","","");
submenu_link[2] = new Array("http://www.hompydesign.com/showdir.php","http://www.hompydesign.com/club/korean_domain.php","http://www.hompydesign.com/club/post.com","http://www.hompydesign.com/club/photo_list.com","http://www.hompydesign.com/club/rank_write_starcraft.com","","","");
submenu_link[3] = new Array("http://coordy.cyworld.com/","http://makehost.cyworld.com/","http://cafe.naver.com/q69.cafe","http://starcraft.or.kr/","","","");
submenu_link[4] = new Array("http://hompy.info","http://www.cyworld.com/onblog","http://www.cyworld.com/makehost","http://www.hompydesign.com/ex/main_index.htm","","","");
ready();

function text_over(){
    this.title_tf.textColor = 0xFFFFFF;
}
function text_out(){
    this.title_tf.textColor = 0xE8EB91;
}
function text_click(){
    getURL(this.link,"_main_");
}

function ready() {
    for (i=0;i<mc_max;i++) {
        var obj = this["mc_"+i];
        obj.targetX = 0;
        obj.targetY = mc_height * i;
        obj.speedX = 0.2;
        obj.speedY = 0.2;
        obj.mlist._visible = false;
        obj.submenu._visible = false;
        obj.mlist_head._visible = false;
        obj.mlist_tail._visible = false;
        obj.main.onRollOver = move_mc;
        obj.main.title = menu_list[i];
        obj.main.title_tf.textColor = 0xfdffc7;
        obj.main._xscale = 100;
        obj.main._yscale = 100;
        obj.no = i;
        obj.main.link = menu_link[i];
        obj.main.onRelease = text_click;
        for (j in submenu_list[i]){
            obj.submenu["title"+j].str = submenu_list[i][j];
            obj.submenu["title"+j].onRollOver = text_over;
            obj.submenu["title"+j].onRollOut = text_out;
            obj.submenu["title"+j].link = submenu_link[i][j];
            obj.submenu["title"+j].onRelease = text_click;
        }
        for (j=submenu_list[i].length;j<mc_max;j++) obj.submenu["title"+j]._visible = false;
        obj.submenu["title"+(submenu_list[i].length-1)].line_mc._visible = false;
        obj.mlist._visible = false;
        obj.over_mc._visible = false;
        mmc_height[i] = submenu_list[i].length*mc_sub_height;
    }
}


first_mc(0);
function first_mc(menu_no){
    for (i=0;i<mc_max;i++) {
        var obj = _root["mc_"+i];
        /*
        var colorTrans:ColorTransform = new ColorTransform();
        var trans:Transform = new Transform(obj.over_mc);
        */
        obj.main._xscale = 100;
        obj.main._yscale = 100;
        if (menu_no==i)     {
            obj.main.title_tf.textColor = 0xfdffc7;
            obj.mlist._height = mmc_height[i];
            //obj.mlist_tail._y = obj.mlist._y + mmc_height[i];
            obj.submenu._visible = true;
            obj.mlist._visible = true;
            obj.mlist_head._visible = true;
            obj.mlist_tail._visible = true;
            obj.over_mc._visible = true;
            //colorTrans.rgb = 0x0000ff; trans.colorTransform = colorTrans;
            if (obj.no != mc_select) {
                //obj.main.onEnterFrame = show_mainmc;
                obj.submenu.gotoAndPlay(1);
                obj.submenu._alpha = 10;
                obj.submenu.onEnterFrame = show_submc;
                obj.mlist._alpha = 10;
                obj.mlist._height = 1;
                obj.mlist.onEnterFrame = show_submc_h;
                obj.mlist_head._alpha = 10;
                obj.mlist_head.onEnterFrame = show_submc;
                obj.mlist_tail._alpha = 10;
                obj.mlist_tail.onEnterFrame = show_submc;
            }
        } else {
            obj.over_mc._visible = false;
            obj.main.title_tf.textColor = 0xfdffc7;
            obj.mlist._visible = false;
            obj.submenu._visible = false;
            obj.mlist_head._visible = false;
            obj.mlist_tail._visible = false;
            colorTrans.rgb = 0x00ccff; trans.colorTransform = colorTrans;
        }
        obj.targetY = mc_top + mc_height * i;
        if (menu_no < i) obj.targetY += mmc_height[menu_no]+ mmc_height_more;
        //trace(obj.no+':'+obj.targetY);
        obj.onEnterFrame = go_mc;
    }
    mc_select = menu_no;
}


function move_mc(){
    for (i=0;i<mc_max;i++) {
        var obj = _root["mc_"+i];
        /*
        var colorTrans:ColorTransform = new ColorTransform();
        var trans:Transform = new Transform(obj.over_mc);
        */
        obj.main._xscale = 100;
        obj.main._yscale = 100;
        if (this._parent.no==i)     {
            obj.main.title_tf.textColor = 0xfdffc7;
            obj.mlist._height = mmc_height[i];
            //obj.mlist_tail._y = obj.mlist._y + mmc_height[i];
            obj.submenu._visible = true;
            obj.mlist._visible = true;
            obj.mlist_head._visible = true;
            obj.mlist_tail._visible = true;
            obj.over_mc._visible = true;
            //colorTrans.rgb = 0x0000ff; trans.colorTransform = colorTrans;
            if (obj.no != mc_select) {
                //obj.main.onEnterFrame = show_mainmc;
                obj.submenu.gotoAndPlay(1);
                obj.submenu._alpha = 10;
                obj.submenu.onEnterFrame = show_submc;
                obj.mlist._alpha = 10;
                obj.mlist._height = 1;
                obj.mlist.onEnterFrame = show_submc_h;
                obj.mlist_head._alpha = 10;
                obj.mlist_head.onEnterFrame = show_submc;
                obj.mlist_tail._alpha = 10;
                obj.mlist_tail.onEnterFrame = show_submc;
            }
        } else {
            obj.over_mc._visible = false;
            obj.main.title_tf.textColor = 0xfdffc7;
            obj.mlist._visible = false;
            obj.submenu._visible = false;
            obj.mlist_head._visible = false;
            obj.mlist_tail._visible = false;
            colorTrans.rgb = 0x00ccff; trans.colorTransform = colorTrans;
        }
        obj.targetY = mc_top + mc_height * i;
        if (this._parent.no < i) obj.targetY += mmc_height[this._parent.no]+ mmc_height_more;
        //trace(obj.no+':'+obj.targetY);
        obj.onEnterFrame = go_mc;
    }
    mc_select = this._parent.no;
}

function show_mainmc(){
    if (this._xscale<110) {
        this._xscale += 2;
        if (this._xscale > 110) this._xscale = 110;
        this._yscale = this._xscale;
    } else {
        this.onEnterFrame = null;
    }
}

function show_submc(){
    if (this._alpha<100) {
        this._alpha += 10;
        if (this._alpha > 100) this._alpha = 100;
    } else {
        this.onEnterFrame = null;
    }
}

function show_submc_h(){
    if (this._alpha<100) {
        this._alpha += 10;
        if (this._alpha > 100) this._alpha = 100;
        this._height = mmc_height[this._parent.no]*this._alpha / 100;
        this._parent.mlist_tail._y = this._y + this._height;
    } else {
        this.onEnterFrame = null;
    }
}

function go_mc() {
    var obj = this;
    var len = (obj._x - obj.targetX)*(obj._x - obj.targetX)+(obj._y - obj.targetY)*(obj._y - obj.targetY)/2;
    if (len < 1){
        obj._x = obj.targetX;
        obj._y = obj.targetY;
        obj.onEnterFrame = null;
    }
    obj._x = obj._x + obj.speedX*(obj.targetX - obj._x);
    obj._y = obj._y + obj.speedY*(obj.targetY - obj._y);
}

[제4회 스터디 학습 과제]

1차원 배열과 Tween 클래스를 이용해서 전광판을 만들어보세요.
전광판 참고 URL : http://hompy.info/204

2차원 배열과 Tween 클래스를 이용해서 그래프를 만들어보세요.
그래프 참고 URL : http://hompy.info/192

[Tween 클래스 참고 게시물]

http://cafe.naver.com/q69/38901
http://cafe.naver.com/q69/115118

[플래시 배열 참고 게시물]

http://cafe.naver.com/q69/115164

[html에서 플래시로 변수 전달 참고 게시물]

http://cafe.naver.com/q69/7386

댓글을 달아 주세요

  1. End 2010/03/20 12:48  댓글주소  수정/삭제  댓글쓰기

    타겟 어떻게 수정하나요?

  2. 제인디 2009/11/05 00:53  댓글주소  수정/삭제  댓글쓰기

    저어 죄송하지만 타겟은 어떻게 수정하나요? 새창으로만 뜨던데.. ㅜㅠ왕초보이니 알려주시면 감사~ ...

PHP에서 GD 라이브러리를 활용해서 썸네일을 만들어주는 함수의 소스 코드입니다. 홈페이지를 만들다 보면 사진첩과 같이 이미지를 다수 노출해야 되는 페이지를 구성할 때 필요한 것이 썸네일이며 이를 이용하면 페이지의 로딩 속도를 향상시켜 주며 원본 이미지를 작게 보여줄 때 좀더 선명하게 표현해줄 수 있습니다. 자신의 필요에 맞게 함수를 구성할 수 있는 분이 아니라면 복사해서 활용해보시면 되겠습니다. 함수 파라메터 끝에는 썸네일을 저장할 파일 경로를 입력하시면 되고 경로를 입력하지 않으면 바로 출력됩니다.

make_thumbnail("원본이미지파일경로", 83, 100, "저장할썸네일파일경로");

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info
<?
make_thumbnail("http://hompy.info/attach/1/1196323499.jpg", 83, 100, "");

function make_thumbnail($source_path, $width, $height, $thumbnail_path){
    list($img_width,$img_height, $type) = getimagesize($source_path);
    if ($type!=1 && $type!=2 && $type!=3 && $type!=15) return;
    if ($type==1) $img_sour = imagecreatefromgif($source_path);
    else if ($type==2 ) $img_sour = imagecreatefromjpeg($source_path);
    else if ($type==3 ) $img_sour = imagecreatefrompng($source_path);
    else if ($type==15) $img_sour = imagecreatefromwbmp($source_path);
    if ($img_width > $img_height) {
        $w = round($height*$img_width/$img_height);
        $h = $height;
        $x_last = round(($w-$width)/2);
        $y_last = 0;
    } else {
        $w = $width;
        $h = round($width*$img_height/$img_width);
        $x_last = 0;
        $y_last = round(($h-$height)/2);
    }
    if ($img_width < $width && $img_height < $height) {
        $img_last = imagecreatetruecolor($width, $height);
        $x_last = round(($width - $img_width)/2);
        $y_last = round(($height - $img_height)/2);

        imagecopy($img_last,$img_sour,$x_last,$y_last,0,0,$w,$h);
        imagedestroy($img_sour);
        $white = imagecolorallocate($img_last,255,255,255);
        imagefill($img_last, 0, 0, $white);
    } else {
        $img_dest = imagecreatetruecolor($w,$h);
        imagecopyresampled($img_dest, $img_sour,0,0,0,0,$w,$h,$img_width,$img_height);
        $img_last = imagecreatetruecolor($width,$height);
        imagecopy($img_last,$img_dest,0,0,$x_last,$y_last,$w,$h);
        imagedestroy($img_dest);
    }
    if ($thumbnail_path) {
        if ($type==1) imagegif($img_last, $thumbnail_path, 100);
        else if ($type==2 ) imagejpeg($img_last, $thumbnail_path, 100);
        else if ($type==3 ) imagepng($img_last, $thumbnail_path, 100);
        else if ($type==15) imagebmp($img_last, $thumbnail_path, 100);
    } else {
        if ($type==1) imagegif($img_last);
        else if ($type==2 ) imagejpeg($img_last);
        else if ($type==3 ) imagepng($img_last);
        else if ($type==15) imagebmp($img_last);
    }
    imagedestroy($img_last);
}
?>

댓글을 달아 주세요

  1. 다니엘SEO 2009/12/31 00:09  댓글주소  수정/삭제  댓글쓰기

    글 작성시에 만들어 주는 용으로는 어떨지 모르겠지만...
    리스트 화면이나 메인에서 바로 변환해서 출력하는 용으로는 무리가 있습니다.
    이렇게 하면 상당히 느립니다.

어떤 카페, 어떤 블로그, 어떤 홈페이에도 자유롭게 복사되어 붙여넣기 될 수 있는 플래시의 장점을 살려 홈페이지를 넘나들며 자유로운 메시지 교환을 손쉽게 해볼 수 있는 플래시톡(Flash Talk)입니다. 플래시톡은 채팅과 게시판의 중간단계이며 간편하게 메시지를 작성해서 올릴 수 있습니다. 간편한 메시지 입력, 간편한 메시지 보기에 주안점을 둔 유저인터페이스(UI) 입니다. 차차 로그인 기능이나 나만의 플래시톡을 만들 수 있는 기능 등이 추가될 수 있습니다.

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info



개인용 플래시톡을 만들려면 아래 태그에 빨간색 부분을 자신의 아이디(myid)로 수정해서 사용해야 되며 아이디 개설은 http://www.hompydesign.com/blog/에서 해야합니다. 아이디를 개설하면 블로그 채팅이나 블로그 카운터 등을 사용할 수 있습니다.

[플래시톡 HTML 태그 소스 코드]
<EMBED FlashVars="myid=hompy" pluginspage=http://www.macromedia.com/go/getflashplayer src=http://www.hompydesign.com/flash/flashtalk.swf width=300 height=400 type=application/x-shockwave-flash quality="high"></EMBED>

댓글을 달아 주세요

  1. 위남자 2009/06/06 00:11  댓글주소  수정/삭제  댓글쓰기

    3시간 헤맨 끝에 찾아왔습니다. 감사합니다. 가져다가 유용하게 사용할께요 감사

  2. 간지댐나 2009/05/14 21:39  댓글주소  수정/삭제  댓글쓰기

    ㅋㅋ

  3. ssamss 2009/02/12 16:55  댓글주소  수정/삭제  댓글쓰기

    배경이미지 지정할수있게 해주세요 형님 ㅋㅋㅋ

  4. 와우 2008/12/26 17:58  댓글주소  수정/삭제  댓글쓰기

    글이 올라온것은 삭제는 어떻게 해요?

  5. 샤피엘 2008/11/06 23:51  댓글주소  수정/삭제  댓글쓰기

    좋네요. 개인 스케줄 메모용으로도 좋겠어요 ㅎㅎ

  6. ^.^ 2008/10/22 15:51  댓글주소  수정/삭제  댓글쓰기

    신기한데요 ^.^

  7. dd 2008/10/17 00:38  댓글주소  수정/삭제  댓글쓰기

    크기를 줄일 수는 없나요? 소스에서 크기를 바꿨더니 아예 글씨들도 작게보이고ㅠㅠ
    적어도 세로쪽을 조금 줄이고 싶은데ㅠㅠㅠ

홈페이지를 운영하다 보면 회원들에게 상태를 알리는 메일이나 안내 메일을 보낼 필요가 있습니다. 관리하는 홈페이지에서 이메일 전송이 제대로 안되는 문제가 발생해서 이것 저것 테스트 하기 위해 만들어본 샘플 소스 코드입니다. 이 PHP 소스를 이용해 포털 이메일 계정으로 메일을 보내 보니 대체적으로 잘 전송이 되었습니다. 그런데 엠파스나 야후 메일 같은 경우 조금 늦게 도착하는 것 같더군요. 이메일 루틴 관련해서 노하우를 가지고 계신 분이 있다면 관심 있는 분들을 위해 살짝 노출해주시길 바랍니다. UTF-8 기준으로 작성된 테스트 소스이므로 캐릭터셋이 다를 경우 수정이 필요합니다.

웹프로그래머의 홈페이지 정보 블로그 http://hompy.info

<?
$charset = "UTF-8";
$boundary = uniqid(rand(),true);

$mail_array[to_name] = "웹디자이너";
$mail_array[to_email] = "design@hompydesign.com";

$mail_array[from_name] = "웹프로그래머";
$mail_array[from_email] = "program@hompy.info";

$mail_array[title] = "[소식] 홈페이지 정보 블로그" . date("YmdHi");

$mail_array[content] = <<<MSG
<html>
<head>
<title>홈페이지 정보 블로그</title>
</head>
<body>
<a href='http://hompy.info/471' target='_blank'>홈페이지 정보 블로그</a><br>
<a href='http://hompy.info/471' target='_blank'>"http://hompy.info/471"</a><br>
</body>
</html>
MSG;

$mail_array[title] = '=?utf-8?b?'.base64_encode($mail_array[title]).'?=';
$mail_array[from_name] = '=?utf-8?b?'.base64_encode($mail_array[from_name]).'?=';
$mail_array[to_name] = '=?utf-8?b?'.base64_encode($mail_array[to_name]).'?=';
$recipient = $mail_array[to_name] . " <". $mail_array[to_email] . ">";

$headers =
"From: ". $mail_array[from_name] . " <".$mail_array[from_email] . ">\n" .
"Return-Path: ".$mail_array[to_name] . " <" . $mail_array[from_email] . ">\n" .
"Subject: ".$mail_array[title] . "\n" .
"MIME-Version: 1.0\n" .
"Content-Type: multipart/alternative; boundary=\"" . $boundary . "\"";

$body =
"--" . $boundary . "\n".
"Content-Type: text/plain; charset=" . $charset . "; format=flowed\n" .
"Content-Transfer-Encoding: base64\n" .
"Content-Disposition: inline\n\n" .
chunk_split(base64_encode(strip_tags($mail_array[content]))) . "\n\n" .
"--" . $boundary . "\n" .
"Content-Type: text/html; charset=" . $charset . "\n" .
"Content-Transfer-Encoding: base64\n" .
"Content-Disposition: inline\n\n" .
chunk_split(base64_encode($mail_array[content]))."\n\n" .
"--" . $boundary . "--\n";

mail($recipient , $mail_array[title], $body, $headers);
?>

댓글을 달아 주세요

움직이는 막대 그래프 만들기 자바스크립트 소스입니다. 개별 막대가 점진적으로 목표 크기에 다가가는 모션이 적용되었으며 막대의 현재 크기와 목표 크기 사이의 간격을 기준으로 일정 비율(1/8)로 더해주는 방식입니다. bar_init 함수 내 80 이라는 숫자와 bar_timer 함수 내 8 이라는 숫자를 수정하여 개인 취향에 맞게 모션에 변화를 줄 수 있습니다. 해당 막대의 목표 크기는 img 태그의 barwidth 와 barheight 에 의해서 결정됩니다. 웹페이지에서 오브젝트의 동적인 움직임을 구현할 때 setInterval 이라는 함수가 요긴하게 사용됩니다. 비슷한 방식으로 플래시로 막대 그래프를 구현한다면 setInterval 함수나 onEnterFrame 이라는 이벤트를 사용할 수 있습니다. 그런데 Tween 객체를 쓰면 보다 손쉽게 모션을 구현할 수 있지요. 막대그래프를 그리는 방법에 대한 정답은 당신에게 있습니다. 자신의 개성에 맞게 수정하고 보완한다면 그 정답을 찾을 수 있을겁니다.  




<HTML>
<HEAD>
<TITLE>막대그래프</TITLE>
<script>
var bar_obj = [], ybar_obj = [], bar_obj_max = 14, ybar_obj_max = 21;
function bar_timer(pos){
	var obj = bar_obj[pos], more;
	if ((obj.barwidth - obj.width)>1){
		more = (obj.barwidth - obj.width) / 8;
		obj.width += more;
	} else {
		clearInterval(obj.timer_id);
		obj.width = obj.barwidth;
	}
}
function ybar_timer(pos){
	var obj = ybar_obj[pos], more;
	if ((obj.barheight - obj.height)>1){
		more = (obj.barheight - obj.height) / 8;
		obj.height += more;
	} else {
		clearInterval(obj.timer_id);
		obj.height = obj.height;
	}
}
function bar_init(){
	for (i=0;i<bar_obj_max;i++){
		bar_obj[i] = document.getElementById('bar_img_'+i);
		bar_obj[i].timer_id = setInterval('bar_timer('+i+')',30);
	}
	for (i=0;i<ybar_obj_max;i++){
		ybar_obj[i] = document.getElementById('ybar_img_'+i);
		ybar_obj[i].timer_id = setInterval('ybar_timer('+i+')',30);
	}
}
</script>
<style>
.box_id {width:360px}
.box_id td {background-color:#111111;}
.ybox_id {height:200px;}
.ybox_id td {background-color:#111111; text-align:center; vertical-align:bottom}
</style>
</HEAD>
<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0 onload="javscript:bar_init();">
<table cellspacing=2 cellpadding=2 border=0 width=500 class=box_id>
<tr><td><img id='bar_img_0' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_0.gif" width="1" height="12" barwidth=280></td></tr>
<tr><td><img id='bar_img_1' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_1.gif" width="1" height="12" barwidth=250></td></tr>
<tr><td><img id='bar_img_2' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_2.gif" width="1" height="12" barwidth=310></td></tr>
<tr><td><img id='bar_img_3' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_3.gif" width="1" height="12" barwidth=180></td></tr>
<tr><td><img id='bar_img_4' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_4.gif" width="1" height="12" barwidth=320></td></tr>
<tr><td><img id='bar_img_5' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_5.gif" width="1" height="12" barwidth=290></td></tr>
<tr><td><img id='bar_img_6' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_6.gif" width="1" height="12" barwidth=380></td></tr>
<tr><td><img id='bar_img_7' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_0.gif" width="1" height="12" barwidth=280></td></tr>
<tr><td><img id='bar_img_8' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_1.gif" width="1" height="12" barwidth=250></td></tr>
<tr><td><img id='bar_img_9' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_2.gif" width="1" height="12" barwidth=300></td></tr>
<tr><td><img id='bar_img_10' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_3.gif" width="1" height="12" barwidth=180></td></tr>
<tr><td><img id='bar_img_11' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_4.gif" width="1" height="12" barwidth=270></td></tr>
<tr><td><img id='bar_img_12' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_5.gif" width="1" height="12" barwidth=290></td></tr>
<tr><td><img id='bar_img_13' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_6.gif" width="1" height="12" barwidth=280></td></tr>
</table>
<table cellspacing=2 cellpadding=2 border=0 class=ybox_id>
<tr>
<td><img id='ybar_img_0' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_0.gif" width="12" height="1" barheight=60></td>
<td><img id='ybar_img_1' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_1.gif" width="12" height="1" barheight=75></td>
<td><img id='ybar_img_2' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_2.gif" width="12" height="1" barheight=160></td>
<td><img id='ybar_img_3' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_3.gif" width="12" height="1" barheight=40></td>
<td><img id='ybar_img_4' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_4.gif" width="12" height="1" barheight=120></td>
<td><img id='ybar_img_5' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_5.gif" width="12" height="1" barheight=95></td>
<td><img id='ybar_img_6' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_6.gif" width="12" height="1" barheight=90></td>
<td><img id='ybar_img_7' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_0.gif" width="12" height="1" barheight=140></td>
<td><img id='ybar_img_8' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_1.gif" width="12" height="1" barheight=75></td>
<td><img id='ybar_img_9' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_2.gif" width="12" height="1" barheight=160></td>
<td><img id='ybar_img_10' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_3.gif" width="12" height="1" barheight=40></td>
<td><img id='ybar_img_11' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_4.gif" width="12" height="1" barheight=100></td>
<td><img id='ybar_img_12' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_5.gif" width="12" height="1" barheight=95></td>
<td><img id='ybar_img_13' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_6.gif" width="12" height="1" barheight=90></td>
<td><img id='ybar_img_14' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_0.gif" width="12" height="1" barheight=140></td>
<td><img id='ybar_img_15' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_1.gif" width="12" height="1" barheight=75></td>
<td><img id='ybar_img_16' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_2.gif" width="12" height="1" barheight=160></td>
<td><img id='ybar_img_17' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_3.gif" width="12" height="1" barheight=40></td>
<td><img id='ybar_img_18' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_4.gif" width="12" height="1" barheight=50></td>
<td><img id='ybar_img_19' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_5.gif" width="12" height="1" barheight=95></td>
<td><img id='ybar_img_20' border="0" src="http://www.hompydesign.com/open_source/images/status_bar_6.gif" width="12" height="1" barheight=90></td>
</tr>
</table>
</BODY>
</HTML>
사용자 삽입 이미지

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 오페라,파이어폭스,크롬 2009/04/06 23:12  댓글주소  수정/삭제  댓글쓰기

    요즘 웹표준이란 익스플로러 홍역을 치르고 이곳저곳을
    다른브라우저로 보곤합니다;;
    설명해주신 태그가 익스플로러에서만 적용되는 소스같네요
    이름에 적어둔 브라우저에서 모두 작동이 되지않습니다
    오픈캐스트 메인으로 설정해서 보는 곳인데,,

    익스플로러기반이아닌 웹표준 기반을 따른 웹소스를 적용해주시면
    더좋을것같네요;;

자바스크립트로 구성된 이미지 슬라이더입니다. 아래 HTML 소스를 sample.html 로 저장하고 실행하면 아래 화면 처럼 출력이 됩니다. 자바스크립트 입문자에게는 공부가 될만한 소스이며 자신의 필요에 맞게 커스터마이징해서 실무에 활용해볼 수 있습니다. 앞으로 자바스크립트(javascript)를 학습하는 입문자 분들에게 공부가 될만한 미니 소스들을 이따금씩 준비해볼까 합니다.



<HTML>
<HEAD>
<TITLE>이미지 스크롤</TITLE>

<style type="text/css">
a:link{color:#fff; text-decoration:none;}
a:visited{color:#fff; text-decoration:none;}
a:hover{color:#fff; text-decoration:underline;}
a:link{color:#fff; text-decoration:none;}
img{border:0px;}

.select_direction{cursor:hand}
ul, li {list-style:none; padding:0; margin:0;}

.slider_td{padding-top:16px;}
.slider_ul li {width:59px; height:64px; padding-right:9px; float:left; white-space: nowrap; overflow:hidden; }
.slider_ul li img {vertical-align:top; border:1px solid #eeeeee; width:57; height:40;white-space: nowrap;}
.slider_ul li h1 {font-family:"돋움",tahoma,verdana; padding:0; margin:0; width:59px; height:20px; line-height:20px; overflow:hidden; text-align:center; font-size:11px; font-weight:normal; padding-top:2px;white-space: nowrap;}
</style>

<script>
var my_config = [];
with (my_config) {
 my_config.speed = "30";
 my_config.scroll = 1;
 my_config.width = "500";
 my_config.height = "70";
 my_config.direction = "left";
 my_config.banners;
 my_config.slider;
 my_config.slider_1;
 my_config.slider_2;
 my_config.timer;
}
function autoScroll(type){
 my_config.direction = type;
 this.items = [];
 this.add_banner = function(image,link,title,target){
  var newItem  = {};
  newItem.image = image;
  newItem.link = link;
  newItem.title = title;
  newItem.target = target;
  this.items[this.items.length] = newItem;
 }

 this.play = function(){
  my_config.banners = this.items;
  scroll_html();
  with (my_config) {
   slider=document.getElementById("slider_box");
   slider_1=document.getElementById("slider_box_1");
   slider_2=document.getElementById("slider_box_2");
   slider_2.innerHTML=slider_1.innerHTML;
   timer=setInterval(do_timer,speed);
  }
 }
}

function scroll_html(){
 var str = "", tmp = "", b = "", c ="", d = "";
 for(var i=0;i<my_config.banners.length;i++){
   var a = my_config.banners[i]
   str += "<li><a href='"+a.link+"' target='"+a.target+"'><img src='"+a.image+"' width=57 height=40 title='"+a.title+"'></a><h1><a href='"+a.link+"' >"+a.title+"</a></h1></li>";
 }
 if (my_config.direction == "left" || my_config.direction == "right"){
  b = "<div id=slider_scroller style='float: left; width: 800%'>";
  c = " style='float: left'";
  d = "</div>";
 }
 tmp += "<div id=slider_box onmouseover='do_stop()' onmouseout='do_move()' style='overflow:hidden; width:"+my_config.width+"px; height:"+my_config.height+"px'>";
 tmp += b + "<div id=slider_box_1"+c+">" + str;
 tmp += "</div><div id=slider_box_2"+c+">"+d+"</div></div>";
 document.getElementById("slider_show").innerHTML = tmp;
}

function do_left() {my_config.direction='left'}
function do_right() {my_config.direction='right'}
function do_stop() {my_config.scroll=0}
function do_move() {my_config.scroll=1}

function do_timer(){
 with(my_config){
  if (scroll) {
   if (direction == "top"){
    if (slider_2.offsetTop-slider.scrollTop<=0){ slider.scrollTop-=slider_1.offsetHeight }
    else {slider.scrollTop++}
   } else if(direction == "down"){
    if (slider_1.offsetTop-slider.scrollTop>=0) slider.scrollTop+=slider_2.offsetHeight
    else {slider.scrollTop--}
   } else if (direction == "left"){
    if (slider_2.offsetWidth-slider.scrollLeft<=0) slider.scrollLeft-=slider_1.offsetWidth
    else {slider.scrollLeft++;}
   } else if (direction == "right"){
    if (slider.scrollLeft<=0) slider.scrollLeft+=slider_2.offsetWidth
    else {slider.scrollLeft--}
   }
  }
 }
}

function play_game (type){
 if (my_config.timer) clearInterval(my_config.timer);
 var direction = type;
 var obj = new autoScroll(type);
 obj.add_banner("http://hompy.info/attach/1/1057862274.jpg","http://hompy.info/179#1","사진 #1","_blank");
 obj.add_banner("http://hompy.info/attach/1/1091749905.bmp","http://hompy.info/179#2","사진 #2","_blank");
 obj.add_banner("http://hompy.info/attach/1/1088322503.jpg","http://hompy.info/179#3","사진 #3","_blank");
 obj.add_banner("http://hompy.info/attach/1/1214111187.gif","http://hompy.info/179#4","사진 #4","_blank");
 obj.add_banner("http://hompy.info/attach/1/1195784232.png","http://hompy.info/179#5","사진 #5","_blank");
 obj.add_banner("http://hompy.info/attach/1/1342744226.jpg","http://hompy.info/179#6","사진 #6","_blank");
 obj.add_banner("http://hompy.info/attach/1/1290697956.jpg","http://hompy.info/179#7","사진 #7","_blank");
 obj.add_banner("http://hompy.info/attach/1/1323206309.jpg","http://hompy.info/179#8","사진 #8","_blank");
 obj.add_banner("http://hompy.info/attach/1/1221839979.jpg","http://hompy.info/179#9","사진 #9","_blank");
 obj.add_banner("http://hompy.info/attach/1/1348078903.png","http://hompy.info/179#10","사진 #10","_blank");
 obj.add_banner("http://hompy.info/attach/1/1389674041.png","http://hompy.info/179#11","사진 #11","_blank");
 obj.add_banner("http://hompy.info/attach/1/1204919872.jpg","http://hompy.info/179#12","사진 #12","_blank");
 obj.add_banner("http://hompy.info/attach/1/1015707056.jpg","http://hompy.info/179#13","사진 #13","_blank");
 obj.add_banner("http://hompy.info/attach/1/1139032860.jpg","http://hompy.info/179#14","사진 #14","_blank");
 obj.play();
}
</script>
</HEAD>
<BODY LEFTMARGIN=0 TOPMARGIN=0 MARGINWIDTH=0 MARGINHEIGHT=0>
<table border="0" cellspacing="0" cellpadding="0">
<tr>
 <td width="20" class="select_direction" onclick="do_left();return false;" align=right>◁</td>
 <td class="slider_td" style="background-color:#111111">
  <ul class="slider_ul" id="slider_show"></ul>
 </td>
 <td width="20" class="select_direction" onclick="do_right();return false;">▷</td>
</tr>
</table>
<script>
play_game("left");
</script>
</BODY>
</HTML>

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. david 2011/11/03 11:01  댓글주소  수정/삭제  댓글쓰기

    이미지 스크롤 스크립트 관련 질문입니다...이미지 스크롤 스크립트에서 이미지 사이즈를 키우게 되면 이미지가 6개 정도만 나오고 롤링이 멈추어버리는데 무슨 문제인지 모르겠네요...아시는 분 알려주시기 바랍니다..감사합니다..

  2. mikali 2009/12/18 18:24  댓글주소  수정/삭제  댓글쓰기

    역시 자바.. 못따라가요..ㅠㅠ 감사합니다.

  3. 비밀방문자 2009/10/09 15:56  댓글주소  수정/삭제  댓글쓰기

    관리자만 볼 수 있는 댓글입니다.

  4. 와웅 2009/06/26 21:30  댓글주소  수정/삭제  댓글쓰기

    감사합니다

  5. brave 2009/06/23 17:47  댓글주소  수정/삭제  댓글쓰기

    감사합니다...

  6. 뮤직바 2009/03/18 14:17  댓글주소  수정/삭제  댓글쓰기

    급하게 스크립트소스가 필요했는데... 손볼 필요도 없이 딱 원하는 내용이네요.
    감사히 담아갑니다.

  7. skj 2009/02/27 17:30  댓글주소  수정/삭제  댓글쓰기

    우와 짱~~~

    자바스크립트는 넘 어려워요!~~~ㅜ ㅜ

  8. yik 2008/12/10 08:35  댓글주소  수정/삭제  댓글쓰기

    감사히 담아갑니다. 프로그램에는 꽝인 디자이너입니다. 좋은 소스로 열심히 공부를!! ㅋ 좋은 하루 보내시길 바랍니다.^^

선택한 윈도우를 항상 위로 보이도록 해주는 유틸리티 Vitrite (Always On Top)입니다. 해당 윈도우의 투명도 조절도 가능합니다. 비슷한 유틸리티들이 많이 있겠지만 소스도 함께 공개되어 있으니 프로그래머라면 소스를 수정해서 자신의 구미에 맞게 수정할 수도 있는 장점이 있을듯 합니다. 이미지나 플래시 또는 동영상을 항상 위에 올려놓고 보고 싶을 때가 있는데 그래서 여기 저기 검색을 하다가 찾아낸 눈에 띄는 유틸리티입니다. 멀티미디어 파일을 윈도우 타이틀와 테두리 없이 해당 멀티미디어 파일만 보여주는 유틸리티가 있으면 좋겠는데 찾지 못했네요. 그런 유틸리티를 알고 계신 분은 제보 바랍니다.^^


http://home.insightbb.com/~ryanvm/tinyutilities/vitrite/

* 기능키
[CTRL]+[SHIFT]+[+], [CTRL]+[SHIFT]+[-], [CTRL]+[SHIFT]+[1] ~ [CTRL]+[SHIFT]+[9]

사용자 삽입 이미지

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. gostopgo90 2007/12/30 08:51  댓글주소  수정/삭제  댓글쓰기

    제가 찾던 프로그램이네요.
    잘 사용하겠습니다.

원격지 서버 MYSQL 데이타베이스를 테이블 단위로 로컬 데이타베이스 서버로 백업과 복사를 해주는 PHP 스크립트 소스 코드입니다. 테이블명이 "tc_"로 시작하는 테이블만 복사하도록 조건문이 붙어 있습니다. 불필요하면 "tc_" 를 ""로 수정하시거나 해당 줄을 주석처리하면 되고 mysql 과 mysqldump 의 경로가 다를 수 있으므로 확인하고 다르면 수정해야합니다.
아래 소스 코드를 실행할 때, 로컬 서버 최신 데이타를 덮어버릴 수 있으므로 주의깊게 다루어야 합니다.

<?php
$check_prefix = "tc_";

$db_info['host']     = "192.168.0.10";
$db_info['db']       = "blog";
$db_info['user']     = "root";
$db_info['password'] = "password";

$db_info['date'] = date("Ymd");
if (!file_exists($db_info['date'])) mkdir($db_info['date'],0700);
$db_info['session'] = mysql_connect($db_info['host'], $db_info['user'], $db_info['password']) or die("SQL서버에 접속할 수 없습니다.");

$query = "show databases";
$out1 = mysql_query($query);
if ($out1)
while ($row1 = mysql_fetch_row($out1)) {
 echo $row1[0];
 $db_info['db'] = $row1[0];
 $db_info['outdir'] = $db_info['date'] . "/" . $row1[0];
 if (!file_exists($db_info['outdir'])) mkdir($db_info['outdir'],0700);
 $query = "show tables";
 if (mysql_select_db($row1[0])) {
  echo " +\n";
  $out2 = mysql_query($query);
  if ($out2)
  while ($row2 = mysql_fetch_row($out2)) {
   $db_info['table'] = $row2[0];
   if (strlen($check_prefix)){
    if (substr($db_info['table'],0,strlen($check_prefix))!=$check_prefix) continue;
   }
   $db_info['outfile'] = $row2[0] . ".sql";
   $db_info['outpath'] = $db_info['outdir'] . "/" . $db_info['outfile'];
   echo "\t".$row2[0]."\n";

   $str = "/usr/bin/mysqldump -h".$db_info['host']." -u".$db_info['user']." -p".$db_info['password']." ".$db_info['db']." ".$db_info['table']." > ".$db_info['outpath'];
   passthru($str);
   $str = "/usr/bin/mysql -hlocalhost -u".$db_info['user']." -p".$db_info['password']." ".$db_info['db']." < ".$db_info['outpath'];
   passthru($str);
  }
 } else {
  echo " -\n";
 }
}
?>

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

현재 디렉토리(폴더)에 있는 파일들 목록을 보여주고 링크를 달아주는 작은 PHP+JAVASCRIPT 코드입니다. 보여줄 파일 확장자를 제한할 수 있고 선택적으로 보여줄 수 있도록 되어 있습니다. PHP 로 디렉토리와 파일들을 어떻게 다룰 수 있는 지 알 수 있는 소스코드이며 적당히 가공해서 실무에도 사용할 수도 있겠습니다.

<html>
<head>
<title>현재 폴더 페이지 목록</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<style type="text/css">
A:link {color:#3366CC; text-decoration:none;}
A:active {color:#1F3174; text-decoration:none;}
A:visited {color:#999999; text-decoration:none;}
A:hover {color:#FF9966; text-decoration:underline;}
IMG { border: 0; }
body {margin:0px; padding:0px}
span {color:#7C9CA7; font:11px 돋움; line-height:19px;}
</style>

<body leftmargin="0" topmargin="0">
<table border=0 cellpadding=0 cellspacing=0><tr>
<td width=10></td>
<?
$start_page = "page_list.php";
$ext_array = array("php", "html", "htm", "gif", "jpg", "png");
$ext_max = count($ext_array);
$path = "./";

for ($n=0;$n<$ext_max;$n++) {
 echo "<td><input type='checkbox' name='add_" . $ext_array[$n] . "' checked onclick='redisplay_page()'></td><td width=30><span>" . $ext_array[$n] . "</span></td>";
}
?>
</tr></table>

<script>
var files = Array();
<?

if ($dir = opendir($path)) {
 while ($file = readdir($dir)){
  if (is_dir($path.$file)) {
   if ($file != '.' && $file != '..') {
     if (file_exists("$file/$start_page")) {
      echo "files[files.length]='$file/$start_page';\n";
     }
   } else {
   }
  } else {
   if ($file!=$start_page){
    $name_array = pathinfo($file);
    $ext = $name_array['extension'];
    if (strlen(str_replace($ext_array,"",$ext))==0) echo "files[files.length]='$file';\n";
   }
  }
 }
 closedir($dir);
}
?>


var stagex=10,stagey=20,x,y,n,z,cellw=220,cellh=20,obj,n;

function display_page() {
 files.sort();
 var i = 0, pass;
 for (n=0;n<files.length;n++){
  temp_arr = (files[n].replace(/ /gi,"%20").replace(/\\/gi,"/")).split(".");
  temp_ext = temp_arr[temp_arr.length-1];
  pass = 0;
  switch (temp_ext){
   <?
   for ($n=0;$n<$ext_max;$n++) {
    echo "case '".$ext_array[$n]."': if (!document.getElementsByName('add_".$ext_array[$n]."')[0].checked) pass = 1; break;\n";
   }
   ?>
   default : pass=1; break;
  }
  if (pass) continue;
  //x = stagex + 1+(n % 4)*cellw;
  //y = stagey + 1+ Math.floor(n/4) * cellh;
  x = stagex + 1+ Math.floor(i/30) * cellw;
  y = stagey + 1+ (i % 30) * cellh;
  document.write('<div id="block_'+n+'" style="position:absolute; background-color:#efefef; z-index:'+z+'; left:'+x+'px; top:'+y+'px; width:'+(cellw-1)+'px; height:'+(cellh-1)+'px; padding-left:5px; display:block"><span>'+(10001+i).toString().substring(1)+': <a href="'+files[n]+'">'+files[n].replace('<?=$start_page;?>','')+'</a> <a href="'+files[n]+'" target=_blank>▲</a></span></div>');
  i++;
 }
}

function redisplay_page() {
 var i = 0, pass, obj;
 for (n=0;n<files.length;n++){
  temp_arr = (files[n].replace(/ /gi,"%20").replace(/\\/gi,"/")).split(".");
  temp_ext = temp_arr[temp_arr.length-1];
  pass = 1;
  switch (temp_ext){
   <?
   for ($n=0;$n<$ext_max;$n++) {
    echo "case '".$ext_array[$n]."': if (!document.getElementsByName('add_".$ext_array[$n]."')[0].checked) pass = 0; break;\n";
   }
   ?>
   default : pass=1; break;
  }
  if (pass) {
   //x = stagex + 1+(n % 4)*cellw;
   //y = stagey + 1+ Math.floor(n/4) * cellh;
   x = stagex + 1+ Math.floor(i/30) * cellw;
   y = stagey + 1+ (i % 30) * cellh;
   obj = document.getElementById('block_'+n);
   obj.style.display='block';
   obj.style.left = x;
   obj.style.top = y;
   i++;
  } else {
   document.getElementById('block_'+n).style.display='none';
  }
 }
}

display_page();

</script>
</body>
</html>

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

아는 분이 블로그 주소를 바꾸려고 하는데 기존 링크나 트랙백이 무용지물이 되는 문제가 생긴다고 해결책에 대해 메신져로 물어오셨습니다. 업무중이라 자세한 답을 해드리지 못해 이렇게 글로 남겨봅니다.

아래 자바스크립트에서 빨간색 부분을 기존 블로그 주소로, 파란색 부분을 새로 바뀔 블로그 주소로 수정해주시고 수정하신 스크립트를 블로그 스킨 상단 또는 하단에 부착하세요. 그리고 녹색 부분은 2초 후에 페이지를 전환한다는 의미가 됩니다. 바로 페이지가 전환되기를 희망한다면 setTimeout("go_mypage()",2000); 를 go_mypage(); 로 교체 하세요. 샘플 화면을 보시려면 아래 링크를 클릭해보세요.
http://www.hompydesign.com/tt/332

<script>
function switch_page(src, dest){
  var url = location.href.replace(src,dest);
  location.replace(url);
}
function go_mypage() {
  switch_page('www.hompydesign.com/tt','hompy.info');
}
setTimeout("go_mypage()",2000);
</script>

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 양깡 2007/12/01 11:23  댓글주소  수정/삭제  댓글쓰기

    웹프그래머님은 저에게 알라딘의 요술램프같은 존재~ ^^ 고맙습니다.

    업무시간인데 귀찮게 메신저로 여쭤봐서 죄송스러웠는데 이렇게 정리까지 해주시다니~ 다행인지, 저 이외에도 많은 분들께서 궁금해 하셨던 것 같습니다. ㅎㅎ

  2. META-MAN 2007/11/30 15:31  댓글주소  수정/삭제  댓글쓰기

    시간이 나서, 고정된 주소가 아니라, 어떠한 요청에서건 다이나믹하게 포워딩 해주는 스크립트를 짜 봤습니다.

    트랙백으로~~~

  3. Adeurian 2007/11/30 13:42  댓글주소  수정/삭제  댓글쓰기

    역시 실력자분들이 많으시네요.^^

    좋은 정보 배워서 갑니다.

  4. META-MAN 2007/11/30 13:29  댓글주소  수정/삭제  댓글쓰기

    무한루프에 빠집니다. 건방지지만 살짝 고쳐 봤습니다.
    먼저 2초후 바뀌는거...
    <script type="text/javascript">
    // <![CDATA[
    var dest = "http://hompy.info"; //URL for target Blog
    function switch_page()
    {
    document.location.replace(dest);
    }
    function go_mypage(){
    if(document.URL != dest)
    setTimeout("switch_page()",2000);
    return;
    }
    window.onload = go_mypage;
    // ]]>
    </script>

    잽싸게 바뀌는거~~~~~~~~
    <script type="text/javascript">
    // <![CDATA[
    var dest = "http://hompy.info"; //URL for target Blog

    function go_mypage(){
    if(document.URL != dest)
    document.location.replace(dest);
    return;
    }
    window.onload =function(){ go_mypage();}
    // ]]>
    </script>

  5. 외로운까마귀 2007/11/30 13:09  댓글주소  수정/삭제  댓글쓰기

    이거 계속 반복이 되는데요.. 멈추질 않아요.. -_-;;

  6. 외로운까마귀 2007/11/30 12:57  댓글주소  수정/삭제  댓글쓰기

    도메인뿐아니라 티스토리 주소에서 도메인도 가능한건가요??

  7. 문차일드 2007/11/30 12:21  댓글주소  수정/삭제  댓글쓰기

    와~ 이런방법이 있었군요!
    도메인을 변경할 때 임시적인 데드링크 걱정 없겠습니다 ^^

인터넷 서핑하다가 발견한 책장 넘기기 효과, 전자책(e-book) 스타일 효과를 표현하기 위해 사용될 수 있는 플래시 구현 원리와 방법론 그리고 플래시 액션스크립트입니다. 책장 넘기기(page flip) 효과를 구현할 수 있도록 도와주는 유/무료 라이브러리를 사용하면 보다 간단히 만들 수도 있겠지만 때론 원리와 방법론을 알고 싶을 때가 있고 이를 알고 구현해보는 것이 자신의 기술적인 퀄리티를 높여줄 수 있습니다.

The Page Turn Effect in Flash MX

by Sham Bhangal, author of Flash Hacks
09/03/2004

In Hack #25 of Flash Hacks, I talk in general terms about how symmetry can aid the thought and design processes when you are developing scripted effects, because symmetry is a very common feature in both natural and man-made effects. I go on to show how to deconstruct one of the most recent "How is that done?" effects, the page turn, by looking for symmetry in the effect. What I don't cover is how to develop code that can be used to create the page turn effect. This article provides that part of the equation.

The development of the page turn hack is a useful exercise to develop, because it contains three of the most common tricks in Flash motion graphics effects--property-based animation, embedded movie clips, and masking. The last two are features that seem to confuse developers coming to Flash from other web programming languages. Having a good understanding of how these two features are used in the page turning exercise is instructive in learning how complex graphical effects are built up in Flash, because you can rarely create such effects using traditional property-based animation alone.

The source files developed in this article can be found on the download page for the Flash Hacks book. Although the code presented in this article is for Flash MX 2004, you will also find additional source files that are compatible with Flash MX for this hack (and almost all of the other hacks in the book) on the download page.

Symmetry and Page Turning

The symmetry of a turning page is shown below. Assuming that the turning page is folded right over, the shape of the two revealed pages is always symmetrical around the fold.

사용자 삽입 이미지
Four stages in a page turn. The dotted line shows the page fold, and this is also the line of symmetry

In any coded version of the page turn effect, creating this line of symmetry is a crucial first step.

During the page turn, a number of things happen.

The first is that the original page (area a) slowly disappears, and is replaced by the reverse edge of the turning page (area c). As the original page disappears, the page underneath it appears (area b).

사용자 삽입 이미지
The changes that occur as the page turns

The second step in working out how to create the code is in deciding which of the three areas (a, b, or c) that our code has to control. Symmetry tells us that we will have a much easier life if we chose to consider b and c. How do I know that a is irrelevant?

  • Area a is not symmetrical and is also an irregular shape. This would make it difficult to form equations that describe area a.
  • Areas b and c are symmetrical images of each other. We can immediately see from this that areas b and c must be part of the same process, and this makes their motion easier to implement in code.

Not only does symmetry help us deduce the way the page turn works, but considering symmetry also helps us to find the easiest solution!

We can now split the process of finding a programmed solution to animating the page turn effect into three parts:

  • Creating the line of symmetry.
  • Creating the animation of area b.
  • Creating the animation of area c.

We will tackle each in turn below.

Creating the Line of Symmetry

Looking at the previous diagrams, we see that the line of symmetry in the page turn effect starts at 45 degrees and moves towards the book spine. As it reaches the spine, the line of symmetry is at 90 degrees (straight up), giving us a fully open page on either side of the line of symmetry.

The interactive diagram below shows the required motion for the line of symmetry. Click-drag the circle at the bottom of the dotted line to see the line of symmetry move as per the final effect.

사용자 삽입 이미지
The source .fla for this animation, pageTurn01.fla, is on the download page for the Flash Hacks book. Click on the image above to open the animation in a new window.

When interacting with this diagram, you should see that:

  • The line of symmetry is constrained between the left and right edges of the page-- PAGE_SPINE and PAGE_EDGE.
  • The line is at 90 degrees when it is at PAGE_SPINE.
  • The line is at 45 degrees when it is at PAGE_EDGE.

This gives us the following equation for the angle of the line of symmetry, assuming that we have created this line as a movie clip with instance name line:


line._rotation = 45*(line._x-PAGE_SPINE)/page._width;

(Note: the line movie clip points straight up when it is at 90 degrees; hence, the above equation is really subtracting an angle between 0 and 45 degrees as the position of the line is moved between PAGE_SPINE and PAGE_EDGE.)

The rest of the code in the listing is pretty self-explanatory. The function pageTurn runs as the onMouseMove handler for the instance line (given that onMouseMove is more efficient than an onEnterFrame when you are dragging), and pageRelease acts as the onRelease handler.

Within pageTurn, the if statement constrains the line between the limits PAGE_EDGE and PAGE_SPINE. The updateAfterEvent() makes sure that the line is animated whenever the mouse moves. (This is usually much faster than every frame, thus ensuring smoother animation than if we had used an onEnterFrame, as per Hack #71 in the Flash Hacks book, which talks about a performance budget and the best use of each event to build responsive animation.)

The pageRelease function simply deletes the onMouseMove handler, which makes sure that animation stops when you release the line movie clip.


function pageTurn():Void {
  line.onMouseMove = function() {
      line._x = _xmouse;
      if (line._x>PAGE_EDGE) {
        line._x = PAGE_EDGE;
      } else if (line._x<PAGE_SPINE) {
        line._x = PAGE_SPINE;
      }
    line._rotation = 45*(line._x-PAGE_SPINE)/page._width;
    updateAfterEvent()
  };
}
function pageRelease():Void {
  delete line.onMouseMove;
}
var PAGE_SPINE:Number = page._x;
var PAGE_EDGE:Number = page._x+page._width;
var lineAngle:Number = 45;
line.hotspot.onPress = pageTurn;
line.hotspot.onRelease = pageRelease;
line.hotspot.onReleaseOutside = pageRelease;


Creating the First Page (Area b)

The easiest page to create is the page under the one being turned, or area b in the previous diagrams. As stated in the book, this area is a mask that is placed to the right of the line of symmetry. As the line of symmetry is moved from PAGE_EDGE to PAGE_SPINE, the page underneath the one being turned is revealed. In the interactive diagram below, the page being revealed is the one with the "2" on it.

사용자 삽입 이미지
The source .fla for this animation, pageTurn02.fla, is on the download page for the Flash Hacks book. Click on the image above to open the animation in a new window.

When interacting with this diagram, you should see that:

  • The grey rectangle will move with the line of symmetry. This is because it is embedded within the movie clip for the line (thus, no code is required to make the rectangle follow the line).
  • When you click the red text ("click here to activate the mask"), the rectangle will start masking the page with "2" over it.
  • The lower page ("2") is in reality above what appears to be the upper page ("1"). This is due to the way Flash masking works, which is the inverse of what you would expect. When the mask is not over the "2" (when the line of symmetry at the 45 degree position), the "2" is invisible, or "fully masked." When the mask is totally covering the mask (with the line of symmetry at the 90 degree position) the "2" is fully visible, or "unmasked." Because of this inverse action, we have to mask the "2" page rather than the "1" page, and this is why the "2" page is above the "1."

In terms of implementation, the mask clip is within the instance line and has the instance name rightMask. To make this rectangle start acting as the mask for the "2" page (which has an instance name bottomPage), we use the line:


 bottomPage.setMask(line.rightMask);
You can see this (the file pageTurn02.fla) being used in the onRelease event handler for the button corresponding to the "click here to activate the mask" button (button activate);:

activate.onRelease = function() {
  bottomPage.setMask(line.rightMask);
};

It should now be becoming clear what area we have chosen to ignore (area a). For those that have not worked it out, all will be revealed when we look at area c.

Creating the Second Page (Area c)

Creating the second page area, the reverse edge of the turning page, is harder to create than the previously completed one. This is not because of the code involved, but has more to do with visualizing what the mask that reveals this page needs to do.

Not to fear, because you can visualize what needs to happen via the interactive animation below. This adds the second mask area and the reverse of the turning page (area c). Again, click the "click here to activate the mask" text to make the mask start working.

사용자 삽입 이미지
The source .fla for this animation, pageTurn03.fla, is on the download page for the Flash Hacks book. Click on the image above to open the animation in a new window.

The area corresponding to the part we want to reveal as the page turns (A) is shown in green hatching in the diagram below. It is created by masking the reverse of the turning page (C) with a mask to the left of the line of symmetry (B).

사용자 삽입 이미지
Creating the reverse side of the turning page

The equation of the reverse side of the turning page (C) has much the same equation as the line of symmetry, except that it starts at 90 degrees instead of 45, giving us the equation for the rotation of the back of the page (as represented by the dotted red line) of:


backPage._rotation = 90*(line._x-PAGE_SPINE)/page._width

The back of the page is actually an embedded movie clip--an instance of backPage that contains a second movie clip, page. The instance page contains the actual page graphic. As backPage rotates, page moves with it, but page also moves relative to its own x axis (noting that this axis is also rotating). In the diagram, the movement of page relative to the red dotted line shows the result of this embedded movement. The embedding allows us to create the fairly complex rotational motion required of the turning page without having to resort to trigonometry, which would 1) be something that many designers hate and 2) potentially slow down the effect (accurate trig calculations are slow because they use a rather long binomial series to give the result).

사용자 삽입 이미지
The embedded animation that creates the back of the turning page

The interactive animation also shows us why we were able to get away with not considering the area a in the page turn effect; it is simply what is left over when areas b and c are added! As long as we place the top page below the other movie clips, it will naturally get obscured by the turning page. By realizing this (or rather, assuming it is unimportant because of symmetry early on), we have avoided having to animate it at all!

Note: to keep the discussion simple, I have made the pages single-sided (the pages only have content on one side, and in the effect so far, the back if the turning page is seen as a blank page.). You can easily create double-sided pages by making the movie clip back change per page turn.

Completing the Effect

The page turn doesn't look accurate at the moment, because of our approximation of assuming a perfect fold. Although we could fix this mathematically, Flash just doesn't have the performance needed to support the calculations to simulate curved pages. Readers of the Hacks book will know the fix to this--think of a hack to get around the problem.

In this case, the illusion of flexible pages is provided by some static alpha shadows that are applied to the pages as they turn. Although these are approximated shadows, they give the effect a real feeling of volume, and lift the animation towards realism considerably.

This is a major issue with much of Flash design--although you can do a lot with ActionScript, you almost always need some artistic ability to know how to create the graphical approximations needed to get beyond the code and create stuff that looks cool and/or realistic.

사용자 삽입 이미지 사용자 삽입 이미지
사용자 삽입 이미지 사용자 삽입 이미지
The page turn with faux shading created via alpha gradients superimposed over the pages

The interactive diagram below shows the effect with some shading added to the movie clips. Click-drag on the reverse of the page (the curled page area to the lower right) to turn the page.

사용자 삽입 이미지

The source for this example is available as pageTurn04.fla from the Flash Hacks download page. The final effect, pageTurn.fla, shows the same effect, but with multiple pages. You can download it from the same page. Click on the image above to open the animation in a new window.

Conclusion

The page turn effect described in this article shows how a fairly complex effect can be created through ActionScript.

As shown with this example, Flash retains its roots as a visual authoring tool even if you are using code to drive your motion graphics. The effect also relies heavily on other graphical features in addition to the code. These include embedded movie clips, masking, and faux 3D shading.

If you want to create compelling scripted motion graphics in Flash, being able to use the drawing tools is usually not that far away from being able to use ActionScript in relative importance.

You may be interested to know that a fully featured and open source page-turning .fla file is available at www.iparigrafika.hu/pageflip. The URL is well worth a visit if you want to create a commercial site based around the page turn effect quickly (that is, without further extending our version). Although it was created for Flash MX, the downloadable file extends the effect to include tear-off pages, solid pages (for book covers), and page cutouts.

Sham Bhangal is an author of and contributor to numerous books on Flash and ActionScript, including Foundation ActionScript for Flash MX, Flash MX Designer's ActionScript Reference, and Macromedia Flash MX Upgrade Essentials.

http://www.oreillynet.com/pub/a/javascript/2004/09/03/flashhacks.html

웹프로그래머의 홈페이지정보 블로그 http://hompy.info

댓글을 달아 주세요

  1. 쇼니쇼니 2010/04/23 11:19  댓글주소  수정/삭제  댓글쓰기

    꺄 이거 만들라고 찾아댕겼는데 너무너무 좋은 자료네욧!물론 해석하면서 해야하긴하지만 ㅠ_ㅠ 감사해요 열공하겟슴당 ㅎㅎ