Halihazırda parçacıkların hepsi aniden şekil ve şekilleriyle ekranda beliriyor. İstediğim, hücrelerin 0,0 opaklıktan başlayıp tam opaklığa kadar ya da 0.0 skaladan başlayıp 1.0 skala kadar başlamasıdır. Bunu nasıl yapacağım konusunda çevrimiçi bir şey bulamıyorum.CAEmitterCell girişinde nasıl animasyon yapabilirim?
cevap
Bir CAEmitterCell'in çeşitli özelliklerini canlandırabilirsiniz, animating the CAEmitterCell Color property numaralı telefondan iyi bir örnek olabilir; bu, istediğiniz efekti elde etmek için ne yapmanız gerektiği konusunda size iyi bir fikir vermelidir.
Orada CAEmitters büyük birçok kaynak, bir iyi bir Tutorial: Particle Systems in Core Animation with CAEmitterLayer edilir ve başka bu bağlantıyı mükemmel cevaptır Apple'ın Fireworks Sample Code
Kontrol geçerli: Daha fazla bilgi almak istiyorsanız http://invasivecode.tumblr.com/post/4448661320/core-animation-part-iii-basic-animations
sonra bu bağlantıyı deneyin: https://invasivecode.com/weblog/caemitterlayer-and-the-ios-particle-system-lets/ sizin question..ok cevap verirse
bu kodu deneyin ...
#import "DWFParticleView.h"
#import <QuartzCore/QuartzCore.h>
@implementation DWFParticleView
{
CAEmitterLayer* fireEmitter; //1
}
-(void)awakeFromNib
{
//set ref to the layer
fireEmitter = (CAEmitterLayer*)self.layer; //2
}
+ (Class) layerClass //3
{
//configure the UIView to have emitter layer
return [CAEmitterLayer class];
}
@end
bu deneyin
@interface
ViewController()
@property
(
nonatomic
,
strong
)
CALayer
*colorLayer;
@end
@implementation
ViewController
- (
void
)viewDidLoad
{
[
super
viewDidLoad
];
//create a red layer
self
.colorLayer = [
CALayer
layer
];
self
.colorLayer.
frame
=
CGRectMake
(
0
,
0
,
100
,
100
);
self
.colorLayer.
position
=
CGPointMake
(
self
.
view
.
bounds
.
size
.
width
/
2
,
self
.
view
.
bounds
.
size
.
height
/
2
);
self
.colorLayer.
backgroundColor
= [
UIColor
redColor
].
CGColor
;
[
self
.
view
.
layer
addSublayer
:
se
lf
.colorLayer];
}
- (
void
)touchesBegan:(
NSSet
*)touches withEvent:(
UIEvent
*)event
{
//get the touch point
CGPoint
point = [[touches
anyObject
]
locationInView
:
self
.
view
];
//check if we've tapped the moving layer
if
([
self
.colorLayer.
presentationLayer
hitTest
:point])
{
//randomize the layer background color
CGFloat
red =
arc4random
()/(
CGFloat
)
INT_MAX
;
CGFloat
green =
arc4random
()/(
CGFloat
)
INT_MAX
;
CGFloat
blue =
arc4random
()/(
CGFloat
)
INT_MAX
;
self
.colorLayer.
backgroundColor
= [
UIColor
colorWithRed
:red
green
:green
blue
:blue
alpha
:
1.0
].
CGColor
;
}
else
{
//otherwise (slowly) move the layer to new position
[
CATransaction
beg
in
];
[
CATransaction
setAnimationDuration
:
4.0
];
self
.colorLayer.
position
= point;
ptg11539634
[
CATransaction
commit
];
}
}
@end
Bunu da bilmek isterim, böylece bir ödül alacağım. –
CADisplayLink'i kullanmaya çalıştınız mı? –