CCSPrite Class Reference(CCSprite 类参考手册)

CCSprite 是一个2d的图像,

#incude<CCSprite.h>

CCSprite类的继承图表如下:


详细成员列表参见:http://www.cocos2d-x.org/embedded/cocos2d-x/d4/de7/classcocos2d_1_1_c_c_sprite.html

详细描述:

         CCSprite是个2D的图像。

         CCSprite可以用图形或者图像的一部分记性创建。

   如果其父亲或者任何祖先是CCSpriteBathNode,那么他将有以下特性或限制。

         特性(当其父类为CCBatchNode): 

                当CCSpriteBathNode包含很多孩子的时候,显示速度特别快。所有的孩子将一次绘制。

         限制:

               不再支持相机了,如CCOrbitCamera的行为就不能工作。

               不再支持GridBase行为,如CCLens,CCRipple,CCTwirl

               不能单独的设置aliased 属性,因为Alias和Antialias 属性属于CCSPriteBathNode。

           不能单独的设置Blending 函数,因为Blending   函数属于CCSPriteBathNode。

           不支持垂直滚动条,但可以被模拟为一个代理精灵

  如果其父类是标准的CCNode,那么CCSprite行为则具备所有CCNode的行为。

       支持blending 函数

       支持aliasing 和antialiasing

       但是显示将会变慢,因为每次只绘制一个孩子。


CCSprite默认的锚点是(0.5,0.5)


一些函数的介绍:

virtual void addChild(CCNode * child);

     添加一个孩子到容器中,z-order 为0

     如过孩子添加到正在运行的节点,那么OnEnter 和OnEnterTransitionDidFinish 将会立刻执行。

     V0.7.1以上才有该函数,继承自CCNode

virtual void addChild(CCNode * child,int zOrder);

    添加一个孩子到容器中,并设置z-order 。其他功能同addChild函数 

virtual void draw (void)

    重写这个方法用来绘制自己的节点

    如下GL_states将默认能使用

           glEnableClientState(GL_VERTEX_ARRAY);
           glEnableClientState(GL_COLOR_ARRAY);
           glEnableClientState(GL_TEXTURE_COORD_ARRAY);
           glEnable(GL_TEXTURE_2D);

    并且你不能禁用他们,直到你绘制完你的节点。

bool initWithFile(const char * pszFileName)

      用图像的文件名来初始化一个sprite,大小为图像的大小,偏移为(0,0)

bool initWithFile(const char * pszFileName,const CCRect &rect)

     用图像的文件名 和大小来初始化一个sprite,偏移为(0,0)

bool initWithtexture(CCTexture2D * pTexture)

     用文本初始化一个sprite,sprite的大小为文本的大小,偏移为(0,0)

bool initWithTexture(CCTexture2D *pTexture,const CCRect & rect)

     用文本和大小初始化一个sprite,偏移为(0,0)

bool isDirty(void)[inline]

     检测这个sprite是否需要进行更新。

virtual void removeAllChildrenWithCleanup(bool cheanup)

     从容器中移除所有的孩子,并根据cleanup参数进行清除正在运行的所有行为。

virtual void removeChild(CCNode *child,bool cleanup)

    从容器中移除指定的孩子,并根据cleanup参数进行清除正在运行的所有行为。

 virtual void reorderChild(CCNode *child,int zOrder)

    根据zOrder进行重新定义一个孩子。前提孩子必须是已经添加的。

virtual void setAnchorPoint(const CCPoint & var)

    设置精灵自身的锚点。


在Unity中,如果你想要通过代码动态修改CCSprite(也就是游戏中精灵图)的显示帧,可以按照以下步骤操作: 1. 首先,你需要获取到CCSprite实例。这通常在初始化精灵的时候或者通过`GameObject.GetComponent<SpriteRenderer>()`来获得。 ```csharp CCSprite sprite = GetComponent<SpriteRenderer>().sprite; ``` 2. 使用`Sprite`的`SetTextureRect`方法来改变显示区域。`TextureRect`包含四个值:左上角的(x, y)和右下角的(width, height)。 ```csharp Rect rect = new Rect(new Vector2(frameIndex * frameWidth, 0), new Vector2(frameWidth, frameHeight)); sprite.textureRect = rect; ``` 在这里,`frameIndex`是从0开始的帧索引,`frameWidth`和`frameHeight`是你精灵图的单个帧的宽度和高度。 3. 如果你的精灵图是以动画形式存在的,你可能需要创建一个循环,每隔一段时间切换到下一个帧,例如每秒切换一次: ```csharp float animationSpeed = 1f; // 每秒帧数 float delay = 1f / animationSpeed; // 延迟时间 TimerManager.StartCoroutine(SwitchFrames(frameIndex, totalFrames, delay)); private IEnumerator SwitchFrames(int currentFrame, int totalFrames, float delay) { while (true) { yield return new WaitForSeconds(delay); if (currentFrame < totalFrames - 1) currentFrame++; else currentFrame = 0; // 循环回第一帧 SetSpriteFrame(currentFrame); } } // 调用这个函数来设置当前帧 private void SetSpriteFrame(int frame) { sprite.textureRect = GetFrameRect(frame); } ``` 记得替换`GetFrameRect(frame)`为你实际获取对应帧的`Rect`方法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值