2014-02-28 2 views
4

색상 화되지 않습니다SKSpriteNode 내가 너무 같은 SKSpriteNode을 만든

//Easy Button Image 

_easyImage = [[SKSpriteNode alloc]initWithImageNamed:@"smiley.png"]; 
_easyImage.position = CGPointMake(-20,screenHeight/2); 
_easyImage.name = easyBtnName; 
_easyImage.physicsBody.affectedByGravity = NO; 
_easyImage.zPosition = 10; 

[self addChild:_easyImage]; 

나는 접촉에서 클릭 후 이미지를 색상 화하기 위해 노력하고있어이 방법을 시작했다. 나는 내가

-(SKAction*)colorizeChoosenSpriteNodeWithColor:(SKColor*)color 
    { 
SKAction *changeColorAction = [SKAction colorizeWithColor:color colorBlendFactor:1.0 duration:0.3]; 
SKAction *waitAction = [SKAction waitForDuration:0.2]; 
SKAction *selectAction = [SKAction sequence:@[changeColorAction, waitAction]]; 
return selectAction; 
     } 

그러나, 내 이미지의 색상은 절대 변경이 방법을 참조 코드

 SKAction *pulseRed = [self colorizeChoosenSpriteNodeWithColor:[SKColor redColor]]; 
     [_easyImage runAction: pulseRed]; 

을 실행을 클릭 것을 볼 그래서 일단 나는 SKSpriteNode 재산권에 대한 참조를 가지고있다. 이미지의 질감을 완전히 바꿀 수는 있지만 색상을 바꿀 수는 없습니다.

편집 : 문제를 산만하게하는 일부 코드를 제거했습니다. 코드를 디버깅했는데 제대로 실행되고 있지만 기대했던 결과를 얻지 못했습니다.

업데이트 : 색상이 내 이미지 아래에 표시됩니다.

Same code except one has a missing image. Red color shows on the Sprite Node with the missing image?

왼쪽의 화상이없는 화상으로 표시하고, 우측 그림은 올바른 이미지를 사용한다. 이미지가 표시되지 않는 경우에만 색상이 나타납니다. SpriteNode Texture를 실제로 어떻게 색칠 할 수 있습니까?

답변

1

나는 당신이 터치를 잃어 버렸다고 생각한다.

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 
    for (UITouch *touch in touches) { 
    if ([node.name isEqualToString:easyBtnName]){ 
     _easyImage.color = [SKColor redColor]; 
     _easyImage.colorBlendFactor = 1; 
     SKAction *pulseRed = [self colorizeChoosenSpriteNodeWithColor:[SKColor redColor]]; 
    [_easyImage runAction: pulseRed]; 
    } } 
    } 
0

당신은 색상에게 그것은 나를 위해 일한

func changeColor() -> UIColor{ 
    var color:UIColor 
    switch (arc4random_uniform(6)) { 
    case 0: 
     color = UIColor.purpleColor() 
    case 1: 
     color = UIColor.blueColor() 
    case 2: 
     color = UIColor.yellowColor() 
    case 3: 
     color = UIColor.magentaColor() 
    case 4: 
     color = UIColor.greenColor() 
    default: 
     color = UIColor.redColor() 
    } 
    return color 
} 

override func touchesBegan(touches: Set<NSObject>, withEvent event: UIEvent) 
{ 
    let colorAction = SKAction.colorizeWithColor(self.changeColor(), colorBlendFactor: 1, duration: 1) 
    SKSpriteNode.runAction(colorAction) 
} 

을 설정하려면이 같은 수행 할 수 있습니다 귀하의 터치는 방법은 다음과 같아야 시작했다. 행운을 빕니다!