public void run() {
		Vector<Frame> strip = movie.getStrip();
		// If only one frame in a repeating Movie, then display it and quit
		// without calling notifyEndMovie(), because it doesn't really end.
		if (strip.size() == 1 && movie.isRepeating())
			notifyChangeFrame(((Frame)strip.get(0)).getImage());
		else {
			if (strip.size() > 0) {
				try {
					while (running) {
						if (currentFrameNumber < strip.size()) {
							Frame frame = (Frame)strip.get(currentFrameNumber++);
							notifyChangeFrame(frame.getImage());
							if (frame.getDuration() >= 0)
								sleep(frame.getDuration());
							else
								sleep(movie.getDefaultFrameDuration());
						} else if (movie.isRepeating())
							currentFrameNumber = 0;
						else
							running = false;
					}
				} catch (Throwable t) {
					Log.println("Player: movie terminated: " + t.toString());
					running = false;
				}
			}
			movie.notifyEndMovie();
		}
	}