`
wangshu3000
  • 浏览: 131729 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

PSP程序开发例子解析(八)Animator

 
阅读更多
GameApp.cpp

#include <stdio.h>

#include <JGE.h>
#include <JRenderer.h>
#include <JResourceManager.h>
#include <JAnimator.h>

#include "GameApp.h"


GameApp::GameApp()
{
mResourceMgr = NULL;
mLeft = NULL;
mRight = NULL;

mCurr = NULL;
}


GameApp::~GameApp()
{
}


void GameApp::Create()
{
// JAnimator needs to get its resource from a JResourceManager
mResourceMgr = new JResourceManager();
mResourceMgr->LoadResource("animation.res");//加载背景和动画图片

// create the first animator
mLeft = new JAnimator(mResourceMgr);
mLeft->Load("left.anm");//加载左面的动画文件 文件内容需要再研究?

// create the second animator
mRight = new JAnimator(mResourceMgr);
mRight->Load("right.anm");//加载右面的动画文件 文件内容需要再研究?

mLeft->SetHotSpot(79,126);//??
mLeft->SetPosition(330,220);//左侧动画位置

mRight->SetHotSpot(79,126);
mRight->SetPosition(240,220);

// start the animation
mCurr = mLeft;//Left
mCurr->Start();//动画开始
}


void GameApp::Destroy()
{

if (mRight)
   delete mRight;

if (mLeft)
   delete mLeft;

if (mResourceMgr)
   delete mResourceMgr;


}


void GameApp::Update()
{

JGE* engine = JGE::GetInstance();

if (engine->GetButtonClick(PSP_CTRL_TRIANGLE))   // do a screen shot when the TRIANGLE button is pressed
{
   char s[80];
   sprintf(s, "ms0:/screenshot.png");
   JRenderer::GetInstance()->ScreenShot(s);
}

if (engine->GetButtonClick(PSP_CTRL_CROSS))    // exit when the CROSS button is pressed
{
   engine->End();
   return;
}

float dt = engine->GetDelta();
mCurr->Update(dt);//更新当前的动画 FrameTime默认为100.0f 毫秒 通过enm文件加载的动画信息没有这个选项= =!

// change to the other animation when the current one is done
if (!mCurr->IsAnimating())//动画结束调用另一个
{
   if (mCurr == mLeft)
    mCurr = mRight;
   else
    mCurr = mLeft;

   mCurr->Start();
}
}


void GameApp::Render()
{

JRenderer* renderer = JRenderer::GetInstance();

// turn off bilinear filtering to have sharp image
renderer->EnableTextureFilter(false);//关闭双线形光栅?

// render background
renderer->RenderQuad(mResourceMgr->GetQuad("bg"), 480>>1, 272>>1);

// render animation
mCurr->Render();

}


void GameApp::Pause()
{

}


void GameApp::Resume()
{

}

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics