2014-10-30 22 views
10

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?

+1

Bunu da bilmek isterim, böylece bir ödül alacağım. –

+0

CADisplayLink'i kullanmaya çalıştınız mı? –

cevap

0

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 
-1

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