在Spritekit中绘制一个框架

时间:2014-05-02 21:08:38

标签: ios7 sprite-kit crop

我想绘制如下图所示的框架,其中圆圈内的白色部分是清晰的(透明),以便我可以在背景中看到场景,而灰色部分是不透明的。 我调查了CropNodes,但我找不到答案。最后应将所有内容添加到SKView

enter image description here

1 个答案:

答案 0 :(得分:0)

this method works you can filter it more i am using shape node you can your texture shape node having some memory leaks in sprite kit

   #import "milkhuntMyScene.h"

   @implementation milkhuntMyScene

   -(id)initWithSize:(CGSize)size {
       if (self = [super initWithSize:size]) {
        /* Setup your scene here */

        [self maskMe];

      }
     return self;
   }
   -(void)maskMe
   {
       //replace tomask to 1 pixel background and 778 width or acc to ur game
       // SKSpriteNode *whiteArea = [SKSpriteNode   spriteNodeWithImageNamed:@"pixel1.png"];
    //[self addChild: whiteArea];
    //whiteArea.xScale=1024;

    SKSpriteNode *toMask = [SKSpriteNode spriteNodeWithColor:[SKColor whiteColor] size:     CGSizeMake(2024, 778*2)];
    SKSpriteNode *mask = [SKSpriteNode spriteNodeWithImageNamed:@"maskarea.png"];
    mask.position=CGPointMake(400, 300);
    //
    CGRect circle = CGRectMake(0, 0,mask.frame.size.width,mask.frame.size.height);
    SKShapeNode *shapeNode = [[SKShapeNode alloc] init];
    shapeNode.path = [UIBezierPath bezierPathWithOvalInRect:circle].CGPath;
    shapeNode.fillColor = SKColor.yellowColor;
    shapeNode.strokeColor = [SKColor blueColor];
    shapeNode.lineWidth=20;
    shapeNode.position=CGPointMake(mask.position.x/2, 100);
    [self addChild:shapeNode];

    //
    SKCropNode *cropNode = [SKCropNode node];
    [cropNode addChild: toMask];
    [cropNode setMaskNode: mask];
    [self addChild: cropNode];


   }
   -(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
       /* Called when a touch begins */

   }

   -(void)update:(CFTimeInterval)currentTime {
    /* Called before each frame is rendered */
   }

   @end