我使用Sprite Kit來創建我的第一個iOS應用程序,並且我正在絆倒似乎是一個非常基本的問題。SpriteKit(SKCropNode)中的動畫遮罩的圖像
我正在試圖爲SKCropNode(cropNode
)的內容(fillNode
)設置動畫。下面的代碼設置了SKScene就好了(我看到正確掩蓋了說明,在正確的位置放置在背景圖片)...
SKSpriteNode *logoBG = [[SKSpriteNode alloc] initWithImageNamed:logoBackground];
logoBG.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
[self addChild:logoBG];
SKCropNode *cropNode = [[SKCropNode alloc] init];
cropNode.maskNode = [[SKSpriteNode alloc] initWithImageNamed:logoMask];
SKSpriteNode *fillNode = [[SKSpriteNode alloc] initWithImageNamed:logoImage];
[cropNode addChild:fillNode];
fillNode.position = CGPointMake(0,300);
cropNode.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMidY(self.frame));
self.logoContent = cropNode;
[self addChild:self.logoContent];
...但我不能訪問被屏蔽的圖示來動畫的位置(我希望它開始摘下面具外面滑入到位):
CGRect screenBound = [[UIScreen mainScreen] bounds];
CGSize screenSize = screenBound.size;
SKAction *moveUp = [SKAction moveByX: 0 y: 100 duration: 5];
SKAction *moveSequence = [SKAction sequence:@[moveUp]];
[self.logoContent.target_illustration runAction: moveSequence completion:^{ // '.target_illustration' = the SKSpriteNode that I want to animate; cropNode.fillNode
SKScene *titleScreen = [[TitleScreen alloc] initWithSize:self.size];
SKTransition *fade = [SKTransition fadeWithDuration:(1)];
[self.view presentScene:titleScreen transition:fade];
}];
我只能動畫整個logoContent
,而不是它的子節點。
任何想法我錯了嗎?
我遇到的問題是由於在didMoveToView方法中調用了runAction,而在createSceneContents方法中創建了logoContent節點(及其命名的子節點)(由didMoveToView調用);由於範圍,我無法訪問指定的插圖節點。在相同範圍內調用runAction時,您的解決方案可以正常工作。 – MassivePenguin
你不想使用childNodeWithName方法? – DogCoffee
我試過了,無法讓它工作。指責我缺乏Obj-C的經驗! – MassivePenguin