在核心动画中,可以在CGPathRef周围放置阴影,同时保持非常高的图形性能。
if (self.displayShadow)
{
self.shadowLayer = [CALayer layer];
self.shadowLayer.shadowPath = self.pOutline;
self.shadowLayer.shadowOpacity = 1.0;
self.shadowLayer.zPosition = -1.;
self.shadowLayer.position = self.center;
self.shadowLayer.shadowOffset = CGSizeMake(+3., +3.);
[self.layer addSublayer: self.shadowLayer];
}
它是如何做到的?是否可以从Cocos2D获得相同的行为?
答案 0 :(得分:0)
创建一个CCSprite的子类,并创建一个形状像精灵的暗影精灵。
创建子类CCSprite的实例,并将阴影作为子项添加到精灵。
使用以下方法覆盖“visit”方法:
-(void)visit{
if(shadow!=NULL){
int cx = self.contentSize.width / 2;
int cy = self.contentSize.height / 2;
float rot = (int)self.rotation%360 + 30;
float px = cx + SHADOW_OFFSET*sinf(rot*M_PI / 180.0);
float py = cy - SHADOW_OFFSET*cosf(rot*M_PI / 180.0);
shadow.position = CGPointMake(px, py);
}
[super visit];
}