#include "Player.h"
USING_NS_CC;
bool Player::init(){
//primero la superclase
if (!Sprite::init())
{
return false;
}
_speed = 150;
_currentAnimation = IDLE;
createIdleAnimation();
createExplosionAnimation();
//lanzamos la animacion por defecto
runAction(_idleAnimation);
return true;
}
void Player::createIdleAnimation(){
//creamos un pool de imagenes para la animacion
Vector animFrames;
auto acc = 0;
for (int i = 0; i < 4; i++){
auto frame = SpriteFrame::create("animacion_nave.png", Rect(acc, 0, 50, 63));
acc += 50;
animFrames.pushBack(frame);
}
//si ninguna animacion esta corriendo el esprite por defecto es definido aqui
this->setSpriteFrame(animFrames.at(0));
//creamos una animacion con un tiempo de espera entre cada frame de 0.25s
auto animation = Animation::createWithSpriteFrames(animFrames, 0.25f);
//creamos la accion de animar el objeto animation
auto animate = Animate::create(animation);
//creamos una accion que repita para siempre la animacion
_idleAnimation = RepeatForever::create(animate);
// ponemos un tag a la animacion para poder pararla en el futuro
_idleAnimation->setTag(Player::Animations::IDLE);
}
void Player::createExplosionAnimation(){
Vector animFrames;
auto acc = 0;
for (int i = 0; i < 4; i++){
auto frame = SpriteFrame::create("player_explosion.png", Rect(acc, 0, 50, 63));
acc += 50;
animFrames.pushBack(frame);
}
auto animation = Animation::createWithSpriteFrames(animFrames, 0.15f);
//creamos la accion de animar el objeto animation, en este caso no necesitamos
//un RepeatForever porque solo debe explotar una vez y parar.
_explosionAnimation = Animate::create(animation);
_explosionAnimation->setTag(Player::Animations::EXPLOSION);
}
void Player::update(float dt){
}