2008의 게시물 표시

플래시 액션스크립트 3.0 나만의 정리 -1

플래시로 만들면 좋을거 같다.. 하는 아이디어가 떠올라서 오늘부터 플래시를 공부하기로 했다. '컴퓨터 언어는 책이 없어도 인터넷에 많은 자료를 통해서 충분히 익힐 수 있다'라는 주의어서 야웅닷컴의 액션스크립트 3.0 강의를 보기로 했다. 처음 예제를 보는데 이건 뭐 자바도 아니고-_-;; 액션스크립트 2.0과 3.0이 완전히 달라졌다는 말에 3.0을 공부하기로 했고, 최신버전인 flas cs3으로 공부하기로 했다. 예전에 플래시 소스라고 해서 받아서 2004 mx를 통해 봤는데 인터페이스가 적응이 안되어 관뒀던 기억이 있어서 새로운 버전으로 받은것이다.(이런 안좋은 기억에 대해 선택이 좌지우지 되는 경우가 많다.) 아무튼 금붕어 두뇌를 보조하기 위하여 이 게시물을 쓴다. 이 게시물은 기본적인 프로그래밍 지식이 있는 상태에서 본다면, 아 플래시가 이런 구조이구나, 정도의 개념파악을 할 수 있을 것이다. 간혹 변수명이 서로 다르고 생략된 부분이 많이 있는데, 그런건 크게 중요한건 아니므로 패스, 우선 강의의 48강까지의 내용을 초 간단하게 요약한 것이다. 다음강의가 xml 인거 보면 아무래도 복잡해 질거 같아 여기까지 정리해본다. 강의를 제공해주신 야웅닷컴과 김기준 강사님께 감사드린다. 1. 개체선언 시 변수선언 : var a:int 함수 선언 : public function Say():String 클래스 구현 : var 인스턴트명:클래스명 = new 클래스명(); 2. 클래스와 패키지 클래스는 as파일에서만 만들 수 있다. 액션스크립트의 Package{} == 네임스페이스 -> as파일의 다른 내용들을 감싼다. trace("동물")는 debug console 창에 '동물'이라 표시하라는 함수이다. package 안에는 1개의 클래스를 두는 것이 원칙이므로 2개의 클래스 Lion 클래스와 Cat 클래스는 package 밖에 코딩한다. Lion, Cat 클래스 앞에 있는 internal은 같은 패키지 내에서 참조할...

크로스도메인에서 플래시 XML연동

최근 이미지로딩 및 캐싱 문제로 이미지서버를 따로 분리하는 작업을 하고 있다. 이미지에는 문제가 없지만 플래시에는 문제가 발생했다. 일단 XML을 로딩해서 쓰는 플래시에서 연동이 안되는 문제가 발생했는데. (swf는 이미지서버에, xml은 웹서버에 위치해 있다) 즉 swf와 xml이 다른서버에 있게 되면 xml을 호출 할 수 없게 되는 것이다. 이 때는 크로스 도메인을 설정하여 xml을 호출하여야 하며 이를 크로스도메인정책파일 이라고 한다. 이문제를 해결하기 위해서는 두가지 사항을 추가해야 한다. 1. crossdomain.xml 설정 [?xml version="1.0" encoding="UTF-8" ?] [!-- DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd" --] [cross-domain-policy] [allow-access-from domain="*.visualog.com" to-ports="*" /] [/cross-domain-policy] allow-access-from domain : 허용할 도메인 ( *.허용할도메인 ) to-ports : 허용할 포트 ( * 모든포트 ) 이 xml 파일을 루트 폴더 혹은 특정 폴더의 경로에 위치시켜주면된다. 자 크로스도메인xml파일을 설정했다면 이제는 2. 플래시 파일에도 허용도메인을 설정해야 한다. 액션 프레임을 만들어서 System.security.allowDomain("*"); System.security.loadPolicyFile("허용할도메인/특정폴더/crossdomain.xml"); crossdomain.xml의 경로가 루트일때는 위에 crossdomain.xml의 경로가 특정폴더 일때는 아래처럼 작성해...

prototype

냠. 무비클립에 관계된것. 모든 무비클립에 대한 global적이다. 변수지정 MovieClip.prototype.mov = "I'm moving!!!!"; 요로코롬 하면 모든 무비클립이 mov라는 변수를 가지게되고 그 변수 값은 "I'm Moving!!!!"이 되겠다. 함수지정 이건 너무도 잘알고 있는... MovieClip.prototype.mov = function(a,b,c,d) this._x = a; this._y = b; this._xscale = c; this._yscale = d; }; 모든 무비클립이 mov라는 함수를 가지고 있다. 이건 몰랐다. class지정. (지정이라기보단 상속이란다.) 턴옥이란 클래스가 마징가랑 건담을 가지고있는데 무뇽이란 클래스가와서 가치 가지고 놀재. 이럴때 쓸수 있지. 턴옥 = function(){ 마징가 건담 컴퓨터 } 무뇽 = function(){ 투스카니 } 무뇽.prototype = new 턴옥(); 이렇게 하면 무뇽이는 턴옥이의 것을 사용가능하게 된다는게야. 근데 무뇽이는 투스카니 안태워줘.

ColorMatrixFilter

import flash.filters.ColorMatrixFilter; import mx.transitions.Tween; import mx.transitions.easing.*; System.security.allowDomain("http://www.helpexamples.com"); var mclListener:Object = new Object(); mclListener.onLoadInit = function(target_mc:MovieClip):Void { // center movie clip instance on Stage target_mc._x = (Stage.width - target_mc._width) / 2; target_mc._y = (Stage.height - target_mc._height) / 2; target_mc.watch("brightness", brightnessWatcher, target_mc); // animate the target_mc movie clip between -100 and +100 brightness var myTween:Tween = new Tween(target_mc, "brightness", Elastic.easeOut, 100, -100, 3, true); myTween.onMotionFinished = function() { this.yoyo(); }; }; this.createEmptyMovieClip("img_mc", 10); var img_mcl:MovieClipLoader = new MovieClipLoader(); img_mcl.addListener(mclListener); img_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", img_mc); function b...

ConvolutionFilter (회선변경)

import flash.filters.ConvolutionFilter; import flash.display.BitmapData; this.createEmptyMovieClip("shape_mc", 1); shape_mc.createEmptyMovieClip("holder_mc", 1); var imageLoader:MovieClipLoader = new MovieClipLoader(); imageLoader.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", shape_mc.holder_mc); var matrixArr:Array = [1, 4, 6, 4, 1, 4, 16, 24, 16, 4, 16, 6, 24, 36, 24, 6, 4, 16, 24, 16, 4, 1, 4, 6, 4, 1]; var convolution:ConvolutionFilter = new ConvolutionFilter(5, 5, matrixArr); shape_mc.filters = [convolution]; var mouseListener:Object = new Object(); mouseListener.onMouseMove = function():Void { convolution.divisor = (_xmouse / Stage.width) * 271; convolution.bias = (_ymouse / Stage.height) * 100; shape_mc.filters = [convolution]; }; Mouse.addListener(mouseListener);

이미지 왜곡필터

import flash.filters.DisplacementMapFilter; import flash.geom.Point; import flash.display.BitmapData; var perlinBmp:BitmapData; var displacementMap:DisplacementMapFilter; var mclListener:Object = new Object(); mclListener.onLoadInit = function(target_mc:MovieClip):Void { target_mc._x = (Stage.width - target_mc._width) / 2; target_mc._y = (Stage.height - target_mc._height) / 2; perlinBmp = new BitmapData(target_mc._width, target_mc._height); perlinBmp.perlinNoise(target_mc._width, target_mc._height, 10, Math.round(Math.random() * 100000), false, true, 1, false); displacementMap = new DisplacementMapFilter(perlinBmp, new Point(0, 0), 1, 1, 100, 100, "color"); shapeClip.filters = [displacementMap]; }; var shapeClip:MovieClip = this.createEmptyMovieClip("shapeClip", 1); shapeClip.createEmptyMovieClip("holderClip", 1); var imageLoader:MovieClipLoader = new MovieClipLoader(); imageLoader.addListener(mclListener); imageLoader.loadCl...

이미지에 노이즈효과

import flash.display.BitmapData; this.createTextField("status_txt", 90, 0, 0, 100, 20); status_txt.selectable = false; status_txt.background = 0xFFFFFF; status_txt.autoSize = "left"; function onMouseMove() { status_txt._x = _xmouse; status_txt._y = _ymouse-20; updateAfterEvent(); } this.createEmptyMovieClip("img_mc", 10); img_mc.loadMovie("http://www.helpexamples.com/flash/images/image1.jpg"); var noiseBmp:BitmapData = new BitmapData(Stage.width, Stage.height, true); this.attachBitmap(noiseBmp, 20); setInterval(updateNoise, 100); var grayScale:Boolean = true; function updateNoise():Void { var low:Number = 30 * _xmouse / Stage.width; var high:Number = 200 * _ymouse / Stage.height; status_txt.text = "low:" + Math.round(low) + ", high:" + Math.round(high); noiseBmp.noise(Math.round(Math.random() * 100000), low, high, 8, true); }

이미지 흐리게 하기

import flash.filters.BlurFilter; import mx.transitions.Tween; import mx.transitions.easing.*; this.createEmptyMovieClip("holder_mc", 10); holder_mc.createEmptyMovieClip("img_mc", 20); var mclListener:Object = new Object(); mclListener.onLoadInit = function(target_mc:MovieClip) { target_mc._x = (Stage.width - target_mc._width) / 2; target_mc._y = (Stage.height - target_mc._height) / 2; var myTween:Tween = new Tween(target_mc, "blur", Strong.easeInOut, 0, 20, 3, true); myTween.onMotionChanged = function() { target_mc._parent.filters = [new BlurFilter(target_mc.blur, target_mc.blur, 1)]; }; myTween.onMotionFinished = function() { myTween.yoyo(); } }; var my_mcl:MovieClipLoader = new MovieClipLoader(); my_mcl.addListener(mclListener); my_mcl.loadClip("http://www.helpexamples.com/flash/images/image1.jpg", holder_mc.img_mc);

table

1 1 1 1 table style="BORDER-COLLAPSE: collapse" bordercolor="#3e3e3e" cellspacing="0" cellpadding="3" rules="rows" width="500" border="2" frame="hsides"