gpt4 book ai didi

iphone - cocos2d中如何添加画圆的动画效果

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:09:40 26 4
gpt4 key购买 nike

我正在开发一款游戏来找出两张图片之间的差异。

当你发现它时,我想添加一个效果。画出一个圆圈比突然显示圆圈要好得多。但我以前从未做过核心动画或 opengl。

我不认为准备 100 个 Sprite 并逐帧更改 Sprite 是个好主意。这是我的代码:(只需将圆形图像添加到左右图像即可。)

-(void) show {
CCSprite* leftCircle = [CCSprite spriteWithFile:@"circle.png"];
CCSprite* rightCircle = [CCSprite spriteWithFile:@"circle.png"];
leftCircle.scaleX = size.width / [leftCircle boundingBox].size.width;
leftCircle.scaleY = size.height / [leftCircle boundingBox].size.height;
rightCircle.scaleX = size.width / [rightCircle boundingBox].size.width;
rightCircle.scaleY = size.height / [rightCircle boundingBox].size.height;
leftCircle.anchorPoint = ccp(0, 1);
rightCircle.anchorPoint = ccp(0, 1);
leftCircle.position = leftPosition;
rightCircle.position = rightPosition;
[[GameScene sharedScene] addChild:leftCircle z: 3];
[[GameScene sharedScene] addChild:rightCircle z: 3];
shown = YES;
}

那么我该如何实现呢?如果你能提供一些源代码就太好了。

最佳答案

作为一种简单的方法,我建议您创建一个圆并将其缩放为零。然后创建一个 CCScale Action 并运行它。它会给你一个不断增长的圈子。这是代码:

CCSprite *sprite = [CCSprite spriteWithFile:@"mySprite.png"];
[sprite setScale:0.01];
id scale = [CCScale actionWithDuration:0.3 scale:1];
[sprite runAction:scale];

另一个可以使用的 Action 是CCFadeIn。你可以让你的 Sprite 在创建后不可见并让它淡入:

CCSprite *sprite = [CCSprite spriteWithFile:@"mySprite.png"];
[sprite setOpacity:0];
id fade = [CCFadeIn actionWithDuration:0.3];
[sprite runAction:fade];

您还可以组合这些操作:

[sprite runAction:fade];
[sprite runAction:scale];

你也可以让它变大(例如设置比例 3)和透明。并使其淡入并缩小以突出显示您的图像

要通过绘图效果绘制圆圈,您可以从小部分(圆弧)制作它,然后从中构建您的圆圈。我认为如果您在添加时不要让该部分可见,但让它淡入,它也会很酷。我的意思是这样的:

-(void) init
{
NSMutableArray *parts = [[NSMutableArray array] retain]; //store it in your class variable
parts_ = parts;
localTime_ = 0; //float localTime_ - store the local time in your layer
//create all the parts here, make them invisible and add to the layer and parts
}

-(void) update: (CCTime) dt //add update method to your layer that will be called every simulation step
{
localTime_ += dt;

const float fadeTime = 0.1;
int currentPart = localTime_ / fadeTime;

int i = 0;
for (CCSprite *part in parts)
{
//setup the opacity of each part according to localTime
if (i < currentPart) [part setOpacity:255];
else if (i == currentPart)
{
float localLocalTime = localTime - i*fadeTime;
float alpha = localLocalTime / fadeTime;
[part setOpacity:alpha];
}
++i;
}
}

关于iphone - cocos2d中如何添加画圆的动画效果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6163035/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com