首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何保持新规模的Cocos2D

如何保持新规模的Cocos2D
EN

Stack Overflow用户
提问于 2012-08-08 00:25:17
回答 2查看 397关注 0票数 0

这就是我想要做的。

我有一个精灵,它在60秒内不断缩小。当碰撞发生时,这个精灵的比例增加了1.5。

代码语言:javascript
复制
        -(void) update: (ccTime) deltaTime 

        {if(CGRectIntersectsRect([randomSprite boundingBox], [other boundingBox]))  {

        [SAE playEffect:@"collisionSoundEffect.mp3"];
        [randomSprite runAction:[CCScaleBy actionWithDuration:3 scaleX:1.5 scaleY:1.5]];

问题是,当3秒后,它的‘爸爸’回到大小,它将是如果碰撞没有发生。

当然更小。

我想让雪碧做的是在碰撞后留下 newSize。然后让精灵继续缩小它的规模。

任何帮助或指导都是非常感谢的。

谢谢。

代码语言:javascript
复制
[thisSpriteIsConstatnlyScalingDown runAction:[CCScaleBy actionWithDuration:60 scaleX:.01 scaleY:.01]];

我试图保持新的规模,并开始缩小从这再次。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-08 14:23:25

我认为这是因为你有两个动作同时运行。放大操作完成后,缩小操作仍在运行。

代码语言:javascript
复制
#define kScaleDownActionTag 1
#define kScaleUpActionTag 2


    ...

    // start downscale action
    CCAction *action = /* your scale down action */;
    action.tag = kScaleDownActionTag;
    [sprite runAction:action];


    ...

    if(CGRectIntersectsRect([randomSprite boundingBox], [other boundingBox]))  
    {
        // if scale up action isn't running already
        if (![randomSprite getActionByTag:kScaleUpActionTag])
        {
            // stop downscale action and run upscale action
            [randomSprite stopActionByTag:kScaleDownActionTag];
            CCAction *action = /* your scale up action */
            action.tag = kScaleUpActionTag;
            [randomSprite runAction:action];
        }
    }
票数 0
EN

Stack Overflow用户

发布于 2012-08-08 12:39:10

如果要缩放到绝对缩放因子,请不要使用CCScaleBy。使用CCScaleTo代替。

CCScaleBy的问题是,如果你的比例是1.5,而你缩小了0.5,你就会得到1.0。但是,如果由于某种原因,当节点缩放为1.2时,标度会被中断并再次执行,那么最终您将完成从1.2到0.7的缩放。

最后,如果您想确保在完成缩放之后使用特定的缩放因子,请创建一个CCSequence,它的末尾有一个CCCallFunc或CCCallBlock,并手动地将缩放因子设置为一个特定的值。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11856008

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档