본문 바로가기

액션스크립트3.0

상속과 합성 선택 액션스크립트를 공부하고 클래스를 배우고 나서 상속과 합성을 배우면서 느꼈던 어려운 부분중에 하나가 어디에 상속을 쓰고 어디에 합성을 사용해야 하느냐가 아닐가 싶다. EAS3.0을 보면서 괜찮은 방법이 있어서 적어볼가 한다. 다형성을 활용하려면, 상속을 사용하는 것을 고려한다. 어떤 클래스에서 단순히 다른 클래스의 기능이 필요한 경우라면, 합성 관계를 고려한다. 구현하려는 클르새가 기존 클래스와 거의 동일한 기능을 한다면, 상속 관계를 고려한다. 상속과 합성의 각각 장점 코드를 수정할 경우 합성을 사용하는 코드는 상속을 사용하는 코드보다 유지 보수하기가 더 쉽다. 상속에 기반을 둔 코드는 합성에 기반을 둔 코드보다 실행 속도가 빠른 경향이 있다. 상속과 합성을 어떤걸 사용하는게 좋을지에 대한 자료는 많다... 더보기
BitmapData 에 draw할때 크기 줄이기 BitmapData 에 draw할때 크기 줄이기 BitmapData의 외부 이미지를 불러왔을때 결과물의 크기를 줄이고 싶을때 Sprite 객체나 비트맵객체의 크기를 width값 또는 scaleX, scaleY를 통해 줄여도 draw되는 과정에서 원래 크기로 바뀐다. 이같은 문제를 해결하기 위해서는 Matrix 메서드를 이용하면 된다. var matrix:Matrix = new Matrix(); var scaleX:Number = 0.2; var scaleY:Number = 0.1; 매트릭스 메서드를 생성해주고 크기값을 만들어준다음 scale메서드를 이용하여 아래처럼 해주면 draw되는 과정에서 비트맵 데이터의 크기를 원하는데로 늘리고 줄일 수 있다. matrix.scale(scaleX, scaleY); .. 더보기
setPixel32 도트 생성 var bitmap:BitmapData = new BitmapData( 550, 400, true, 0xffffffff ); var image:Bitmap = new Bitmap( bitmap ); addChild( image ); var _bool:Boolean = true; stage.addEventListener (MouseEvent.CLICK, onMouseDownHandler ); function onMouseDownHandler( event:MouseEvent ):void{ if( _bool == false ){ _bool = true; removeEventListener(Event.ENTER_FRAME, onEnter ); }else{ addEventListener(Event.ENTER_FR.. 더보기
Loader var ldr:Loader = new Loader(); var url:String = "http://cfile9.uf.tistory.com/image/147441274BCC165503C1D5"; var urlReq:URLRequest = new URLRequest( url ); function completeHandler( e:Event ):void { trace( ldr.content ); } ldr.contentLoaderInfo.addEventListener( Event.COMPLETE, completeHandler ); ldr.load( urlReq ); addChild( ldr ); - content : 로드되는 객체( SWF, JPG, PNG, GIF)에 대한 내용 - contentLoadrI.. 더보기
switch 문과 산순연살자를 이용하여 계산기 만들기 /* 프로그램이름 : 계산기 만 든 이 : 권오남 만 든 날 짜 : 2009. 04. 21 */ // 변수 선언 var numA:String; var numB:String; var methodCalc:String; var numResult:Number; var numMc:int = 10; // 버튼으로 라벨 지정 btn00_mc.label = "0"; btn01_mc.label = "1"; btn02_mc.label = "2"; btn03_mc.label = "3"; btn04_mc.label = "4"; btn05_mc.label = "5"; btn06_mc.label = "6"; btn07_mc.label = "7"; btn08_mc.label = "8"; btn09_mc.label = "9"; bt.. 더보기
Array 함수를 이용해서 무비클립 복제와 Drag시키기 package { import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; public class BaseDocument extends MovieClip { private var arr:Array; public function BaseDocument():void { init(); } private function init():void{ arr = []; var len:int = 10; for ( var i:int = 0; i < len; i++ ) { var mc:Mc = new Mc(); mc.x = Math.random() * stage.stageWidth; mc.y = Math.random() .. 더보기
removeChild, removeEventListener를 통한 메모리상 객체지우기 package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.events.MouseEvent; import flash.display.MovieClip; public class RemoveChild extends Sprite { private var sprite:Sprite; public function RemoveChild() { init(); } private function init():void { sprite = new Sprite(); addChild(sprite); sprite.graphics.beginFill( 0xff0000); sprite.graphics.drawRect( 0, 0, 100, 1.. 더보기
키보드 제어 package { import flash.display.Sprite; import flash.events.KeyboardEvent; import flash.ui.Keyboard; public class KeyCodes extends Sprite { private var ball:Sprite; public function KeyCodes() { init(); } private function init():void { ball = new Sprite(); addChild(ball); ball.graphics.beginFill(0x000000); ball.graphics.drawCircle(0, 0, 40); ball.graphics.endFill(); ball.x = stage.stageWidth / 2; .. 더보기
lineTo와 moveTo를 활용한 그림판 만들기 package { import flash.display.Sprite; import flash.events.MouseEvent; public class drawLine extends Sprite { private var _sprite:Sprite; public function drawLine() { _sprite = new Sprite(); addChild(_sprite); _sprite.graphics.beginFill( 0xffffff ); _sprite.graphics.drawRect( 0, 0, 400, 400 ); _sprite.graphics.endFill(); _sprite.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown2 ); _sprite.add.. 더보기
쿡북 lineTo를 이용한 랜덤 선생성 package { import flash.display.Sprite; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; public class ExampleApplication extends Sprite { private var _sprite:Sprite; private var _textField:TextField; public function ExampleApplication() { _sprite = new Sprite(); addChild(_sprite); _sprite.graphics.beginFill( 0xffffff); _sprite.graphics.drawRect(260, 180, 50,.. 더보기