먼저 정의한 후 interface para 그래픽 개체 에 JAVA, 우리가 구현 하는 것을 애니메이션 그래픽 엔진 그 응용 프로그램의 역학을 관리 해준다 고, 후, 사용자와의 상호 작용 추가.
엔진은 각 데이터베이스 개체에에서 애니메이션 효과 적용 하는 함수 호출에 대 한 책임.
Un 게임 엔진 그것은 일련의를 지칭 하는 용어 프로그래밍 루틴 수 있도록 하는 디자인, 생성 및 표시는 비디오 게임.
같은 방법으로 두 비디오 게임 콘솔을 작동 하는 게임의 엔진 및 운영 체제. 게임 2D 그래픽 엔진에 대 한 렌더링을 제공 하는 것입니다 엔진의 기본 기능 및3디, 물리 엔진 또는 충돌 감지, 소리, 스크립팅, animación, 인공 지능, 네트워크, 스트리밍, 메모리 관리 및 그래픽 장면입니다.(에).
우리의 첫 번째 구현 엔진의 저장 및 표현에 대 한 책임 클래스에 이미 있는 기능에 따라 것입니다.: “칠판“. 정의 새로운 인터페이스 새로운 기능을 추가 하려면, 가능성 animar un objeto.
애니메이션 인터페이스
새로운 “interface” 그것을 구현 하는 클래스에 통합 하는 단일 메서드 선언.
패키지 그래프; 공공의 interface 애니메이션 { 공공의 빈 애니 마(); }
예를 들면, 애니메이션 그래서 우리가 우리의 그래픽 클래스 중 하나을 사용자 지정할 수 있습니다., 다른 기능을 확장 하는 새로운 하나를 만들 또는, 그것은 새로운 클래스의 경우 Point2DAnimable que 클래스를 확장 Point2D 좌표를 저장 하, 과 Animable 인터페이스를 구현 그냥 무작위로 저장 된 좌표를 수정 하는 애니메이션 기능.
패키지 그래프; public class Point2DAnimable 확장 Point2D implements 애니메이션{ 공공의 Point2DAnimable(INT 엑스, INT 과){ 슈퍼(엑스,과); } 공공 무효 애니 마() { x + =(INT)(Math.random()()*5); -x =(INT)(Math.random()()*5); 그리고 + =(INT)(Math.random()()*5); y =(INT)(Math.random()()*5); } }
우리 주요 applett에서 칠판 클래스 저장소 시스템에 새 개체를 추가 합니다.
private void iniciarElementos() { pizarra.addElement(새로운 Point2DAnimable(50,50)); pizarra.addElement(새 Point2D(70,50)); pizarra.addElement(새 Point2D(50,70)); }
데이터베이스의 개체에에서 애니메이션 효과를, 우리는 칠판 animateable 여부를 분석 하는 클래스에 새 메서드를 구현 합니다., 이 경우 각 객체의 함수 호출에 애니메이션을 적용합니다
공공 무효 애니 마(){ Enumeration enum=bd.elements(); Object ob; while(enum.hasMoreElements()){ ob=enum.nextElement(); 면(오늘 애니메이션 instanceof){ ((애니메이션) ob).애니 마(); } } }
애니메이션 엔진
애니메이션의 업데이트를 관리 하는 과정은 우리가 부르는 애니메이션 엔진 (스레드 같은 내장 또는 “스레드“). 그들의 책임은 우리는 클래스에서 구현 되는 애니메이션의 절차에 제한 칠판.
에 운영 체제, un 스레드, 스트랜드 스레드는 운영 체제에서 예약할 수 있는 처리의 가장 작은 단위 또는.
스레드 (스레드) 그것은 동시에 여러 작업을 수행 하는 응용 프로그램을 수 있는 기능 (동시에). 다양 한 메모리 공간 등의 리소스를 공유 하는 다양 한 스레드, 파일을 열, 인증의 위치, 등등. 이 기술은 다른 기능을 동시에 수행 해야 하는 응용 프로그램의 디자인을 단순화 수 있습니다..
스레드는 기본적으로 다른 작업을 병렬로 수행할 수 있는 작업.(에)
우리의 애니메이션 엔진 클래스를 구현 합니다. “실행 가능” 시작 하 고 중지 하는 방법.
패키지 그래프; public class MotorGrafico implements 실행 가능 { 긴 간격 = 100;
우리 애니메이션을 일시 중지 수 부울 제어 변수의 일련 있을 것 이다.
부울 정지 = false; 공공 무효 그만() { 중지 = true; } 부울 일시 중지 = false; void 일시 중지() { 일시 중지 = !일시 중지; }
클래스의 생성자는 개체를 받게 됩니다. “칠판” 매개 변수로 서. 그것은 어떤 요소에 주요 애니메이션 기능을 알고 도움이 될 것입니다.. 우리가 나중에 그것을 참조 하는 변수에이 개체를 저장 합니다..
private 칠판 그라프; 공공의 MotorGrafico(칠판 그라프) { this.그라프 그라프 =; }
스레드를 시작 하기 전에 활성 상태 인지 확인 해야 합니다., 어떤 경우에 우리가 한 번에 프로세스 이외에 무엇이 든을 실행 하지 그것을 파괴 해야 합니다..
private 휘발성 스레드 깜박이; 공공 무효 시작() { 면(깜박이!=null){ 깜박이 =null; } 깜박이 = 새로운 스레드(this); blinker.start(); }
애니메이션 엔진을 중지 하려면 우리는 스레드를 파괴할 것 이다, 간단 하 게 제어 하는 변수를 null 값을 할당 합니다 “스레드”.
공공의 빈 중지() { 깜박이 = null; }
주요 프로세스 함수에서 수행 “run()”.
먼저 우리는 프로그램의 실시를 중지 싶지 않아 확인 합니다., 우리는 스레드 적절 한 지 확인 것입니다.. 이렇게 하는 경우, 우리 프로그램의 구현에 대 한 호출으로 몇 밀리초 정지 됩니다. “수 면” 과, 그것을 다시 시작 하려면, 우리는 애니메이션의 메서드 호출. 그래픽 요소를 애니메이션 하는 일단 우리가 그들을 그릴 것입니다 다시 (다시 칠하기)
공공 무효 run() { 스레드 thisThread = 스레드.P:System.Threading.thread.CurrentThread(); while (!중지 && 깜박이 == thisThread) { 시도 { thisThread.sleep(간격); } 잡기 (InterruptedException e) {} 면 (그라프 != null && !일시 중지) { 힘내세요(); Graf.repaint(); } } }
La función “힘내세요” 함수를 호출 “애니 마()” de la clase “칠판”, 이미지 데이터베이스 저장에 대 한 책임.
개인 무효 힘내세요() { Graf.Anima(); } }
프로그램의 구현
예제 클래스 개체의 선언에 포함 되어야 합니다. “MotorGrafico” 그 그래픽 디스플레이 찾으려고 해당 매개 변수를 전달 하거나 “칠판”.
public class 예 1 확장 애플릿 { 흑 흑 =새로운 칠판(); MotorGrafico 엔진 =새로운 MotorGrafico(칠판);
Además, 메서드 호출을 사용 하 여 애니메이션의 엔진을 시작 해야 합니다. “시작()”
공공의 예 1() 던짐 HeadlessException { this.setLayout(새로운 GridLayout()); this.추가(칠판); iniciarElementos(); motor.start(); }
우리만 연습을 완료 하려면 데이터베이스 그래픽 일부 animateable 요소를 추가할 수 있습니다.. 우리는 몇 가지 포인트를 이동 하지 않습니다 볼 것 이다, 그 동안 누가 인터페이스 구현 “애니메이션” 경우 무작위로 하지 않습니다.
private 빈 iniciarElementos() { pizarra.addElement(새로운 Point2DAnimable(50,50)); pizarra.addElement(새로운 Point2DAnimable(60,50)); pizarra.addElement(새로운 Point2DAnimable(50,80)); pizarra.addElement(새로운 Point2DAnimable(50,70)); pizarra.addElement(새로운 Point2D(70,50)); pizarra.addElement(새로운 Point2D(50,70)); }
반드시 연결된 댓글을 달다.