`
wdp107
  • 浏览: 144477 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

cocos2d中的draw和update

 
阅读更多
像其它的游戏引擎一样,我们有两个不同的方法来完成draw和update。
        1: Draw:每一个CCNode都有一个draw方法,每一帧都会调用。我们只在这个方法里做描绘的事情。
        2: Update:默认情况下,CCNode是没有update的,如果你想要更新状态,你可以注册一个回调函数,有以下四种方式:
           scheduleUpdate:
           scheduleUpdateWithPriority:
           scheduleSelector:(SEL)selector
           scheduleSelector: (SEL)selector interval:(float)interval
         注册的方法只有当前是活动的场景,并且没有Pause的情况下才会调。我们推荐使用scheduleUpdate或者scheduleUpdateWithPriority。因为它运行更快,占用内存更少。例如:

-(id) init
{
  // -10代表优先级,越小则优先级越高,也就越先被执行
   [self scheduleUpdateWithPriority:-10];
}
-(void) update:(ccTime)deltaTime
{
   // update your node here
   // DON'T draw it, JUST update it.
   // example:
   rotation_ = value * deltaTime;
}

调用了scheduleUpdate或者scheduleUpdateWithPriority后,系统就会去查找我们定义的update方法,相当于schedule了update方法。去除注册的update方法可以使用:
[node unscheduleUpdate];
        我们也可以使用scheduleSelector,这是一种比较老的方式,没有优先级。如果没有interval或者当interval==0的时表示每一帧都调用。
-(id) init
{
   // the "step:" selector will be called every 0.5 seconds
   [self schedule:@selector(step:) interval:0.5f]
}

-(void) step:(ccTime) deltaTime
{
   // update your stuff here
}
注销掉该方法:
  [node unscheduleSelector:@selector(step:)];
分享到:
评论

相关推荐

    cocos2d-x for xna资料

    3. **社区支持**:加入cocos2d-x和XNA的开发者社区,获取最新资讯,解决开发中遇到的问题。 通过以上内容,开发者可以逐步掌握cocos2d-x for XNA的整合技术,实现高效且跨平台的游戏开发。同时,不断学习和实践,...

    cocos2d-x游戏开发系列教程-坦克大战游戏加载地图的编写上

    10. **渲染与更新**:cocos2d-x使用基于图层的渲染系统,每一帧都会调用`update`方法更新游戏状态,然后调用`draw`方法绘制画面。开发者需要确保游戏逻辑和渲染同步,以保持游戏的流畅性。 以上就是cocos2d-x游戏...

    Cocos2d-x iphone 开发教程(有文字代码)

    - **Game循环**:Cocos2d-x通过固定的帧率来驱动游戏逻辑,理解如何在`update`方法中处理游戏状态更新。 - **渲染管线**:了解如何使用`draw`方法绘制精灵和其他元素,以及如何利用批处理和缓存提高性能。 6. **...

    cocos2d 带光标的多行输入框

    在实现这个功能时,你可能需要自定义一个继承自Cocos2d的Text Field类,重写其draw、update等方法,添加对光标处理、换行逻辑和触摸事件响应的代码。 8. **测试与优化**: 测试是必不可少的,确保在不同设备和...

    改写cocos2d的ProgressTimer实现任意起始点的Radial进度条

    在Cocos2d-x游戏开发框架中,`CCProgressTimer`是用于显示图像或精灵进度的一个组件,通常用于创建如生命值、加载条等效果。在标准的`CCProgressTimer`实现中,进度条通常从左到右或从下到上进行填充,但有时我们...

    cocos初学者练习项目:飞翔的小鸟

    Cocos Creator是Cocos2d-x引擎的最新版本,集成了强大的可视化编辑器和JavaScript编程环境,为开发者提供了高效的游戏开发平台。本项目包含游戏的所有资源,如图像、音频等,以及完整的程序源码,旨在帮助初学者理解...

    NewSudoku_beta.zip

    在Cocos2d-js中,游戏的更新和渲染都由固定的帧率控制,开发者可以通过编写update函数来更新游戏状态,并在每帧中调用draw函数进行画面渲染。同时,Cocos2d-js的精灵、批处理和纹理 atlases 技术能够优化性能,确保...

    2D地图,摄像机移动

    同时,我们需要在Draw方法中调整SpriteBatch的TransformMatrix,将摄像机的位置和缩放应用到绘图操作上,从而实现视口的平移和缩放效果。 再者,物体跳动和放大涉及到动画和交互效果。物体跳动通常用于模拟角色或...

    android平台中使用j2me MIDP2.0中GameAPI

    在Android中,我们可以使用一个集合类(如ArrayList)来存储自定义的Layer对象,并在主循环中依次调用它们的update()和draw()方法。通过这种方式,我们可以实现LayerManager的逻辑,控制游戏画面的层次感和复杂性。 ...

    python100行代码写一个弹球游戏

    同时,学习这个过程还可以帮助你掌握面向对象编程、事件处理、游戏循环等核心编程概念,为进一步深入学习其他游戏引擎如pygame、cocos2d等打下基础。 总之,Python的pgzero库为开发PONG这样的弹球游戏提供了高效、...

    FlyingBirdBast(飞翔的小鸟)

    在游戏循环中,会有更新(Update)和渲染(Draw)两个关键步骤。更新阶段处理用户输入、计算物理效果以及更新游戏状态;渲染阶段将游戏世界呈现在屏幕上。源码中的这部分代码展示了如何实现这两个步骤,并处理好它们...

    iOS 小游戏源代码

    尽管源代码未明确提及,但iOS小游戏通常基于游戏引擎进行开发,如Cocos2d-x、Unity或SpriteKit等。这些引擎简化了图形渲染、物理模拟、音频处理等工作,使开发者能够更专注于游戏逻辑。"Smash"可能是使用Apple的...

    坦克游戏 源代码

    典型的循环结构如`while True`,在循环中调用`update`和`draw`函数。 8. **资源管理**:游戏中的图像、音频和数据文件都需要被加载和管理。学习如何有效地加载和释放资源,避免内存泄漏,是游戏开发的重要一环。 9...

    Android 游戏教程:让人物动起来

    游戏引擎如Unity、Cocos2d-x或Godot也可以用于Android游戏开发,但本教程更可能关注原生Android API。 1. **动画原理**:在Android中,人物动起来主要是通过帧动画或精灵动画实现的。帧动画是通过连续播放一系列...

    类似于超级马里奥的简单游戏源文件

    游戏循环通常包括更新(Update)、绘制(Draw)和输入处理(Input Handling)三个阶段。 2. **玩家控制**:描述中提到的"A"键控制角色向左移动,"D"键控制向右,"K"键发射子弹。这需要编程实现键盘事件监听,并根据...

    Kill_theMonster

    2. 游戏引擎选择:游戏开发通常基于游戏引擎进行,例如Unity、Unreal Engine或Cocos2d-x等。这些引擎提供了强大的图形渲染、物理模拟和脚本编写功能,有助于快速构建游戏环境和交互逻辑。 3. 编程技术:使用C#、C++...

Global site tag (gtag.js) - Google Analytics