2015-09-11 55 views
1

我想在時鐘的固定點上旋轉此箭頭。下面的代碼沒有做我想做的事情,它將整個箭頭轉向一個圓的中心。我也嘗試通過圓形路徑對它進行動畫處理,但它沒有給我我想要的效果... 我希望此箭頭繞着一個圓旋轉,而箭頭指向此圓的中心向着固定點旋轉箭頭(像動畫一樣的時鐘)

-(void) addArrow2:(CGSize)size{ 
    _Arrow2 = [SKSpriteNode spriteNodeWithImageNamed:@"arrow2"]; 
    _Arrow2.position = CGPointMake(self.frame.size.width/2 , self.frame.size.height/2 +30); 
    SKAction *rotate = [SKAction rotateByAngle:M_2_PI duration:1]; 
    SKAction *forever = [SKAction repeatActionForever:rotate]; 

    _Arrow2.yScale = 0.45; 
    _Arrow2.xScale = 0.45; 

    [self addChild:_Arrow2]; 

    [_Arrow2 runAction:forever]; 
} 
+0

你爲什麼要取消接受我的答案嗎?你有什麼問題? – WangYudong

+0

它不像你發佈的動畫中的效果 –

+0

你能詳細解釋一下嗎? – WangYudong

回答

2

我想你有這種箭頭→。將anchorPoint更改爲(1.0,0.5)並使箭頭沿着圓形路徑。進行一些更改以適應您的需求。

- (void)addArrow2 
{ 
    _Arrow2 = [SKSpriteNode spriteNodeWithImageNamed:@"arrow2"]; 
    _Arrow2.position = CGPointMake(self.frame.size.width/2, self.frame.size.height/2+30); 
    _Arrow2.anchorPoint = CGPointMake(1.0, 0.5); 
    _Arrow2.yScale = 0.45; 
    _Arrow2.xScale = 0.45; 

    // Make a circle path 
    CGMutablePathRef circle = CGPathCreateMutable(); 
    CGFloat centerX = self.frame.size.width/2; 
    CGFloat centerY = self.frame.size.height/2; 
    CGFloat radius = 25.0; 
    CGFloat startAngle = 0.0; 
    CGFloat endAngle = 2*M_PI; 
    CGPathAddArc(circle, NULL, centerX, centerY, radius, startAngle, endAngle, true); 
    CGPathCloseSubpath(circle); 
    SKAction *followPath = [SKAction followPath:circle asOffset:NO orientToPath:YES duration:2.0]; 

    // Infinite rotation 
    SKAction *forever = [SKAction repeatActionForever:followPath]; 
    [_Arrow2 runAction:forever]; 

    [self addChild:_Arrow2]; 
} 

動畫預覽:

enter image description here

+0

@MohamedAbouGhazala你是指哪個圈子? – WangYudong

+0

我想讓這個箭頭繞一個圓圈旋轉,而箭頭指向這個圓圈的中心 –

+0

我爲它做了一個更好的草圖對不起 –