diff options
| author | Starla Insigna <starla4444@gmail.com> | 2011-07-30 11:19:14 -0400 |
|---|---|---|
| committer | Starla Insigna <starla4444@gmail.com> | 2011-07-30 11:19:14 -0400 |
| commit | 9cd57b731ab1c666d4a1cb725538fdc137763d12 (patch) | |
| tree | 5bac45ae5157a1cb10c6e45500cbf72789917980 /libs/cocos2d/CCActionInterval.h | |
| download | cartcollect-9cd57b731ab1c666d4a1cb725538fdc137763d12.tar.gz cartcollect-9cd57b731ab1c666d4a1cb725538fdc137763d12.tar.bz2 cartcollect-9cd57b731ab1c666d4a1cb725538fdc137763d12.zip | |
Initial commit (version 0.2.1)
Diffstat (limited to 'libs/cocos2d/CCActionInterval.h')
| -rwxr-xr-x | libs/cocos2d/CCActionInterval.h | 421 |
1 files changed, 421 insertions, 0 deletions
| diff --git a/libs/cocos2d/CCActionInterval.h b/libs/cocos2d/CCActionInterval.h new file mode 100755 index 0000000..c667963 --- /dev/null +++ b/libs/cocos2d/CCActionInterval.h | |||
| @@ -0,0 +1,421 @@ | |||
| 1 | /* | ||
| 2 | * cocos2d for iPhone: http://www.cocos2d-iphone.org | ||
| 3 | * | ||
| 4 | * Copyright (c) 2008-2011 Ricardo Quesada | ||
| 5 | * Copyright (c) 2011 Zynga Inc. | ||
| 6 | * | ||
| 7 | * Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| 8 | * of this software and associated documentation files (the "Software"), to deal | ||
| 9 | * in the Software without restriction, including without limitation the rights | ||
| 10 | * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| 11 | * copies of the Software, and to permit persons to whom the Software is | ||
| 12 | * furnished to do so, subject to the following conditions: | ||
| 13 | * | ||
| 14 | * The above copyright notice and this permission notice shall be included in | ||
| 15 | * all copies or substantial portions of the Software. | ||
| 16 | * | ||
| 17 | * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| 18 | * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| 19 | * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| 20 | * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| 21 | * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| 22 | * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||
| 23 | * THE SOFTWARE. | ||
| 24 | * | ||
| 25 | */ | ||
| 26 | |||
| 27 | |||
| 28 | #import "CCNode.h" | ||
| 29 | #import "CCAction.h" | ||
| 30 | #import "CCProtocols.h" | ||
| 31 | |||
| 32 | #include <sys/time.h> | ||
| 33 | |||
| 34 | /** An interval action is an action that takes place within a certain period of time. | ||
| 35 | It has an start time, and a finish time. The finish time is the parameter | ||
| 36 | duration plus the start time. | ||
| 37 | |||
| 38 | These CCActionInterval actions have some interesting properties, like: | ||
| 39 | - They can run normally (default) | ||
| 40 | - They can run reversed with the reverse method | ||
| 41 | - They can run with the time altered with the Accelerate, AccelDeccel and Speed actions. | ||
| 42 | |||
| 43 | For example, you can simulate a Ping Pong effect running the action normally and | ||
| 44 | then running it again in Reverse mode. | ||
| 45 | |||
| 46 | Example: | ||
| 47 | |||
| 48 | CCAction * pingPongAction = [CCSequence actions: action, [action reverse], nil]; | ||
| 49 | */ | ||
| 50 | @interface CCActionInterval: CCFiniteTimeAction <NSCopying> | ||
| 51 | { | ||
| 52 | ccTime elapsed_; | ||
| 53 | BOOL firstTick_; | ||
| 54 | } | ||
| 55 | |||
| 56 | /** how many seconds had elapsed since the actions started to run. */ | ||
| 57 | @property (nonatomic,readonly) ccTime elapsed; | ||
| 58 | |||
| 59 | /** creates the action */ | ||
| 60 | +(id) actionWithDuration: (ccTime) d; | ||
| 61 | /** initializes the action */ | ||
| 62 | -(id) initWithDuration: (ccTime) d; | ||
| 63 | /** returns YES if the action has finished */ | ||
| 64 | -(BOOL) isDone; | ||
| 65 | /** returns a reversed action */ | ||
| 66 | - (CCActionInterval*) reverse; | ||
| 67 | @end | ||
| 68 | |||
| 69 | /** Runs actions sequentially, one after another | ||
| 70 | */ | ||
| 71 | @interface CCSequence : CCActionInterval <NSCopying> | ||
| 72 | { | ||
| 73 | CCFiniteTimeAction *actions_[2]; | ||
| 74 | ccTime split_; | ||
| 75 | int last_; | ||
| 76 | } | ||
| 77 | /** helper contructor to create an array of sequenceable actions */ | ||
| 78 | +(id) actions: (CCFiniteTimeAction*) action1, ... NS_REQUIRES_NIL_TERMINATION; | ||
| 79 | /** helper contructor to create an array of sequenceable actions given an array */ | ||
| 80 | +(id) actionsWithArray: (NSArray*) actions; | ||
| 81 | /** creates the action */ | ||
| 82 | +(id) actionOne:(CCFiniteTimeAction*)actionOne two:(CCFiniteTimeAction*)actionTwo; | ||
| 83 | /** initializes the action */ | ||
| 84 | -(id) initOne:(CCFiniteTimeAction*)actionOne two:(CCFiniteTimeAction*)actionTwo; | ||
| 85 | @end | ||
| 86 | |||
| 87 | |||
| 88 | /** Repeats an action a number of times. | ||
| 89 | * To repeat an action forever use the CCRepeatForever action. | ||
| 90 | */ | ||
| 91 | @interface CCRepeat : CCActionInterval <NSCopying> | ||
| 92 | { | ||
| 93 | NSUInteger times_; | ||
| 94 | NSUInteger total_; | ||
| 95 | CCFiniteTimeAction *innerAction_; | ||
| 96 | } | ||
| 97 | |||
| 98 | /** Inner action */ | ||
| 99 | @property (nonatomic,readwrite,retain) CCFiniteTimeAction *innerAction; | ||
| 100 | |||
| 101 | /** creates a CCRepeat action. Times is an unsigned integer between 1 and MAX_UINT */ | ||
| 102 | +(id) actionWithAction:(CCFiniteTimeAction*)action times: (NSUInteger)times; | ||
| 103 | /** initializes a CCRepeat action. Times is an unsigned integer between 1 and MAX_UINT */ | ||
| 104 | -(id) initWithAction:(CCFiniteTimeAction*)action times: (NSUInteger)times; | ||
| 105 | @end | ||
| 106 | |||
| 107 | /** Spawn a new action immediately | ||
| 108 | */ | ||
| 109 | @interface CCSpawn : CCActionInterval <NSCopying> | ||
| 110 | { | ||
| 111 | CCFiniteTimeAction *one_; | ||
| 112 | CCFiniteTimeAction *two_; | ||
| 113 | } | ||
| 114 | /** helper constructor to create an array of spawned actions */ | ||
| 115 | +(id) actions: (CCFiniteTimeAction*) action1, ... NS_REQUIRES_NIL_TERMINATION; | ||
| 116 | /** helper contructor to create an array of spawned actions given an array */ | ||
| 117 | +(id) actionsWithArray: (NSArray*) actions; | ||
| 118 | /** creates the Spawn action */ | ||
| 119 | +(id) actionOne: (CCFiniteTimeAction*) one two:(CCFiniteTimeAction*) two; | ||
| 120 | /** initializes the Spawn action with the 2 actions to spawn */ | ||
| 121 | -(id) initOne: (CCFiniteTimeAction*) one two:(CCFiniteTimeAction*) two; | ||
| 122 | @end | ||
| 123 | |||
| 124 | /** Rotates a CCNode object to a certain angle by modifying it's | ||
| 125 | rotation attribute. | ||
| 126 | The direction will be decided by the shortest angle. | ||
| 127 | */ | ||
| 128 | @interface CCRotateTo : CCActionInterval <NSCopying> | ||
| 129 | { | ||
| 130 | float dstAngle_; | ||
| 131 | float startAngle_; | ||
| 132 | float diffAngle_; | ||
| 133 | } | ||
| 134 | /** creates the action */ | ||
| 135 | +(id) actionWithDuration:(ccTime)duration angle:(float)angle; | ||
| 136 | /** initializes the action */ | ||
| 137 | -(id) initWithDuration:(ccTime)duration angle:(float)angle; | ||
| 138 | @end | ||
| 139 | |||
| 140 | /** Rotates a CCNode object clockwise a number of degrees by modiying it's rotation attribute. | ||
| 141 | */ | ||
| 142 | @interface CCRotateBy : CCActionInterval <NSCopying> | ||
| 143 | { | ||
| 144 | float angle_; | ||
| 145 | float startAngle_; | ||
| 146 | } | ||
| 147 | /** creates the action */ | ||
| 148 | +(id) actionWithDuration:(ccTime)duration angle:(float)deltaAngle; | ||
| 149 | /** initializes the action */ | ||
| 150 | -(id) initWithDuration:(ccTime)duration angle:(float)deltaAngle; | ||
| 151 | @end | ||
| 152 | |||
| 153 | /** Moves a CCNode object to the position x,y. x and y are absolute coordinates by modifying it's position attribute. | ||
| 154 | */ | ||
| 155 | @interface CCMoveTo : CCActionInterval <NSCopying> | ||
| 156 | { | ||
| 157 | CGPoint endPosition_; | ||
| 158 | CGPoint startPosition_; | ||
| 159 | CGPoint delta_; | ||
| 160 | } | ||
| 161 | /** creates the action */ | ||
| 162 | +(id) actionWithDuration:(ccTime)duration position:(CGPoint)position; | ||
| 163 | /** initializes the action */ | ||
| 164 | -(id) initWithDuration:(ccTime)duration position:(CGPoint)position; | ||
| 165 | @end | ||
| 166 | |||
| 167 | /** Moves a CCNode object x,y pixels by modifying it's position attribute. | ||
| 168 | x and y are relative to the position of the object. | ||
| 169 | Duration is is seconds. | ||
| 170 | */ | ||
| 171 | @interface CCMoveBy : CCMoveTo <NSCopying> | ||
| 172 | { | ||
| 173 | } | ||
| 174 | /** creates the action */ | ||
| 175 | +(id) actionWithDuration: (ccTime)duration position:(CGPoint)deltaPosition; | ||
| 176 | /** initializes the action */ | ||
| 177 | -(id) initWithDuration: (ccTime)duration position:(CGPoint)deltaPosition; | ||
| 178 | @end | ||
| 179 | |||
| 180 | /** Skews a CCNode object to given angles by modifying it's skewX and skewY attributes | ||
| 181 | @since v1.0 | ||
| 182 | */ | ||
| 183 | @interface CCSkewTo : CCActionInterval <NSCopying> | ||
| 184 | { | ||
| 185 | float skewX_; | ||
| 186 | float skewY_; | ||
| 187 | float startSkewX_; | ||
| 188 | float startSkewY_; | ||
| 189 | float endSkewX_; | ||
| 190 | float endSkewY_; | ||
| 191 | float deltaX_; | ||
| 192 | float deltaY_; | ||
| 193 | } | ||
| 194 | /** creates the action */ | ||
| 195 | +(id) actionWithDuration:(ccTime)t skewX:(float)sx skewY:(float)sy; | ||
| 196 | /** initializes the action */ | ||
| 197 | -(id) initWithDuration:(ccTime)t skewX:(float)sx skewY:(float)sy; | ||
| 198 | @end | ||
| 199 | |||
| 200 | /** Skews a CCNode object by skewX and skewY degrees | ||
| 201 | @since v1.0 | ||
| 202 | */ | ||
| 203 | @interface CCSkewBy : CCSkewTo <NSCopying> | ||
| 204 | { | ||
| 205 | } | ||
| 206 | @end | ||
| 207 | |||
| 208 | /** Moves a CCNode object simulating a parabolic jump movement by modifying it's position attribute. | ||
| 209 | */ | ||
| 210 | @interface CCJumpBy : CCActionInterval <NSCopying> | ||
| 211 | { | ||
| 212 | CGPoint startPosition_; | ||
| 213 | CGPoint delta_; | ||
| 214 | ccTime height_; | ||
| 215 | NSUInteger jumps_; | ||
| 216 | } | ||
| 217 | /** creates the action */ | ||
| 218 | +(id) actionWithDuration: (ccTime)duration position:(CGPoint)position height:(ccTime)height jumps:(NSUInteger)jumps; | ||
| 219 | /** initializes the action */ | ||
| 220 | -(id) initWithDuration: (ccTime)duration position:(CGPoint)position height:(ccTime)height jumps:(NSUInteger)jumps; | ||
| 221 | @end | ||
| 222 | |||
| 223 | /** Moves a CCNode object to a parabolic position simulating a jump movement by modifying it's position attribute. | ||
| 224 | */ | ||
| 225 | @interface CCJumpTo : CCJumpBy <NSCopying> | ||
| 226 | { | ||
| 227 | } | ||
| 228 | @end | ||
| 229 | |||
| 230 | /** bezier configuration structure | ||
| 231 | */ | ||
| 232 | typedef struct _ccBezierConfig { | ||
| 233 | //! end position of the bezier | ||
| 234 | CGPoint endPosition; | ||
| 235 | //! Bezier control point 1 | ||
| 236 | CGPoint controlPoint_1; | ||
| 237 | //! Bezier control point 2 | ||
| 238 | CGPoint controlPoint_2; | ||
| 239 | } ccBezierConfig; | ||
| 240 | |||
| 241 | /** An action that moves the target with a cubic Bezier curve by a certain distance. | ||
| 242 | */ | ||
| 243 | @interface CCBezierBy : CCActionInterval <NSCopying> | ||
| 244 | { | ||
| 245 | ccBezierConfig config_; | ||
| 246 | CGPoint startPosition_; | ||
| 247 | } | ||
| 248 | |||
| 249 | /** creates the action with a duration and a bezier configuration */ | ||
| 250 | +(id) actionWithDuration: (ccTime) t bezier:(ccBezierConfig) c; | ||
| 251 | |||
| 252 | /** initializes the action with a duration and a bezier configuration */ | ||
| 253 | -(id) initWithDuration: (ccTime) t bezier:(ccBezierConfig) c; | ||
| 254 | @end | ||
| 255 | |||
| 256 | /** An action that moves the target with a cubic Bezier curve to a destination point. | ||
| 257 | @since v0.8.2 | ||
| 258 | */ | ||
| 259 | @interface CCBezierTo : CCBezierBy | ||
| 260 | { | ||
| 261 | } | ||
| 262 | @end | ||
| 263 | |||
| 264 | /** Scales a CCNode object to a zoom factor by modifying it's scale attribute. | ||
| 265 | @warning This action doesn't support "reverse" | ||
| 266 | */ | ||
| 267 | @interface CCScaleTo : CCActionInterval <NSCopying> | ||
| 268 | { | ||
| 269 | float scaleX_; | ||
| 270 | float scaleY_; | ||
| 271 | float startScaleX_; | ||
| 272 | float startScaleY_; | ||
| 273 | float endScaleX_; | ||
| 274 | float endScaleY_; | ||
| 275 | float deltaX_; | ||
| 276 | float deltaY_; | ||
| 277 | } | ||
| 278 | /** creates the action with the same scale factor for X and Y */ | ||
| 279 | +(id) actionWithDuration: (ccTime)duration scale:(float) s; | ||
| 280 | /** initializes the action with the same scale factor for X and Y */ | ||
| 281 | -(id) initWithDuration: (ccTime)duration scale:(float) s; | ||
| 282 | /** creates the action with and X factor and a Y factor */ | ||
| 283 | +(id) actionWithDuration: (ccTime)duration scaleX:(float) sx scaleY:(float)sy; | ||
| 284 | /** initializes the action with and X factor and a Y factor */ | ||
| 285 | -(id) initWithDuration: (ccTime)duration scaleX:(float) sx scaleY:(float)sy; | ||
| 286 | @end | ||
| 287 | |||
| 288 | /** Scales a CCNode object a zoom factor by modifying it's scale attribute. | ||
| 289 | */ | ||
| 290 | @interface CCScaleBy : CCScaleTo <NSCopying> | ||
| 291 | { | ||
| 292 | } | ||
| 293 | @end | ||
| 294 | |||
| 295 | /** Blinks a CCNode object by modifying it's visible attribute | ||
| 296 | */ | ||
| 297 | @interface CCBlink : CCActionInterval <NSCopying> | ||
| 298 | { | ||
| 299 | NSUInteger times_; | ||
| 300 | } | ||
| 301 | /** creates the action */ | ||
| 302 | +(id) actionWithDuration: (ccTime)duration blinks:(NSUInteger)blinks; | ||
| 303 | /** initilizes the action */ | ||
| 304 | -(id) initWithDuration: (ccTime)duration blinks:(NSUInteger)blinks; | ||
| 305 | @end | ||
| 306 | |||
| 307 | /** Fades In an object that implements the CCRGBAProtocol protocol. It modifies the opacity from 0 to 255. | ||
| 308 | The "reverse" of this action is FadeOut | ||
| 309 | */ | ||
| 310 | @interface CCFadeIn : CCActionInterval <NSCopying> | ||
| 311 | { | ||
| 312 | } | ||
| 313 | @end | ||
| 314 | |||
| 315 | /** Fades Out an object that implements the CCRGBAProtocol protocol. It modifies the opacity from 255 to 0. | ||
| 316 | The "reverse" of this action is FadeIn | ||
| 317 | */ | ||
| 318 | @interface CCFadeOut : CCActionInterval <NSCopying> | ||
| 319 | { | ||
| 320 | } | ||
| 321 | @end | ||
| 322 | |||
| 323 | /** Fades an object that implements the CCRGBAProtocol protocol. It modifies the opacity from the current value to a custom one. | ||
| 324 | @warning This action doesn't support "reverse" | ||
| 325 | */ | ||
| 326 | @interface CCFadeTo : CCActionInterval <NSCopying> | ||
| 327 | { | ||
| 328 | GLubyte toOpacity_; | ||
| 329 | GLubyte fromOpacity_; | ||
| 330 | } | ||
| 331 | /** creates an action with duration and opactiy */ | ||
| 332 | +(id) actionWithDuration:(ccTime)duration opacity:(GLubyte)opactiy; | ||
| 333 | /** initializes the action with duration and opacity */ | ||
| 334 | -(id) initWithDuration:(ccTime)duration opacity:(GLubyte)opacity; | ||
| 335 | @end | ||
| 336 | |||
| 337 | /** Tints a CCNode that implements the CCNodeRGB protocol from current tint to a custom one. | ||
| 338 | @warning This action doesn't support "reverse" | ||
| 339 | @since v0.7.2 | ||
| 340 | */ | ||
| 341 | @interface CCTintTo : CCActionInterval <NSCopying> | ||
| 342 | { | ||
| 343 | ccColor3B to_; | ||
| 344 | ccColor3B from_; | ||
| 345 | } | ||
| 346 | /** creates an action with duration and color */ | ||
| 347 | +(id) actionWithDuration:(ccTime)duration red:(GLubyte)red green:(GLubyte)green blue:(GLubyte)blue; | ||
| 348 | /** initializes the action with duration and color */ | ||
| 349 | -(id) initWithDuration:(ccTime)duration red:(GLubyte)red green:(GLubyte)green blue:(GLubyte)blue; | ||
| 350 | @end | ||
| 351 | |||
| 352 | /** Tints a CCNode that implements the CCNodeRGB protocol from current tint to a custom one. | ||
| 353 | @since v0.7.2 | ||
| 354 | */ | ||
| 355 | @interface CCTintBy : CCActionInterval <NSCopying> | ||
| 356 | { | ||
| 357 | GLshort deltaR_, deltaG_, deltaB_; | ||
| 358 | GLshort fromR_, fromG_, fromB_; | ||
| 359 | } | ||
| 360 | /** creates an action with duration and color */ | ||
| 361 | +(id) actionWithDuration:(ccTime)duration red:(GLshort)deltaRed green:(GLshort)deltaGreen blue:(GLshort)deltaBlue; | ||
| 362 | /** initializes the action with duration and color */ | ||
| 363 | -(id) initWithDuration:(ccTime)duration red:(GLshort)deltaRed green:(GLshort)deltaGreen blue:(GLshort)deltaBlue; | ||
| 364 | @end | ||
| 365 | |||
| 366 | /** Delays the action a certain amount of seconds | ||
| 367 | */ | ||
| 368 | @interface CCDelayTime : CCActionInterval <NSCopying> | ||
| 369 | { | ||
| 370 | } | ||
| 371 | @end | ||
| 372 | |||
| 373 | /** Executes an action in reverse order, from time=duration to time=0 | ||
| 374 | |||
| 375 | @warning Use this action carefully. This action is not | ||
| 376 | sequenceable. Use it as the default "reversed" method | ||
| 377 | of your own actions, but using it outside the "reversed" | ||
| 378 | scope is not recommended. | ||
| 379 | */ | ||
| 380 | @interface CCReverseTime : CCActionInterval <NSCopying> | ||
| 381 | { | ||
| 382 | CCFiniteTimeAction * other_; | ||
| 383 | } | ||
| 384 | /** creates the action */ | ||
| 385 | +(id) actionWithAction: (CCFiniteTimeAction*) action; | ||
| 386 | /** initializes the action */ | ||
| 387 | -(id) initWithAction: (CCFiniteTimeAction*) action; | ||
| 388 | @end | ||
| 389 | |||
| 390 | |||
| 391 | @class CCAnimation; | ||
| 392 | @class CCTexture2D; | ||
| 393 | /** Animates a sprite given the name of an Animation */ | ||
| 394 | @interface CCAnimate : CCActionInterval <NSCopying> | ||
| 395 | { | ||
| 396 | CCAnimation *animation_; | ||
| 397 | id origFrame_; | ||
| 398 | BOOL restoreOriginalFrame_; | ||
| 399 | } | ||
| 400 | /** animation used for the animage */ | ||
| 401 | @property (readwrite,nonatomic,retain) CCAnimation * animation; | ||
| 402 | |||
| 403 | /** creates the action with an Animation and will restore the original frame when the animation is over */ | ||
| 404 | +(id) actionWithAnimation:(CCAnimation*) a; | ||
| 405 | /** initializes the action with an Animation and will restore the original frame when the animtion is over */ | ||
| 406 | -(id) initWithAnimation:(CCAnimation*) a; | ||
| 407 | /** creates the action with an Animation */ | ||
| 408 | +(id) actionWithAnimation:(CCAnimation*) a restoreOriginalFrame:(BOOL)b; | ||
| 409 | /** initializes the action with an Animation */ | ||
| 410 | -(id) initWithAnimation:(CCAnimation*) a restoreOriginalFrame:(BOOL)b; | ||
| 411 | /** creates an action with a duration, animation and depending of the restoreOriginalFrame, it will restore the original frame or not. | ||
| 412 | The 'delay' parameter of the animation will be overrided by the duration parameter. | ||
| 413 | @since v0.99.0 | ||
| 414 | */ | ||
| 415 | +(id) actionWithDuration:(ccTime)duration animation:(CCAnimation*)animation restoreOriginalFrame:(BOOL)b; | ||
| 416 | /** initializes an action with a duration, animation and depending of the restoreOriginalFrame, it will restore the original frame or not. | ||
| 417 | The 'delay' parameter of the animation will be overrided by the duration parameter. | ||
| 418 | @since v0.99.0 | ||
| 419 | */ | ||
| 420 | -(id) initWithDuration:(ccTime)duration animation:(CCAnimation*)animation restoreOriginalFrame:(BOOL)b; | ||
| 421 | @end | ||
