Подтвердить что ты не робот

Как я могу одушевиться во входе в CAEmitterCell?

В настоящее время мои частицы появляются на экране внезапно в полной форме и форме. Я хочу, чтобы ячейки либо начинались с 0,0 непрозрачности, либо анимировались до полной непрозрачности, либо начинались со шкалы 0.0 и анимировали до 1,0 масштаба. Я не могу найти что-либо в Интернете о том, как это сделать.

4b9b3361

Ответ 1

Вы можете анимировать различные свойства CAEmitterCell, есть хороший пример в анимации свойства CAEmitterCell Color, который должен дать вам хорошее представление о том, что вы должны делать для получения желаемого эффекта.

В CAEmitters есть много больших ресурсов, один хороший Учебное пособие: системы частиц в Core Animation с CAEmitterLayer, а другой - Apple Пример кода Fireworks

Ответ 2

Проверить эту ссылку - отличный ответ: http://invasivecode.tumblr.com/post/4448661320/core-animation-part-iii-basic-animations
Если вы хотите узнать больше, попробуйте эту ссылку: https://invasivecode.com/weblog/caemitterlayer-and-the-ios-particle-system-lets/
Попробуйте этот код...

    #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

Ответ 3

Попробуйте, если он ответит на ваш вопрос..ok

@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