- 浏览: 467471 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (470)
- 前言 (1)
- 【sys】centos6.2 (51)
- 【sys】shell (8)
- 【sys】yum (1)
- software (6)
- 【tec】ruby (16)
- 【tec】rails (35)
- 【tec】rails路由 (2)
- 【tec】rails部署 (10)
- 【tec】rails优化 (6)
- 【tec】rails测试 (11)
- 【tec】php (45)
- 【tec】android (1)
- 【tec】ios (125)
- 【data】mysql (11)
- web (6)
- 【life】文学与提升 (2)
- life (36)
- 【life】怀念 (1)
- 【web】nginx (5)
- 【web】网络与安全 (4)
- 工作随笔 (1)
- 【software】svn (5)
- 【script】jquery (10)
- powerEdge (2)
- 杂七杂八 (5)
- 【sys】ubuntu (9)
- 【sys】windows (4)
- 【tec】java (1)
- 【tec】html (3)
- 【tec】c++ (38)
- 【tec】汇编 (1)
- 【data】数据库 (1)
- 【exchange 】学术交流 (1)
- 【tec】域名空间 (1)
- 【tec】编程先知 (1)
- 【tec】网站建设 (7)
- 【sys】mac (24)
- 【sys】seo (1)
- 【tec】wp (1)
- 【software】git (4)
最新评论
-
fireDragonpzy:
呵呵 貌似我网站上的有更新 你从那里看看 这个博客维护的不及时 ...
牛人经典语录 -
Peppermintchz:
还真这么2过啊!!好怀念啊
牛人经典语录 -
fireDragonpzy:
chenhong53 写道你好,我想问一下,能不能给一组精灵数 ...
cocos2d-x事件触发的优先级 -
chenhong53:
你好,我想问一下,能不能给一组精灵数组中的精灵添加触屏优先级, ...
cocos2d-x事件触发的优先级 -
fireDragonpzy:
dreamstar1020 写道谢谢庞兄指点,写的很详细,谢谢 ...
致:上海郑兄(虚拟主机-web服务器搭建)
介绍精灵相关的两个常用的细节知识点; 首先来介绍第一个知识点:精灵可视区域; 不管在哪个移动平台上进行开发游戏都会接触使用到可视区域,比如Kjava(J2me)平台的setClip方法,Android的clipRect方法等等,那么在iOS上也一样存在,这里我们介绍cocos2d引擎中的可视区域得函数是setTextureRect; 可能没有接触过游戏得童鞋不明白其概念,那么Himi就简单概述下: 所谓可视区域就是在一个完整的表面上对其设置一定大小的区域,让其只显示设置的区域的面,其他部分隐藏不显示出来;最常用的是将一张图片设置一个可视区域,只让这张图展示设置的区域; 那么这里在啰嗦几句,在cocos2d中精灵CCSprite的可视区域一般可以通过两种方式来设置: 1.在创建精灵的时候进行设置;2.在创建后进行设置;举例如下: 新建一个cocos2d项目,然后在HelloWorldLayer.m中init方法中创建一个精灵,代码如下: [cpp] view plaincopy //---正常创建的icon图 CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"]; spriteOld.position=ccp(80,100); [self addChild:spriteOld]; //---创建时设置30宽30高的可视区域 CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png" rect:CGRectMake(0, 0, 30,30)]; spriteNew.position=ccp(150,100); [self addChild:spriteNew]; //---创建后对其设置30宽30高的可视区域 CCSprite * spriteT =[CCSprite spriteWithFile:@"icon.png"]; [spriteT setTextureRect:CGRectMake(10, 10, 30, 30)]; spriteT.position=ccp(230,100); [self addChild:spriteT]; 上面我创建了3个精灵,第一个没有设置可是区域的icon精灵,第二个和第三个是设置了可视区域宽30高30的精灵,但是第二个和第三个精灵的可是区域宽高相同,但是起始点不同;而且第二个是从创建精灵的时候设置可视区域,第三个精灵则是创建精灵后进行设置的,设置的地方不一样,功能是一样的; 需要详细讲解的是不管用以上两种设置可视区域的哪种方法都需要传入一个CGRect对象,这个CGrect参数有四个,坐标x,y,以及宽高w,y; 那么CGRect在可是区域的函数中的作用如下: CGRect的x,y表示从这个精灵贴图的(x,y)坐标开始设置可视区域,(w,h)可视区域的大小; 下面是运行效果图,童鞋们通过三个精灵(从左往右)之间的对比就很容易明白的: 下面介绍第二个知识点:精灵锚点(anchorPoint); 渲染锚点的作用就是在渲染图片的时候确定其渲染的方式,一般常用的锚点有以下几种: 图片左上角、图片右上角、图片中心点、图片左下角、图片右下角等等 首先童鞋们需要知道一点,在cocos2d引擎中在layer中添加渲染精灵贴图的时候默认的锚点是其中心点; 那么由于cocos2d中layer的原点(0,0)点是屏幕的左下角,所以如果默认创建一个精灵添加到layer中的话,是精灵的中心点放置在layer的原点上,即精灵图片显示在屏幕中只是精灵的宽一半高一半,如下图: 对应代码如下: [cpp] view plaincopy //---使用默认锚点 CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"]; [self addChild:spriteOld]; 那么如果我们设置其精灵的锚点为左下角则正好将精灵icon完整显示出来,因为精灵的左下角正好与layer的原点重合,如下图: 对应代码如下: [cpp] view plaincopy //---设置精灵锚点为左下角 CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png"]; spriteNew.anchorPoint=ccp(0,0); [self addChild:spriteNew]; 设置的方法是精灵的anchorPoint属性,赋值的是个CGPoint对象,其CGPoint中的x与y最大取1,表示最右与最下; ---------以上介绍的过于简单,那么下面Himi利用可视区域与锚点的特性制作一种从左往右样式简单进度条; 首先我们仍然使用cocos2d的icon图作为一个进度条,然后让其从左往右不断显示出来;步骤如下: 第一步:创建一个精灵,设置精灵的锚点为x=0(最左侧),y=0.5(精灵的y轴中点),代码如下: [cpp] view plaincopy //---使用默认锚点 CCSprite * spriteP =[CCSprite spriteWithFile:@"icon.png"]; spriteP.position=ccp(size.width*0.5,size.height*0.5);//设置坐标 spriteP.anchorPoint=ccp(0,0.5);//设置锚点 [self addChild:spriteP z:0 tag:88]; //将精灵添加到layer中显示 细心的童鞋可能会发现以上代码运行后发现精灵并不显示在屏幕中点,嗯,因为我们设置了精灵的锚点,现在精灵的左下角与屏幕中点重合着; 第二步:添加一个变量用于记录当前进度: [cpp] view plaincopy @interface HelloWorldLayer : CCLayer { float currentShowRect;//当前可视区域的大小 } 然后开启一个刷新函数: [cpp] view plaincopy -(id) init { [self scheduleUpdate]; } -(void)update:(ccTime)himi{//每一帧都会执行的函数 } 最后一步:在刷新函数中书写从左往右慢慢显示icon进度条逻辑代码,代码如下: [cpp] view plaincopy -(void)update:(ccTime)himi{//每一帧都会执行的函数 //实现进度条逻辑 CCSprite *sprite =(CCSprite*)[self getChildByTag:88]; currentShowRect++; if(currentShowRect>=100){ currentShowRect=0; } [sprite setTextureRect:CGRectMake(0, 0, currentShowRect,sprite.position.y)]; } 运行截图如下:(icon显示区域越来越大,不断循环) OK,本篇介绍完毕,可能童鞋们会认为本篇知识点过于简单,如果你是个经常关注Himi博客的童鞋,那么你会发现Himi基本上所有的博文都是介绍了很多细节方面的问题,原因一,千篇一律的文章太多,别人都写那么多了,我也没必要赘述。原因二,Himi常说的,细节决定一切,虽然说得绝对了些,但是事实开发项目中基本都是细节问题困扰着大家;
转载自【黑米GameDev街区】 原文链接: http://www.himigame.com/iphone-cocos2d/501.html
发表评论
-
cocos2d-x CCClippingNode遮罩实现手电筒效果
2013-07-09 20:14 2260详情请参考:【Software Myzone】:http:// ... -
Cocos2d: Stencil buffer is not enabled.
2013-07-05 10:47 1641详情请参考:【Software Myzone】:http:// ... -
[2.1.3]修改SearchPaths的三种方式【熊猫版】
2013-06-24 09:44 887详情请参考:【Software Myzone】:http:// ... -
深入理解 Cocos2d-x 内存管理 转
2013-06-24 09:43 813详情请参考:【Software Myzone】:http:// ... -
cocos2d-x场景缩放后的区域碰撞检测
2013-06-24 09:31 1434详情请参考:【Software Myzone】:http:// ... -
编译CSArmature到Android
2013-05-29 09:09 789详情请参考:【Software Myzone】:http:// ... -
TexturePacker 图片加密 转
2013-05-29 09:09 900详情请参考:【Software Myzone】:http:// ... -
Cocos2d-x 屏幕适配新解 转
2013-05-28 13:21 914详情请参考:【Software Myzone】:http:// ... -
cocos2d-x 使用TinyXML2存储数据:FDTinyXML2
2013-05-09 14:31 1077详情请参考:【Software Myzone】:http:// ... -
TinyXML2 学习
2013-05-09 14:31 811详情请参考:【Software Myzone】:http:// ... -
cocos2d-x 精灵的移动遮罩[手电筒效果]
2013-05-02 09:41 1110详情请参考:【Software Myzone】:http:// ... -
Android平台中进程与线程的基本知识
2013-05-02 09:41 747详情请参考:【Software Myzone】:http:// ... -
Jumper类游戏制作【Forest Run】
2013-04-24 16:20 574详情请参考:【Software Myzone】:http:// ... -
Cocos2D 如何做 Android 适配 转
2013-04-22 16:48 666详情请参考:【Software Myzone】:http:// ... -
类似Temple Run 游戏恢复的321倒计时实现
2013-04-22 16:47 1058详情请参考:【Software Myzone】:http:// ... -
工具库:UtilTools
2013-04-22 16:47 711详情请参考:【Software Myzone】:http:// ... -
C++的深拷贝与浅拷贝
2013-04-03 10:23 800详情请参考:【Software Myzone】:http:// ... -
Cocos2d-x Win32下的节点缩放原理研究心得【熊猫版】
2013-04-03 10:23 903详情请参考:【Software Myzone】:http:// ... -
Cocos2d-x 节点绘制流程研究心得【熊猫版】
2013-04-03 10:22 807详情请参考:【Software Myzone】:http:// ... -
基于cocos2d-x的游戏客户端优化
2013-04-03 10:22 755详情请参考:【Software Myzone】:http:// ...
相关推荐
本文将详细介绍在Cocos2d-x中使用到的三种坐标系:OpenGL坐标系、世界坐标系和节点坐标系,并结合锚点的概念和转换函数深入解析它们的应用。 首先,让我们从UI坐标系开始。UI坐标系是许多操作系统中通用的坐标系统...
4. **交互逻辑**:玩家与库存交互,如装备、使用、丢弃物品,都需要相应的事件处理函数。例如,点击物品可以弹出详细信息,拖放操作可用于装备或组合物品。 5. **背包空间管理**:当物品数量达到库存上限时,需要...
自定义按钮的外观可以通过使用`Sprite`或`TextureRect`节点来改变背景,使用`Label`节点添加文本。在Godot 4中,可以使用VisualShader或者Material资源为按钮创建动态的视觉效果,如按下时的缩放、颜色变化等。 3....
【godot-balloon-jump】项目是一个使用Godot游戏引擎创建的简单游戏示例,它展示了如何利用Godot的功能来实现一个有趣的互动体验。在这个游戏中,玩家将控制一个气球在屏幕上上下移动,通过点击或触摸屏幕使气球跳跃...
使用`area_entered`和`area_exited`信号,可以监听到角色与其他区域的进入和退出事件。 4. **动画**:为了使游戏更加生动,我们需要为角色和环境创建动画。Godot的动画树系统支持2D骨骼动画,可以通过GDScript控制...
在UI设计领域,主菜单(Main Menu)是用户与应用或游戏交互的首要入口,它对用户体验有着至关重要的影响。"ui_main_menu_design.zip"这个压缩包文件很可能包含了一套针对Godot游戏引擎的主菜单界面设计方案。Godot是...
...........................\.......\...\...\...\TextureRect.java ...........................\.......\...\...\...\ThreadSetView.java ...........................\.......\...\...\...\TradPair.java .....