/**
* Copyright 2008 - 2012
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy of
* the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations under
* the License.
*
* @project loon
* @author cping
* @email:javachenpeng@yahoo.com
* @version 0.3.3
*/
package loon.action.movie;
import loon.core.LRelease;
import loon.core.graphics.opengl.LTexture;
public abstract class MovieSequence implements LRelease{
private int frame = 0;
private int frames = 0;
private String name;
private boolean playing = false;
private Movie movie;
public MovieSequence(int frames) {
this(String.valueOf(System.currentTimeMillis()), frames);
}
public MovieSequence(String name, int frames) {
this.name = name;
this.frames = frames;
}
public abstract void handle(int idx);
public void start() {
this.playing = true;
if (isFinished()) {
this.frame = 0;
}
}
public void stop() {
this.playing = false;
}
public boolean isFinished() {
return this.frame >= this.frames;
}
public void finish() {
this.frame = this.frames;
}
public boolean isPlaying() {
return this.playing;
}
public void nextFrame() {
if (isPlaying()) {
this.frame += 1;
if (isFinished()) {
stop();
return;
}
handle(this.frame);
}
}
public String getName() {
return this.name;
}
public int getCurrentFrame() {
return this.frame;
}
public LTexture getCurrentFrameImage() {
return getMovie().getFrameImage();
}
public int countFrames() {
return this.frames;
}
public Movie getMovie() {
return this.movie;
}
public void setMovie(Movie m) {
this.movie = m;
}
public boolean inFrameRange(int start, int end) {
return (this.frame >= start) && (this.frame <= end);
}
public void forward(int frames) {
this.frame += frames;
}
}