cocos2d中出现烟雾问题

时间:2009-12-18 05:32:20

标签: iphone cocos2d-iphone

我遇到了问题。当smokeMoveBy动作开始时,在其他地方的屏幕上发现一个小烟雾气泡,然后是烟雾的移动路径。 这只发生在我使用scaleX和scaleY时。 调度程序中每1秒调用smokeLoop方法。 这里的自我是一层。

任何解决方案?

我的代码如下,

CGPoint dummyPosition=ccp(600, 600);
ParticleSystem *smoke = [ParticleSmoke node];
ccColor4F startColor;
startColor.r = 1.f;
startColor.g = 1.f;
startColor.b = 1.f;
startColor.a = 1.f;
[smoke setStartColor:startColor];
ccColor4F endColor;
endColor.r = 0.8f;
endColor.g = 0.8f;
endColor.b = 0.8f;
endColor.a = 1.0f;
[smoke setEndColor:endColor];
[smoke setLife:0.1f];
[smoke setScaleX:0.1f];
[smoke setScaleY:0.2f];
[smoke setStartSize:30.f];
[self addChild:smoke z:2];
[smoke setPosition:dummyPosition];

-(void)smokeLoop{
id smokeMoveBy = [MoveBy actionWithDuration:durTime position:ccp(0.f, (-1.f*480))]];
id smokeSeq=[Sequence actions:[Place actionWithPosition:smokeInitPosition], smokeMoveBy, nil];
[smoke runAction:smokeSeq];
}

1 个答案:

答案 0 :(得分:0)

不确定这是否是您的问题,但我遇到了Cocos2D,缩放和移动的问题,我通过移动anchorPoint解决了这个问题。

我想要做的是缩放(缩放)和移动图层。如果位置为{0,0}且变换点为{0.5,0.5},则缩放将移动。但是如果我移动它,它仍然会在{0.5,0.5}左右变换,这可能会在屏幕外变形,所以它会变得非常奇怪。

解决方案是每次移动图层的位置时将变换点移动到屏幕的中间位置。这对我来说不是一个简单的公式,因为当我移动变换点时,缩放操作会有一个新的中心点。

我最终使用的公式如下:

layer = self.foreground;
ccpAdd(
    ccpDivide(
        ccpNeg(layer.position),
        (CGPoint){layer.contentSize.width, layer.contentSize.height}),
    (CGPoint){0.5f,0.5f}
);

基本上:将图层位置的倒数(意思是,{300,200}将变为{-300,-200})除以图层{480,320}的大小,然后添加{0.5,0.5}(我想要的)我的锚总是居中+偏移)

无论如何,你可能需要制定一个完全不同的公式,但这对我有用。每次移动图层时,我都必须将它应用到我的锚点。

祝你好运,希望这会有所帮助!