use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.
the class AnimationPackLoader method load.
public AnimationPack load(final InputStream pInputStream, final String pAssetBasePath) throws AnimationPackParseException {
try {
final SAXParserFactory spf = SAXParserFactory.newInstance();
final SAXParser sp = spf.newSAXParser();
final XMLReader xr = sp.getXMLReader();
final AnimationPackParser animationPackParser = new AnimationPackParser(this.mAssetManager, pAssetBasePath, this.mTextureManager);
xr.setContentHandler(animationPackParser);
xr.parse(new InputSource(new BufferedInputStream(pInputStream)));
return animationPackParser.getAnimationPack();
} catch (final SAXException e) {
throw new AnimationPackParseException(e);
} catch (final ParserConfigurationException pe) {
/* Doesn't happen. */
return null;
} catch (final IOException e) {
throw new AnimationPackParseException(e);
} finally {
StreamUtils.close(pInputStream);
}
}
use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.
the class AnimationPackParser method endElement.
@Override
public void endElement(final String pUri, final String pLocalName, final String pQualifiedName) throws SAXException {
if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONPACK)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACKS)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACK)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONS)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATION)) {
final int currentAnimationFrameFrameCount = this.mCurrentAnimationFrameDurations.size();
final long[] frameDurations = this.mCurrentAnimationFrameDurations.toArray();
final TexturePackTextureRegion[] textureRegions = new TexturePackTextureRegion[currentAnimationFrameFrameCount];
this.mCurrentAnimationFrameTexturePackTextureRegions.toArray(textureRegions);
final AnimationPackTiledTextureRegion animationPackTiledTextureRegion = new AnimationPackTiledTextureRegion(this.mCurrentAnimationName, frameDurations, this.mCurrentAnimationLoopCount, textureRegions[0].getTexture(), textureRegions);
this.mAnimationPackTiledTextureRegionLibrary.put(animationPackTiledTextureRegion);
this.mCurrentAnimationName = null;
this.mCurrentAnimationLoopCount = IAnimationData.LOOP_CONTINUOUS;
this.mCurrentAnimationFrameDurations.clear();
this.mCurrentAnimationFrameTexturePackTextureRegions.clear();
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONFRAME)) {
/* Nothing. */
} else {
throw new AnimationPackParseException("Unexpected end tag: '" + pLocalName + "'.");
}
}
use of org.andengine.util.animationpack.exception.AnimationPackParseException in project AndEngine by nicolasgramlich.
the class AnimationPackParser method startElement.
// ===========================================================
// Methods for/from SuperClass/Interfaces
// ===========================================================
@Override
public void startElement(final String pUri, final String pLocalName, final String pQualifiedName, final Attributes pAttributes) throws SAXException {
if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONPACK)) {
final int version = SAXUtils.getIntAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONPACK_ATTRIBUTE_VERSION);
if (version != 1) {
throw new AnimationPackParseException("Unexpected version: '" + version + "'.");
}
this.mTexturePackLoader = new TexturePackLoader(this.mAssetManager, this.mTextureManager);
this.mTexturePackLibrary = new TexturePackLibrary();
this.mAnimationPackTiledTextureRegionLibrary = new AnimationPackTiledTextureRegionLibrary();
this.mAnimationPack = new AnimationPack(this.mTexturePackLibrary, this.mAnimationPackTiledTextureRegionLibrary);
} else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACKS)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_TEXTUREPACK)) {
final String texturePackName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_TEXTUREPACK_ATTRIBUTE_FILENAME);
final String texturePackPath = this.mAssetBasePath + texturePackName;
final TexturePack texturePack = this.mTexturePackLoader.loadFromAsset(texturePackPath, this.mAssetBasePath);
this.mTexturePackLibrary.put(texturePackName, texturePack);
texturePack.loadTexture();
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONS)) {
/* Nothing. */
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATION)) {
this.mCurrentAnimationName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATION_ATTRIBUTE_NAME);
this.mCurrentAnimationLoopCount = SAXUtils.getIntAttribute(pAttributes, AnimationPackParser.TAG_ANIMATION_ATTRIBUTE_LOOPCOUNT, IAnimationData.LOOP_CONTINUOUS);
} else if (pLocalName.equals(AnimationPackParser.TAG_ANIMATIONFRAME)) {
final int duration = SAXUtils.getIntAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONFRAME_ATTRIBUTE_DURATION);
this.mCurrentAnimationFrameDurations.add(duration);
final String textureRegionName = SAXUtils.getAttributeOrThrow(pAttributes, AnimationPackParser.TAG_ANIMATIONFRAME_ATTRIBUTE_TEXTUREREGION);
final TexturePackTextureRegion texturePackTextureRegion = this.mTexturePackLibrary.getTexturePackTextureRegion(textureRegionName);
this.mCurrentAnimationFrameTexturePackTextureRegions.add(texturePackTextureRegion);
} else {
throw new AnimationPackParseException("Unexpected tag: '" + pLocalName + "'.");
}
}
Aggregations