자동차제어 인터페이스. 자동차들이 있는 클래스에서 공통된 제어는 페달 부분이고, 크게 브레이크와 악셀로 나뉜다. 이 페달부분을 인터페이스로 각 자동차들이 구현상속을 받고, 운전자인 드라이버는 그저 페달(인터페이스)만 조작할 뿐이다. 자동차를 바꾸고 싶을때는, 호스트코드에서 필요에 따라 자동차의 종류만 바꾸어 주면 된다. (내 실력이 실력인지라.. 상황에 맞게 예제를 코딩하였지만 코드의 확장 및 유연성이 부족함. 따라서 응용하려면 더욱 공부하는 수밖에 없다.) 구성은 다음과 같다. 자동차의 종류 - "쿠페, 레미콘, 세단" 클래스 자동차의 공통점 - "페달 : 브레이크, 악셀" 인터페이스 운전자 - "드라이버" 클래스 호스트 코트 - "Main" 도큐멘트 클래스 IPedal.as package carCon..
프로그래밍 언어에서 공통의 요소를 하나의 interface로 만들어서 implements로 구현상속을 시킨 후 기능구현은 그 구현상속된 클래스에서 동작하게된다. 예를 들어서 "자동차"라는 객체가있다. 프로젝트 안에서 한개가 아닌 쿠페, 레미콘, 세단, 포크레인, 렉카 등이 사용되고 자동차를 움직이는 드라이버는 어떠한 자동차이건 페달(브레이크,악셀)을 밟아서 사용하게된다. 이때 드라이버는 항상 페달(브레이크,악셀)을 사용하고, 자동차의 종류를 바꾸고 싶을 경우에는 행위를 바꾸는게 아니라 자동차모델만 변경 시켜서 운전을 하면된다. (자동차를 이용한 인터페이스는 다음 포스팅에서 자세히 설명.) 일단 이론적으로 interface가 필요한 이유는, 다형성에따른 다중상속 그리고 각각의 객체를 interface로 캐..
패키지 : flash.errors 클래스 : public dynamic class IllegalOperation_error 메서드 : IllegalOperation_error(message:String = "") 구현되지 않거나 현재의 사용이 구현 범위에서 벗어나는 경우 IllegalOperation_error 예외가 발생합니다. package { import flash.display.DisplayObject; import flash.display.Sprite; import flash.errors.IllegalOperationError; public class IllegalOperation_errorExample extends Sprite { public function IllegalOperation_e..
flashVars 값이 많을경우 사용하는 방법이다. xml을 이용해도 되고 그냥 &로 값을 이어붙여서 써도 되겠지만, 오브젝트형식으로 속성을 정의하여 한눈에 보기도 쉽고, 수정도 용이하고.. 그런방법이다. 일단 플래시빌더에서 최종 컴파일하여 bin-debug에 있는 메인 HTML에서 적용했을때, 10 : 우선 jquery라이브러리.js가 필요하다. 다운로드는 여기에서 http://jquery.com/download/ 제이쿼리 API는 http://api.jquery.com/ 여기에 자세하게 설명되어있다(영문) 11: swfobject.js는 플래시빌더에서 자동생성해 주므로 패스. 참고로 플래시IDE (CS5 ~ CS6) 에서는 js파일이 생성되지 않는 것으로 알고있는데, 만들어진 html에서 flashV..
over했을때 color속성이 바뀌고, out 했을 때에는 원본의 color속성으로 되돌아 올때는 다음과 같이. 소스) import caurina.transitions.*; import caurina.transitions.properties.ColorShortcuts; ColorShortcuts.init(); var simpleSprite:Sprite = new Sprite(); simpleSprite.graphics.lineStyle(); simpleSprite.graphics.beginFill(0xff0000); simpleSprite.graphics.drawRect(0,0,200,100); addChild(simpleSprite); simpleSprite.x = (stage.stageWidth - ..
플래시 IDE (CS4 ~ CS6)에서 어떤폴더에서 작업을하든 전역 경로로 클래스 패스를 설정해주면 간편히 작업할수있다. 일단 3.0으로 작업할때 거의 공기와 같은 존재인 caurina 라이브러리를 준비한다. (일명 : 구글 트위너) 1. 라이브러리 폴더 이동. 첨부 : C 드라이브에 "ActionScript" 폴더를 만들고 그 안에 라이브러리를 넣는다. ex)C:\ActionScript\caurina 2. 플래시 셋팅 ㄱ.메뉴 - Edit - Preferences ㄴ.ActionScript 하단의 Language : ActionScript3.0 Settings... 클릭 ㄷ. Source path 항목의 "폴더버튼" 클릭하고, 찾기 버튼을 클릭해서 C:\ActionScrip 여기까지의 경로만 지정한다...
화승그룹 역사관 사이트 작업의 마지막 수정부분인 "마우스 활성화 제한" 에서 1시간 반 가량을 삽질. 메서드 두개만 제대로 잡아주면 끝날문제를 하마터면 엄청 길게 해결 할 뻔했다. 문제의화면) 뒷부분의 비활성화된 썸네일은 마우스 반응에서 제외되어야한다. 문제의부분) thumb_mc.mouseEnabled = false; 가 먹히지 않아 갖은 삽질을 함. 아래와 같이 A 사각형 안에 B 사각형이 있다. (둘다 무비클립) A는 버튼 모드 이지만 다시 A.mouseEnabled = false를 실행하여 마우스반응에서 제외시켰다. 그러나... B사각형에 마우스를 가져가면 여전히 버튼모드가 활성화 되고, A의 리스너였던 click이벤트도 B사각형을 클릭하면 실행된다. 당연히 A,B 둘다 동시에 해제시키면 된다. ..
3.0에서는 버튼 오브젝트 위로(depth) 오브젝트가 쌓이면 포커스를 잃게되어 동작을 하지않는다. 이론상으로는 이게 맞는데 기존(2.0) 방식을 떠올려보면 헷갈리는 부분이 있어서 정리해둔다. 2.0) "depth0"이 버튼이고, "depth1"이 위에 있는 상황. 상위 뎁스에있는 객체를 눌러도 있건 말건 아래 뎁스객체가 동작한다. 3.0) "depth0"이 버튼이고, "depth1"이 위에 있는 상황. 겹치는 부분은 인식을 하지 못한다.
ActionScript 3.0나 php에서는 function의 parameter value도 default로 define할 수 있다. 굳이 매개변수를 넣지 않더라도 기본값을 할당해 줄 수 있다는 뜻이다. example 1)function myA(a:int=10,b:int):int{ return a; } myA라는 함수를 호출하는 코드를 작성하면 대략 myA(100,100) 정도가 될 것이다. 그런데 함수를 보면 굳이 값을 넣어주지 않아도 되는 선택매개변수(a)가 앞에 있고, 필수매개변수(b)가 2번째 일경우에 myA(100) 처럼 사용한다면 처음값이 어떤값(a인지 b인지)에 해당하는지 판단을 할 수 없어서 논리적 오류가 발생한다. 컴파일 에러는 다음과 같다. required parameters are n..