ios——如何限制粒子轨迹的范围?
我成功地将CAEmitter添加到子视图中的UIView中,但该层发射的粒子延伸到该视图之外。有关cookiecutter代码和参数,请参见下面的代码。我的问题是如何防止生成的粒子退出父视图 我尝试过用某个帧初始化子视图,甚至调整边界大小。在这两种情况下,发射的粒子从边界内开始,但在视图帧外飞行,似乎没有边界。它们不会消失,直到我限制了它们的寿命,或者直到它们到达屏幕的尽头。是否有方法防止发射器与视图外的对象交互ios——如何限制粒子轨迹的范围?,ios,uiview,core-animation,caemitterlayer,Ios,Uiview,Core Animation,Caemitterlayer,我成功地将CAEmitter添加到子视图中的UIView中,但该层发射的粒子延伸到该视图之外。有关cookiecutter代码和参数,请参见下面的代码。我的问题是如何防止生成的粒子退出父视图 我尝试过用某个帧初始化子视图,甚至调整边界大小。在这两种情况下,发射的粒子从边界内开始,但在视图帧外飞行,似乎没有边界。它们不会消失,直到我限制了它们的寿命,或者直到它们到达屏幕的尽头。是否有方法防止发射器与视图外的对象交互 CAEmitterLayer *emitterLayer = (CAEmi
CAEmitterLayer *emitterLayer = (CAEmitterLayer*)self.layer;
emitterLayer.name = @"emitterLayer";
emitterLayer.emitterPosition = CGPointMake(self.frame.size.width/2, 0);
emitterLayer.emitterZPosition = 0;
emitterLayer.emitterSize = CGSizeMake(1.00, 1.00);
emitterLayer.emitterDepth = 0.00;
emitterLayer.emitterShape = kCAEmitterLayerCuboid;
emitterLayer.renderMode = kCAEmitterLayerAdditive;
emitterLayer.seed = 3534563912;
// Create the emitter Cell
CAEmitterCell *emitterCell = [CAEmitterCell emitterCell];
emitterCell.name = @"StatSap";
emitterCell.enabled = YES;
emitterCell.contents = (id)[[UIImage imageNamed:@"mysprite.png"] CGImage];
emitterCell.contentsRect = CGRectMake(0.00, 0.00, 1.00, 1.00);
emitterCell.magnificationFilter = kCAFilterTrilinear;
emitterCell.minificationFilter = kCAFilterLinear;
emitterCell.minificationFilterBias = 0.00;
emitterCell.scale = 1.00;
emitterCell.scaleRange = 0.00;
emitterCell.scaleSpeed = -0.24;
emitterCell.color = [[UIColor colorWithRed:1.00 green:0.28 blue:0.26 alpha:1.00] CGColor];
emitterCell.redRange = 1.00;
emitterCell.greenRange = 0.34;
emitterCell.blueRange = 0.31;
emitterCell.alphaRange = 0.46;
emitterCell.redSpeed = 2.03;
emitterCell.greenSpeed = 0.00;
emitterCell.blueSpeed = 0.00;
emitterCell.alphaSpeed = 0.00;
emitterCell.lifetime = 2.65;
emitterCell.lifetimeRange = 1.02;
emitterCell.birthRate = 267;
emitterCell.velocity = 155.32;
emitterCell.velocityRange = 25.00;
emitterCell.xAcceleration = 0.00;
emitterCell.yAcceleration = 911.00;
emitterCell.zAcceleration = 0.00;
// these values are in radians, in the UI they are in degrees
emitterCell.spin = -0.175;
emitterCell.spinRange = 12.566;
emitterCell.emissionLatitude = 0.000;
emitterCell.emissionLongitude = 0.000;
emitterCell.emissionRange = 6.283;
emitterLayer.emitterCells = @[emitterCell];
您是否确保发射器的superview具有
clipsToBounds=YES
?您是否确保发射器的superview具有clipsToBounds=YES
?joshd,感谢您的建议。如果我将发射器层包装在其自己的UIView中,并将UIView clipsToBounds设置为“是”,则它可以工作。我不想更进一步到它的superview,因为它会剪辑图像和其他子视图。太好了。是的,我的意思是超视图的发射器(意思是UIView)。谢谢你的支票!乔希,谢谢你的建议。如果我将发射器层包装在其自己的UIView中,并将UIView clipsToBounds设置为“是”,则它可以工作。我不想更进一步到它的superview,因为它会剪辑图像和其他子视图。太好了。是的,我的意思是超视图的发射器(意思是UIView)。谢谢你的支票!