2D开源游戏框架

posts(19) comments(34) trackbacks(0)
  • 联系
  • RSS 2.0 Feed 聚合
  • 管理

公告

我是Lwq49

新版的OGF 0.8.1.0项目代码已上传了!
QQ:21038481
MSN:lwq49@msn.com
欢迎大家加入OGF开源项目小组,Q群是:42407090
目标:打造类似Popcap的开源游戏开发框架

留言簿

  • 给我留言
  • 查看公开留言
  • 查看私人留言

随笔分类(18)

  •  Lego机器人(3)
  •  开源游戏框架(15)

随笔档案(19)

  • 2007年10月 (1)
  • 2007年9月 (18)

文章分类

  •  Lego机器人
  •  开源游戏框架

相册

  • Lego

在CSDN上的开源游戏框架旧文章

  • 开源游戏框架

最新随笔

  • 1. 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 2. 关于鼠标消息处理机制的调整
  • 3. 实在佩服D鬼佬,将兴趣与艺术相结合
  • 4. OGF 0.81 debug版代码发布
  • 5. OGF框架范例11 图形对象及对象的区域
  • 6. OGF开发近况 20070806
  • 7. OGF框架之网络应用(下)
  • 8. OGF框架之网络应用(上)
  • 9. OGF框架范例07 布局器
  • 10. OGF框架范例06 物件动作

搜索

  •  

积分与排名

  • 积分 - 23111
  • 排名 - 752

最新评论

  • 1. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --business loans
  • 2. re: OGF 0.81 debug版代码发布
  • libc.lib在哪里
  • --j
  • 3. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --home loans
  • 4. re: 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 谢谢分享,下下来研究下!
  • --Nation
  • 5. re: 一些乐高NXT相关的网站与博客
  • 评论内容较长,点击标题查看
  • --thesis service

阅读排行榜

评论排行榜

View Post

OGF框架范例11 图形对象及对象的区域

 本范例主要是介绍图形对象及对象中新增的Region属性.首先要说明图形对象并不是用于绘制,而是图形的封装,一个图形实例只对应一种图形,若想创造复杂的图形则只能通过多个单个图形组合.范例运行后会在屏幕中显示一幅带有边框的图片,当按键盘的左/右键,图片会逆/顺时针旋转,这时边框会根据图片的新区域重绘(将以图片的最小X和Y点为左上角,以图片当前的最大X和Y点为右下角).

 范例中只用到BODY类的两个函数:OnInitialize和KeyPass事件处理,代码如下:

 //初始化事件
 bool CMyGameBody::OnInitialize(){
  //如果没有自定义的流程规划,则系统需调用以下语句:
  __super::OnInitialize();

  _SIZE     siSize;
  _POINT     piPos;

  m_lpFMHandles->pResourceLib->LoadTexture("data.pap");
  m_lpFMHandles->pResourceLib->Add("data\\Background.png", "BackGround");

  //创建一个图片
  CGameObjectSprite*  pSprite = new CGameObjectSprite();
  siSize.cx = 300;siSize.cy = 150;
  pSprite->Create("BG", siSize, m_lpFMHandles->pResourceLib->GetTexture("BackGround"));
  //设置旋转的中心点
  pSprite->SetAnchorPosition(_POINT(170, 90));
  pSprite->MoveTo(_POINT(400, 200));

  //返回图片的当前状态下的区域大小
  _RECT  rc = pSprite->GetRegion();

  //创建一个图形(默认为四方体)
  CGameObjectGraph*  pGraph = new CGameObjectGraph();
  siSize.cx = siSize.cy = 100;
  //根据图片区域大小创建
  pGraph->Create("Graph", _SIZE(rc.right-rc.left, rc.bottom-rc.top), g_lpDefaultResource);
  pGraph->MoveTo(_POINT(rc.left, rc.top));

  //添加对象至指定环节下
  m_pCurrentSection->GetGameView()->GetBy("default")->GetBy("default")->Add((IGameObject*)pSprite->QueryInterface(IID_IGameObject, VER_IGameObject), "Pic");
  m_pCurrentSection->GetGameView()->GetBy("default")->GetBy("default")->Add((IGameObject*)pGraph->QueryInterface(IID_IGameObject, VER_IGameObject), "Graph");

  return true;
 }

 //键盘事件
 bool CMyGameBody::OnKeyPass(int nType, int nKey, char cChar){
  //只处理KEYUP事件
  if(nType==INPUT_KEYDOWN) return false;

  //受理键盘左/右方向键
  if(nKey==37 || nKey==39){
   static fAngle = 0;
   
   if(nKey==37){
    //逆转45度
    fAngle -=45;
   }
   else{
    //顺转45度
    fAngle +=45;
   }
   //返回图片对象并旋转至指定角度
   IGameObject* pIGameObject = m_pCurrentSection->GetGameView()->GetObject("default\\default\\Pic");
   pIGameObject->SetAngle(fAngle);

   //返回图片的当前状态下的区域大小
   _RECT rc = pIGameObject->GetRegion();

   //返回图形对象
   pIGameObject = m_pCurrentSection->GetGameView()->GetObject("default\\default\\Graph");
   IGameObjectGraph* pIGraph = GET_OBJECTPTR_INTERFACE(pIGameObject, IGameObjectGraph);

   //移动至区域的左上角
   pIGameObject->MoveTo(_POINT(rc.left, rc.top));
   //调整图形大小
   pIGraph->AdjustPoints(_SIZE(rc.right-rc.left, rc.bottom-rc.top));
  }
  return true;
 } 

运行结果:
原始状态

-135度时的状态。上边及右边的线条可能因图片压缩状态的情况下没有显示出来。

 

范例下载地址:
http://dl2.csdn.net/down4/20070806/06122825642.rar

范例代码下载地址:
http://dl2.csdn.net/down4/20070806/06122941126.rar

posted on 2007-09-11 00:27 lwq49 阅读(1292) 评论(0)  编辑 收藏 引用 所属分类: 开源游戏框架


只有注册用户登录后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
  • 继续放出OGF 0.8.1版的源代码,请多多支持!!!
  • 关于鼠标消息处理机制的调整
  • OGF 0.81 debug版代码发布
  • OGF框架范例11 图形对象及对象的区域
  • OGF开发近况 20070806
  • OGF框架之网络应用(下)
  • OGF框架之网络应用(上)
  • OGF框架范例07 布局器
  • OGF框架范例06 物件动作
  • OGF框架范例05 计时器
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理


 
Powered by:
C++博客
Copyright © lwq49