33#import " CCNodeColor.h"
44#import " CCEffectNode.h"
55
6+ enum DFTest { DISTANCE_FIELD, OUTLINE };
7+
68@interface CCEffectsTest : TestBase @end
79@implementation CCEffectsTest {
810#if CC_EFFECTS_EXPERIMENTAL
911 CCEffectDistanceField* _distanceFieldEffect;
1012#endif
13+ CCEffectDFOutline* _outlineEffect;
14+ enum DFTest _currentEffect;
1115}
1216
1317-(id )init
@@ -20,11 +24,68 @@ -(id)init
2024 return self;
2125}
2226
27+ #pragma mark Distance Fields
28+
29+ -(void )setupDFOutlineEffectTest
30+ {
31+ _currentEffect = OUTLINE;
32+ self.subTitle = @" Distance Field Outline Test" ;
33+
34+ CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
35+ environment.positionType = CCPositionTypeNormalized;
36+ environment.anchorPoint = ccp (0.5 , 0.5 );
37+ environment.position = ccp (0 .5f , 0 .5f );
38+
39+ _outlineEffect = [CCEffectDFOutline effectWithOutlineColor: [CCColor redColor ] fillColor: [CCColor blackColor ]];
40+
41+ CCSprite *sampleSprite = [CCSprite spriteWithImageNamed: @" Images/output.png" ];
42+ sampleSprite.position = ccp (0.5 , 0.5 );
43+ sampleSprite.positionType = CCPositionTypeNormalized;
44+ sampleSprite.effect = _outlineEffect;
45+ sampleSprite.scale = 2 .0f ;
46+
47+ CCSpriteFrame* background = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background.png" ];
48+ CCSpriteFrame* backgroundHilite = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-background-hilite.png" ];
49+ CCSpriteFrame* handle = [CCSpriteFrame frameWithImageNamed: @" Tests/slider-handle.png" ];
50+
51+ CCSlider* slider = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
52+ [slider setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
53+ slider.positionType = CCPositionTypeNormalized;
54+ slider.position = ccp (0 .1f , 0 .5f );
55+
56+ slider.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
57+ slider.preferredSize = CGSizeMake (0 .5f , 10 );
58+ slider.rotation = 90 ;
59+ slider.anchorPoint = ccp (0 .5f , 0 .5f );
60+ slider.scale = 0.8 ;
61+
62+ [slider setTarget: self selector: @selector (outlineInnerWidthChange: )];
63+
64+ CCSlider* slider2 = [[CCSlider alloc ] initWithBackground: background andHandleImage: handle];
65+ [slider2 setBackgroundSpriteFrame: backgroundHilite forState: CCControlStateHighlighted];
66+ slider2.positionType = CCPositionTypeNormalized;
67+ slider2.position = ccp (0 .15f , 0 .5f );
68+
69+ slider2.preferredSizeType = CCSizeTypeMake (CCSizeUnitNormalized, CCSizeUnitUIPoints);
70+ slider2.preferredSize = CGSizeMake (0 .5f , 10 );
71+ slider2.rotation = 90 ;
72+ slider2.anchorPoint = ccp (0 .5f , 0 .5f );
73+ slider2.scale = 0.8 ;
74+
75+ [slider2 setTarget: self selector: @selector (outlineOuterWidthChange: )];
76+
77+ [self .contentNode addChild: environment];
78+ [self .contentNode addChild: slider];
79+ [self .contentNode addChild: slider2];
80+ [self .contentNode addChild: sampleSprite];
81+ }
82+
2383#if CC_EFFECTS_EXPERIMENTAL
2484-(void )setupDistanceFieldEffectTest
2585{
86+ _currentEffect = DISTANCE_FIELD;
2687 self.subTitle = @" Distance Field Effect Test" ;
27-
88+
2889 // CCNodeColor* environment = [CCNodeColor nodeWithColor:[CCColor whiteColor]];
2990 CCSprite *environment = [CCSprite spriteWithImageNamed: @" Images/MountainPanorama.jpg" ];
3091 environment.positionType = CCPositionTypeNormalized;
@@ -105,16 +166,25 @@ -(void)setupDistanceFieldEffectTest
105166 [self .contentNode addChild: slider3];
106167}
107168
169+ #endif
170+
108171- (void )outlineInnerWidthChange : (id )sender
109172{
110173 CCSlider* slider = sender;
111- _distanceFieldEffect.outlineInnerWidth = slider.sliderValue ;
174+ if (_currentEffect == DISTANCE_FIELD)
175+ _distanceFieldEffect.outlineInnerWidth = slider.sliderValue ;
176+ else if (_currentEffect == OUTLINE)
177+ _outlineEffect.outlineInnerWidth = slider.sliderValue ;
178+
112179}
113180
114181- (void )outlineOuterWidthChange : (id )sender
115182{
116183 CCSlider* slider = sender;
117- _distanceFieldEffect.outlineOuterWidth = slider.sliderValue ;
184+ if (_currentEffect == DISTANCE_FIELD)
185+ _distanceFieldEffect.outlineOuterWidth = slider.sliderValue ;
186+ else if (_currentEffect == OUTLINE)
187+ _outlineEffect.outlineOuterWidth = slider.sliderValue ;
118188}
119189
120190- (void )glowWidthChange : (id )sender
@@ -133,7 +203,7 @@ - (void)enableOutline:(id)sender
133203 _distanceFieldEffect.outline = !_distanceFieldEffect.outline ;
134204}
135205
136- #endif
206+ #pragma mark DropShadow
137207
138208-(void )setupDropShadowEffectTest
139209{
@@ -163,6 +233,8 @@ -(void)setupDropShadowEffectTest
163233 [self .contentNode addChild: effectNode];
164234}
165235
236+ #pragma mark Glass
237+
166238-(void )setupGlassEffectTest
167239{
168240 self.subTitle = @" Glass Effect Test" ;
0 commit comments