2014年5月3日 星期六

CCAction資料


轉帖自http://www.apkbus.com/android-797-1.html


CCAction是游戏的一个和重要组成部分,游戏之所以区别于应用就是因为形象鲜明,趣味性交互性强,如果游戏元素没有动作,那就很无聊了;
        之前我们已经介绍过,CCNode节点中有一个(void)runAction:(CCAction *)action 方法,所以,所有继承自CCNode的类,比如精灵,层,甚至菜单都可以执行动作;
        CCAction有很庞大的层次关系,如图所示

        其中主要的为CCAction-->CCFiniteTimeAction
        其中CCFiniteTimeAction下的两个子类CCActionInstant和CCActionInterval分别为瞬时动作和延时动作;
瞬时动作更接近于节点属性的设置,有的时候是为了更方便地组成动作序列,延时动作则是我们经常看到的一些动画画面;
        动作的返回值类型为id,所以,你会经常看到这种写法
        CCMoveTo *move = [CCMoveTo actionWithDuration:3 position:CGPointMake(100,200)];
        [sprite runAction :move];
        瞬时动作我们会在介绍动作序列时再作详细说明,下面归纳一下延时动作,常用的延时动作有
CCMoveTo 
        移动到参数position位置
        示例:CCMoveTo *move = [CCMoveTo actionWithDuration:3 position:CGPointMake(100,200)];//该动作移动到position参数位置;

CCMoveBy
        精灵移动参数个位置
        示例:[sprite runAction:[CCMoveBy actionWithDuration:3 position:pos]];//该动作使节点移动pos个位置;

CCFadeTo
        节点色调透明度变化
        示例: [sprite runAction:[CCFadeTo actionWithDuration:3 opacity:opa]]; //节点透明度渐变为opa(0~255);

CCFadeIn
        节点亮度从0渐变为最高
        示例: [sprite runAction:[CCFadeIn actionWithDuration:3 ]; //节点在3秒内从黑暗变为最亮;

CCFadeOut
        同上相反;

CCBlink
        节点闪烁,需设置闪烁次数;
        示例:[sprite runAction:[CCBlink actionWithDuration:3 blinks:t]]; //节点在3秒内闪烁t次;如果持续时间变长,闪烁频率会自动调低;

CCRotateTo
        节点旋转,需设置旋转角度
        示例:[sprite runAction:[CCRotateTo actionWithDuration:3 angle:180]]; //节点在3秒内旋转180度;

CCRotateBy
        节点旋转,经试验没发现与CCRotateTo有何区别;
        示例:[sprite runAction:[CCRotateBy actionWithDuration:3 angle:180]];      //效果同上一样;

CCScaleTo
        节点放大,有两个方法
        示例:[sprite runAction:[CCScaleTo actionWithDuration:3 scale :2]];//节点在3秒内放大到原来的2倍;
 [sprite runAction:[CCScaleTo actionWithDuration:3 scaleX:2 scaleY:3]];//节点在3秒内横方向放大到原来的2倍,纵方向放大到原来的3倍;

CCScaleBy 
        节点放大,经试验没发现与上述效果有何区别(大家发现后告诉我);

CCTintTo
        节点调色
        示例:[sprite runAction:[CCTintTo actionWithDuration:3 red:110 green:110 blue:110]]; //节点在三秒内着色为RGB颜色如参数所示

CCTintBy
        节点渐变
        示例:[sprite runAction:[CCTintBy actionWithDuration:3 red:110 green:110 blue:110]]; //节点在三秒内以RGB参数逐渐加深;

CCSkewTo
        节点斜率变化
        示例:[sprite runAction:[CCSkewTo actionWithDuration:3 skewX:30 skewY:5]];//将一个节点按横坐标30,纵坐标5的大小倾斜;该参数效果见图


CCSkewBy
        效果同上一样;

CCBezierTo
        使节点按贝塞尔曲线移动,需先生成一个贝塞尔参数,见示例
        示例:
ccBezierConfig bezier;//创建贝塞尔曲线
        bezier.controlPoint_1 =ccp(sprite.position.x, sprite.position.y);//起始点
        bezier.controlPoint_2 =ccp(sprite.position.x+5,sprite.position.y+20);//控制点
        bezier.endPosition =ccp(sprite.position.x+50, sprite.position.y+100);//结束位置
        [sprite runAction:[CCBezierToactionWithDuration:3bezier:bezier]];
关于贝塞尔曲线,主要作用是通过点确定准确的曲线图形,建议大家百度一下点击打开链接

CCBezierBy
        每次移动贝塞尔曲线个距离;用法同上;

        通过上面这些主流的动作行为,我们可以实现一些很有视觉冲击力的动画效果,常用到的常常有放大(远近景拉伸),旋转,跳越等;
        cocos2d中的动作远比上面这些要灵活的多,下回就介绍一下动作的一些修饰,动作序列,和动作序列中怎样加入一些回调方法;

cocos2d 顏色設定



[mysprite setColor:ccc3(R,G,B)] // R,G,B -> 分別為0~255

[mysprite setOpacity:value]; // value 范围0-255,    0完全透明,255完全不透明。

其它可參考基本設定 http://kirenenko-tw.blogspot.tw/2013/11/ccsprite.html

至於CCSprite的饱和度、色相、亮度等属性可參考
http://blog.csdn.net/ldz15838245189/article/details/9365499


另外也可以利用CCAction來做顏色的調控

CCFadeTo
        节点色调透明度变化
        示例: [sprite runAction:[CCFadeTo actionWithDuration:3 opacity:opa]]; //节点透明度渐变为opa(0~255);

CCFadeIn
        节点亮度从0渐变为最高
        示例: [sprite runAction:[CCFadeIn actionWithDuration:3 ]; //节点在3秒内从黑暗变为最亮;

CCFadeOut
        同上相反;

CCBlink
        节点闪烁,需设置闪烁次数;
        示例:[sprite runAction:[CCBlink actionWithDuration:3 blinks:t]]; //节点在3秒内闪烁t次;如果持续时间变长,闪烁频率会自动调低;

CCTintTo
        节点调色
        示例:[sprite runAction:[CCTintTo actionWithDuration:3 red:110 green:110 blue:110]]; //节点在三秒内着色为RGB颜色如参数所示

CCTintBy
        节点渐变
        示例:[sprite runAction:[CCTintBy actionWithDuration:3 red:110 green:110 blue:110]]; //节点在三秒内以RGB参数逐渐加深;






2014年5月1日 星期四

EXC_BAD_ACCESS 问题根源的方法

code=1,是已经释放的对象又进行释放;code=2,是对已经释放完的,即计数为零的对象又进行使用

參考網址
 http://blog.csdn.net/xml_eason/article/details/7951076



要抓取 EXC_BAD_ACCESS
使用
NSZombieEnabled

啟動方式

 Menubar > Product > Scheme > Edit Scheme)