Thread: Java Animation Help Please!
-
July 6th, 2010, 11:33 PM #1Junior Member
- Join Date
- Jul 2010
- Posts
- 1
Java Animation Help Please!
import java.awt.Image;
import java.util.ArrayList;
public class Animation{
private ArrayList <OneScene> scenes;
private int sceneIndex;
private long movieTime;
private long totalTime;
public Animation(){
scenes = new ArrayList<OneScene>();
totalTime = 0;
start();
}
public synchronized void addScene(Image i, long t){
totalTime
totalTime += t;
scenes.add(new OneScene(i, totalTime));
}
public synchronized void start(){
movieTime = 0;
sceneIndex = 0;
}
public synchronized void update(long timePassed){
if(scenes.size() > 1){
movieTime += timePassed;
if (movieTime >= totalTime){
movieTime = 0;
sceneIndex = 0;
}
while(movieTime > getScene(sceneIndex).endTime);
sceneIndex++;
}
}
public synchronized Image getImage(){
if(scenes.size()==0){
return null;
}else{
return getScene(sceneIndex).pic;
}
}
private OneScene getScene(int x){
return (OneScene)scenes.get(x);
}
private class OneScene{
Image pic;
long endTime;
public OneScene(Image pic, long endTime){
this.pic = pic;
this.endTime = endTime;
}
}
}
import java.awt.*;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
public class felix{
public static void main (String [] args){
felix f = new felix();
f.run();
}
private Animation a;
private ScreenManager s;
private Image bg;
private static final DisplayMode modes1[] = {
new DisplayMode(800, 600, 32, 0),
new DisplayMode(800, 600, 24, 0),
new DisplayMode(800, 600, 16, 0),
new DisplayMode(640, 480, 32, 0),
new DisplayMode(640, 480, 24, 0),
new DisplayMode(640, 480, 16, 0),
};
public void loadImages(){
bg = new ImageIcon("C:\\Users\\Simon\\Desktop\\Java\\Tutori al\\Game Development\\back.png").getImage();
Image face1 = new ImageIcon("C:\\Users\\Simon\\Desktop\\Java\\Tutori al\\Game Development\\orange.png").getImage();
Image face2 = new ImageIcon("C:\\Users\\Simon\\Desktop\\Java\\Tutori al\\Game Development\\blue.png").getImage();
a = new Animation();
a.addScene(face1, 250);
a.addScene(face2, 250);
}
public void run(){
s = new ScreenManager();
try{
DisplayMode dm = s.findFirstCompatibleMode(modes1);
s.setFullScreen(dm);
loadImages();
movieLoop();
}finally{
s.restoreScreen();
}
}
public void movieLoop(){
long startingTime = System.currentTimeMillis();
long cumTime = startingTime;
while (cumTime - startingTime < 5000){
long timePassed = System.currentTimeMillis() - cumTime;
cumTime += timePassed;
a.update(timePassed);
Graphics2D g = s.getGraphics();
draw(g);
g.dispose();
s.update();
try{
Thread.sleep(20);
}catch(Exception ex){
}
}
}
public void draw(Graphics g){
g.drawImage(bg, 0, 0, null);
g.drawImage(a.getImage(), 0, 0, null);
}
}
import java.awt.*;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.lang.reflect.InvocationTargetException;
import javax.swing.JFrame;
public class ScreenManager{
private GraphicsDevice vc;
public ScreenManager(){
GraphicsEnvironment e = GraphicsEnvironment.getLocalGraphicsEnvironment();
vc = e.getDefaultScreenDevice();
}
public DisplayMode[] getCompatibleDisplayMode(){
return vc.getDisplayModes();
}
public DisplayMode findFirstCompatibleMode(DisplayMode modes[]){
DisplayMode goodModes[] = vc.getDisplayModes();
for(int i = 0; i < modes.length; i++){
for (int j = 0; j < goodModes.length; j++){
if (displayModesMatch(modes[i], goodModes[j])){
return modes[i];
}
}
}
return null;
}
public DisplayMode getCurrentDisplayMode(){
return vc.getDisplayMode();
}
public boolean displayModesMatch(DisplayMode m1, DisplayMode m2){
// Make 3 Separate If Statements For: Resolution, Bit Depth And Refresh Rate
if(m1.getWidth() != m2.getWidth() || m1.getHeight() != m2.getHeight()){
return false;}
if (m1.getBitDepth() != DisplayMode.BIT_DEPTH_MULTI &&
m2.getBitDepth() != DisplayMode.BIT_DEPTH_MULTI &&
m1.getBitDepth() != m2.getBitDepth()){
return false;
}
if (m1.getRefreshRate() != DisplayMode.REFRESH_RATE_UNKNOWN &&
m2.getRefreshRate() != DisplayMode.REFRESH_RATE_UNKNOWN &&
m1.getRefreshRate() != m2.getRefreshRate()){
return false;
}
return true;
}
public void setFullScreen(DisplayMode dm){
JFrame f = new JFrame();
f.setUndecorated(true);
f.setIgnoreRepaint(true);
f.setResizable(true);
vc.setFullScreenWindow(f);
if (dm != null && vc.isDisplayChangeSupported()){
try{
vc.setDisplayMode(dm);
}catch(Exception ex){}
}
f.createBufferStrategy(2);
}
public Graphics2D getGraphics(){
Window w = vc.getFullScreenWindow();
if (w != null){
BufferStrategy s = w.getBufferStrategy();
return (Graphics2D)s.getDrawGraphics();
}else{
return null;
}
}
public void update(){
Window w = vc.getFullScreenWindow();
if(w != null){
BufferStrategy s = w.getBufferStrategy();
if (!s.contentsLost()){
s.show();
}
}
}
public Window getFullScreenWindow(){
return vc.getFullScreenWindow();
}
public int getWidth(){
Window w = vc.getFullScreenWindow();
if(w != null){
return w.getWidth();
}else{
return 0;
}
}
public int getHeight(){
Window w = vc.getFullScreenWindow();
if(w != null){
return w.getHeight();
}else{
return 0;
}
}
public void restoreScreen(){
Window w = vc.getFullScreenWindow();
if(w != null){
w.dispose();
}
vc.setFullScreenWindow(null);
}
public BufferedImage createCompatibleImage(int w, int h, int t){
Window win = vc.getFullScreenWindow();
if(win != null){
GraphicsConfiguration gc = win.getGraphicsConfiguration();
return gc.createCompatibleImage(w, h, t);
}
return null;
}
}
i don't know why but i get the error
java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
at java.util.ArrayList.RangeCheck(Unknown Source)
at java.util.ArrayList.get(Unknown Source)
at Animation.getScene(Animation.java:86)
at Animation.getImage(Animation.java:79)
at felix.draw(felix.java:77)
at felix.movieLoop(felix.java:61)
at felix.run(felix.java:43)
at felix.main(felix.java:8)
Someone Please Tell Me How To Fix It Please
Thread Information
Users Browsing this Thread
There are currently 1 users browsing this thread. (0 members and 1 guests)
Similar Threads
-
Launching Java webpages with different Java settings?
By LostBok in forum Webmastering and ProgrammingReplies: 1Last Post: December 11th, 2006, 03:38 AM -
Getting into animation
By librab103 in forum Graphic Design and Digital PhotographyReplies: 8Last Post: February 1st, 2004, 10:00 AM -
making a java game, animation help?
By The Terk in forum Webmastering and ProgrammingReplies: 0Last Post: November 6th, 2003, 05:48 PM -
animation help
By VERT in forum Graphic Design and Digital PhotographyReplies: 7Last Post: March 22nd, 2003, 11:32 PM -
editing animation
By S.D.Willie in forum Technical SupportReplies: 8Last Post: September 10th, 2002, 09:08 AM



LinkBack URL
About LinkBacks



Reply With Quote

Lycra is standard now? Yikes!!!! So you have to dress in lycra biking clothes just to go to the corner store for milk or something? I agree with Paul9, there's no way you'll see me in lycra biking...
Do you think this was a legitimate...