그래프 PIZiadas

그래프 PIZiadas

내 세계가 속한.

그래픽 프로그래밍: 엔진 애니메이션 [JAVA]

motor_animación먼저 정의한 후 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));
	}
JAVA

Curso JAVA