1 /** 2 * The MIT License (MIT) 3 * 4 * Copyright (c) 2016 DeNA Co., Ltd. 5 * 6 * Permission is hereby granted, free of charge, to any person obtaining a copy 7 * of this software and associated documentation files (the "Software"), to deal 8 * in the Software without restriction, including without limitation the rights 9 * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10 * copies of the Software, and to permit persons to whom the Software is 11 * furnished to do so, subject to the following conditions: 12 * 13 * The above copyright notice and this permission notice shall be included in 14 * all copies or substantial portions of the Software. 15 * 16 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 19 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 22 * SOFTWARE. 23 */ 24 25 /// <reference path="base.js"/> 26 /// <reference path="graphics.js"/> 27 28 /** 29 * An interface used by the createjs.Tween object to change properties of a 30 * target object. 31 * @interface 32 */ 33 createjs.TweenTarget = function() {}; 34 35 /** 36 * Play modes of the tweens attached to a target object. 37 * @enum {number} 38 */ 39 createjs.TweenTarget.PlayMode = { 40 INDEPENDENT: 0, 41 SINGLE: 1, 42 SYNCHED: 2 43 }; 44 45 /** 46 * Orientations used by the createjs.TweenTarget.RotationProperty class. 47 * @enum {number} 48 */ 49 createjs.TweenTarget.Orientation = { 50 NONE: 0, 51 FIXED: 1, 52 AUTO: 2, 53 CLOCKWISE: 3, 54 COUNTERCLOCKWISE: 4 55 }; 56 57 /** 58 * An abstract class that changes a property of a createjs.TweenTarget object. 59 * @constructor 60 */ 61 createjs.TweenTarget.Property = function() { 62 }; 63 64 /** 65 * Whether this property is a number property. 66 * @type {number} 67 * @private 68 */ 69 createjs.TweenTarget.Property.prototype.isNumber_ = 0; 70 71 /** 72 * Sets an interpolated value to the specified createjs.TweenTarget object. 73 * @param {createjs.TweenTarget} target 74 * @param {createjs.TweenTarget} proxy 75 * @param {number} ratio 76 * @param {createjs.TweenTarget.Property.Listener} listener 77 * @param {number} position 78 * @param {Array.<createjs.TweenTarget>} targets 79 */ 80 createjs.TweenTarget.Property.prototype.setValue = 81 function(target, proxy, ratio, listener, position, targets) { 82 /// <param type="createjs.TweenTarget" name="target"/> 83 /// <param type="createjs.TweenTarget" name="proxy"/> 84 /// <param type="number" name="ratio"/> 85 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 86 /// <param type="number" name="position"/> 87 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 88 }; 89 90 /** 91 * Returns whether this property is a number property. 92 * @return {number} 93 * @const 94 */ 95 createjs.TweenTarget.Property.prototype.isNumber = function() { 96 /// <returns type="number"/> 97 return this.isNumber_; 98 }; 99 100 /** 101 * Returns a clone of this property. 102 * @param {createjs.TweenTarget} target 103 * @param {Array.<createjs.TweenTarget>} targets 104 * @param {*=} opt_value 105 * @return {createjs.TweenTarget.Property} 106 */ 107 createjs.TweenTarget.Property.prototype.clone = function(target, targets, opt_value) { 108 /// <param type="createjs.TweenTarget" name="target"/> 109 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 110 /// <param optional="true" name="opt_value"/> 111 /// <returns type="createjs.TweenTarget.Property"/> 112 return null; 113 }; 114 115 /** 116 * Interpolates this property with the specified value and returns a clone. 117 * @param {*} value 118 * @param {number} t0 119 * @param {number} t1 120 * @return {createjs.TweenTarget.Property} 121 */ 122 createjs.TweenTarget.Property.prototype.interpolate = function(value, t0, t1) { 123 /// <param name="value"/> 124 /// <param type="number" name="t0"/> 125 /// <param type="number" name="t1"/> 126 return this.clone(null, null); 127 }; 128 129 /** 130 * An interface that listens events from createjs.TweenTarget.Property objects. 131 * @interface 132 */ 133 createjs.TweenTarget.Property.Listener = function() {}; 134 135 /** 136 * Called when a createjs.TweenTarget.LoopProperty object changes its value. 137 * @param {boolean} value 138 */ 139 createjs.TweenTarget.Property.Listener.prototype.handleLoopChanged = 140 function(value) {}; 141 142 /** 143 * A class that encapsulates a setter function for a property of a 144 * createjs.TweenTarget.Property object. This class is used for creating 145 * createjs.TweenTarget.Property objects. 146 * @param {Function} setter 147 * @constructor 148 */ 149 createjs.TweenTarget.Setter = function(setter) { 150 /** 151 * The setter function. 152 * @const {Function} 153 * @private 154 */ 155 this.fn_ = setter; 156 }; 157 158 /** 159 * Whether this setter sets a number property. 160 * @const {number} 161 * @private 162 */ 163 createjs.TweenTarget.Setter.NUMBER_ = 0; 164 165 /** 166 * Whether this setter sets a boolean property. 167 * @const {number} 168 * @private 169 */ 170 createjs.TweenTarget.Setter.BOOLEAN_ = 1; 171 172 /** 173 * Whether this setter sets a string property. 174 * @const {number} 175 * @private 176 */ 177 createjs.TweenTarget.Setter.STRING_ = 2; 178 179 /** 180 * Whether this setter sets a loop property. 181 * @const {number} 182 * @private 183 */ 184 createjs.TweenTarget.Setter.LOOP_ = 3; 185 186 /** 187 * Whether this setter sets a Graphics property. 188 * @const {number} 189 * @private 190 */ 191 createjs.TweenTarget.Setter.GRAPHICS_ = 4; 192 193 /** 194 * Whether this setter sets a startPosition property. 195 * @const {number} 196 * @private 197 */ 198 createjs.TweenTarget.Setter.POSITION_ = 5; 199 200 /** 201 * The type of properties created with this setter. 202 * @type {number} 203 * @private 204 */ 205 createjs.TweenTarget.Setter.prototype.type_ = -1; 206 207 /** 208 * The start value for number properties created with this setter. 209 * @type {number} 210 * @private 211 */ 212 createjs.TweenTarget.Setter.prototype.number_ = 0; 213 214 /** 215 * The start value for boolean properties created with this setter. 216 * @type {boolean} 217 * @private 218 */ 219 createjs.TweenTarget.Setter.prototype.bool_ = false; 220 221 /** 222 * The start value for string properties created with this setter. 223 * @type {string} 224 * @private 225 */ 226 createjs.TweenTarget.Setter.prototype.text_ = ''; 227 228 /** 229 * The start value for Graphics properties created with this setter. 230 * @type {createjs.Graphics} 231 * @private 232 */ 233 createjs.TweenTarget.Setter.prototype.graphics_ = null; 234 235 /** 236 * Disables this setter. 237 * @const 238 */ 239 createjs.TweenTarget.Setter.prototype.setNull = function() { 240 this.type_ = -1; 241 }; 242 243 /** 244 * Sets the start value for number properties created with this setter. 245 * @param {number} value 246 * @const 247 */ 248 createjs.TweenTarget.Setter.prototype.setNumber = function(value) { 249 /// <param type="number" name="value"/> 250 this.type_ = createjs.TweenTarget.Setter.NUMBER_; 251 this.number_ = value; 252 }; 253 254 /** 255 * Sets the start value for boolean properties created with this setter. 256 * @param {boolean} value 257 * @const 258 */ 259 createjs.TweenTarget.Setter.prototype.setBoolean = function(value) { 260 /// <param type="boolean" name="value"/> 261 this.type_ = createjs.TweenTarget.Setter.BOOLEAN_; 262 this.bool_ = value; 263 }; 264 265 /** 266 * Sets the start value for string properties created with this setter. 267 * @param {string} value 268 * @const 269 */ 270 createjs.TweenTarget.Setter.prototype.setString = function(value) { 271 /// <param type="string" name="value"/> 272 this.type_ = createjs.TweenTarget.Setter.STRING_; 273 this.text_ = value; 274 }; 275 276 /** 277 * Sets the start value for 'loop' properties created with this setter. 278 * @param {boolean} value 279 * @const 280 */ 281 createjs.TweenTarget.Setter.prototype.setLoop = function(value) { 282 /// <param type="boolean" name="value"/> 283 this.type_ = createjs.TweenTarget.Setter.LOOP_; 284 this.bool_ = value; 285 }; 286 287 /** 288 * Sets the start value for Graphics properties created with this setter. 289 * @param {createjs.Graphics} value 290 * @const 291 */ 292 createjs.TweenTarget.Setter.prototype.setGraphics = function(value) { 293 /// <param type="createjs.Graphics" name="value"/> 294 this.type_ = createjs.TweenTarget.Setter.GRAPHICS_; 295 this.graphics_ = value; 296 }; 297 298 /** 299 * Sets the start value for startPosition properties created with this setter. 300 * @param {number} value 301 * @const 302 */ 303 createjs.TweenTarget.Setter.prototype.setPosition = function(value) { 304 /// <param type="number" name="value"/> 305 this.type_ = createjs.TweenTarget.Setter.POSITION_; 306 this.number_ = value; 307 }; 308 309 /** 310 * A mapping from a string key to its setter function. 311 * @const {Object.<string,createjs.TweenTarget.Setter>} 312 * @private 313 */ 314 createjs.TweenTarget.Property.setters_ = { 315 }; 316 317 /** 318 * A class that changes a property of a createjs.TweenTarget object. This class 319 * is used by the createjs.TweenTarget.StateProperty class to set Object 320 * properties. 321 * @param {Function} setter 322 * @param {*} value 323 * @constructor 324 */ 325 createjs.TweenTarget.ValueProperty = function(setter, value) { 326 /** 327 * The function that changes this property. 328 * @const {Function} 329 * @private 330 */ 331 this.setter_ = setter; 332 333 /** 334 * The value of this property. 335 * @const {*} 336 * @private 337 */ 338 this.value_ = value; 339 }; 340 341 /** 342 * Creates a list of createjs.TweenTarget.ValueProperty objects from an Object 343 * property. 344 * @param {Object} properties 345 * @return {Array.<createjs.TweenTarget.ValueProperty>} 346 */ 347 createjs.TweenTarget.ValueProperty.get = function(properties) { 348 /// <param type="Object" name="properties"/> 349 /// <returns type="Array" elementType="createjs.TweenTarget.ValueProperty"/> 350 var values = []; 351 for (var key in properties) { 352 var setter = createjs.TweenTarget.Property.setters_[key]; 353 if (setter) { 354 values.push(new createjs.TweenTarget.ValueProperty( 355 setter.fn_, properties[key])); 356 } 357 } 358 return values; 359 }; 360 361 /** 362 * Sets a property value for the specified createjs.TweenTarget object. 363 * @param {createjs.TweenTarget} target 364 */ 365 createjs.TweenTarget.ValueProperty.prototype.setValue = function(target) { 366 /// <param type="createjs.TweenTarget" name="target"/> 367 this.setter_.call(target, this.value_); 368 }; 369 370 /** 371 * A class that changes a number property of a createjs.TweenTarget object. 372 * @param {function(number)} setter 373 * @param {number} start 374 * @param {number} end 375 * @extends {createjs.TweenTarget.Property} 376 * @constructor 377 */ 378 createjs.TweenTarget.NumberProperty = function(setter, start, end) { 379 createjs.TweenTarget.Property.call(this); 380 381 /** 382 * The function that changes this property. 383 * @const {function(number)} 384 * @private 385 */ 386 this.setter_ = setter; 387 388 /** 389 * The start value of this property. 390 * @const {number} 391 * @private 392 */ 393 this.start_ = start; 394 395 /** 396 * The end value of this property. 397 * @const {number} 398 * @private 399 */ 400 this.end_ = end; 401 }; 402 createjs.inherits('TweenTarget.NumberProperty', 403 createjs.TweenTarget.NumberProperty, 404 createjs.TweenTarget.Property); 405 406 /** 407 * Creates a new createjs.TweenTarget.NumberProperty object. 408 * @param {function(number)} setter 409 * @param {number} start 410 * @return {createjs.TweenTarget.NumberProperty} 411 * @const 412 */ 413 createjs.TweenTarget.NumberProperty.get = function(setter, start) { 414 /// <param type="Function" name="setter"/> 415 /// <param type="number" name="start"/> 416 /// <returns type="createjs.TweenTarget.NumberProperty"/> 417 return new createjs.TweenTarget.NumberProperty(setter, start, start); 418 }; 419 420 /** 421 * Creates a copy of the specified createjs.TweenTarget.NumberProperty object. 422 * @param {createjs.TweenTarget.NumberProperty} property 423 * @param {number} end 424 * @return {createjs.TweenTarget.NumberProperty} 425 * @const 426 */ 427 createjs.TweenTarget.NumberProperty.clone = function(property, end) { 428 /// <param type="createjs.TweenTarget.NumberProperty" name="property"/> 429 /// <param type="number" name="end"/> 430 /// <returns type="createjs.TweenTarget.NumberProperty"/> 431 return new createjs.TweenTarget.NumberProperty(property.setter_, end, end); 432 }; 433 434 /** @override */ 435 createjs.TweenTarget.NumberProperty.prototype.isNumber_ = 1; 436 437 /** @override */ 438 createjs.TweenTarget.NumberProperty.prototype.setValue = 439 function(target, proxy, ratio, listener, position, targets) { 440 /// <param type="createjs.TweenTarget" name="target"/> 441 /// <param type="createjs.TweenTarget" name="proxy"/> 442 /// <param type="number" name="ratio"/> 443 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 444 /// <param type="number" name="position"/> 445 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 446 this.setter_.call(target, this.start_ + (this.end_ - this.start_) * ratio); 447 }; 448 449 /** @override */ 450 createjs.TweenTarget.NumberProperty.prototype.clone = 451 function(target, targets, opt_value) { 452 /// <param type="createjs.TweenTarget" name="target"/> 453 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 454 /// <param type="number" name="opt_value"/> 455 /// <returns type="createjs.TweenTarget.NumberProperty"/> 456 if (opt_value == null) { 457 if (this.start_ == this.end_) { 458 return this; 459 } 460 opt_value = this.end_; 461 } 462 var end = createjs.getNumber(opt_value); 463 return new createjs.TweenTarget.NumberProperty(this.setter_, this.end_, end); 464 }; 465 466 /** @override */ 467 createjs.TweenTarget.NumberProperty.prototype.interpolate = 468 function(value, t0, t1) { 469 /// <param type="number" name="value"/> 470 /// <param type="number" name="t0"/> 471 /// <param type="number" name="t1"/> 472 /// <returns type="createjs.TweenTarget.NumberProperty"/> 473 if (value == null) { 474 return this.clone(null, null); 475 } 476 var difference = createjs.getNumber(value) - this.end_; 477 var start = this.end_ + difference * t0; 478 var end = this.end_ + difference * t1; 479 return new createjs.TweenTarget.NumberProperty(this.setter_, start, end); 480 }; 481 482 /** 483 * A class that changes the position of a createjs.TweenTarget object so it 484 * moves along the specified quadratic-Bezier path. 485 * @param {createjs.TweenTarget.NumberProperty} x 486 * @param {createjs.TweenTarget.NumberProperty} y 487 * @param {Array.<number>} path 488 * @param {number} index 489 * @param {number} start 490 * @param {number} step 491 * @extends {createjs.TweenTarget.Property} 492 * @constructor 493 */ 494 createjs.TweenTarget.PathProperty = 495 function(x, y, path, index, start, step) { 496 createjs.TweenTarget.Property.call(this); 497 498 /** 499 * The function that changes an 'x' property. 500 * @const {function(number)} 501 * @private 502 */ 503 this.setX_ = x.setter_; 504 505 /** 506 * The function that changes a 'y' property. 507 * @const {function(number)} 508 * @private 509 */ 510 this.setY_ = y.setter_; 511 512 /** 513 * The first value of the x property. 514 * @const {number} 515 * @private 516 */ 517 this.x0_ = path[index]; 518 519 /** 520 * The first value of the y property. 521 * @const {number} 522 * @private 523 */ 524 this.y0_ = path[index + 1]; 525 526 /** 527 * The second value of the x property. 528 * @const {number} 529 * @private 530 */ 531 this.x1_ = path[index + 2]; 532 533 /** 534 * The second value of this property. 535 * @const {number} 536 * @private 537 */ 538 this.y1_ = path[index + 3]; 539 540 /** 541 * The third value of this property. 542 * @const {number} 543 * @private 544 */ 545 this.x2_ = path[index + 4]; 546 547 /** 548 * The third value of this property. 549 * @const {number} 550 * @private 551 */ 552 this.y2_ = path[index + 5]; 553 554 /** 555 * The start position in this path. 556 * @const {number} 557 * @private 558 */ 559 this.start_ = start; 560 561 /** 562 * The step length of this path. 563 * @const {number} 564 * @private 565 */ 566 this.step_ = step; 567 }; 568 createjs.inherits('TweenTarget.PathProperty', 569 createjs.TweenTarget.PathProperty, 570 createjs.TweenTarget.Property); 571 572 /** 573 * Creates a new createjs.TweenTarget.PathProperty object. 574 * @param {createjs.TweenTarget.NumberProperty} x 575 * @param {createjs.TweenTarget.NumberProperty} y 576 * @param {Array.<number>} path 577 * @param {number} index 578 * @param {number} start 579 * @param {number} step 580 * @return {createjs.TweenTarget.PathProperty} 581 * @const 582 */ 583 createjs.TweenTarget.PathProperty.get = 584 function(x, y, path, index, start, step) { 585 /// <param type="createjs.TweenTarget.NumberProperty" name="x"/> 586 /// <param type="createjs.TweenTarget.NumberProperty" name="y"/> 587 /// <param type="Array" elementType="number" name="path"/> 588 /// <param type="number" name="index"/> 589 /// <param type="number" name="start"/> 590 /// <param type="number" name="step"/> 591 /// <returns type="createjs.TweenTarget.GuideProperty"/> 592 return new createjs.TweenTarget.PathProperty( 593 x, y, path, index, start, step); 594 }; 595 596 /** @override */ 597 createjs.TweenTarget.PathProperty.prototype.setValue = 598 function(target, proxy, ratio, listener, position, targets) { 599 /// <param type="createjs.TweenTarget" name="target"/> 600 /// <param type="createjs.TweenTarget" name="proxy"/> 601 /// <param type="number" name="ratio"/> 602 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 603 /// <param type="number" name="position"/> 604 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 605 var t = this.start_ + ratio * this.step_; 606 var t_ = 1 - t; 607 var t0 = t_ * t_; 608 var t1 = 2 * t_ * t; 609 var t2 = t * t; 610 var x = t0 * this.x0_ + t1 * this.x1_ + t2 * this.x2_; 611 var y = t0 * this.y0_ + t1 * this.y1_ + t2 * this.y2_; 612 this.setX_.call(target, x); 613 this.setY_.call(target, y); 614 }; 615 616 /** 617 * A class that changes the angle of a createjs.TweenTarget object so it faces 618 * to the tangent of the specified quadratic-Bezier path. 619 * @param {createjs.TweenTarget.NumberProperty} rotation 620 * @param {Array.<number>} path 621 * @param {number} index 622 * @param {number} start 623 * @param {number} step 624 * @param {number} offset 625 * @param {number} delta 626 * @extends {createjs.TweenTarget.Property} 627 * @constructor 628 */ 629 createjs.TweenTarget.RotationProperty = 630 function(rotation, path, index, start, step, offset, delta) { 631 /** 632 * The function that changes a 'rotation' property. 633 * @const {function(number)} 634 * @private 635 */ 636 this.setter_ = rotation.setter_; 637 638 /** 639 * The x value of the first vector. 640 * @const {number} 641 * @private 642 */ 643 this.x0_ = path[index + 2] - path[index + 0]; 644 645 /** 646 * The y value of the first vector. 647 * @const {number} 648 * @private 649 */ 650 this.y0_ = path[index + 3] - path[index + 1]; 651 652 /** 653 * The x value or the second vector. 654 * @const {number} 655 * @private 656 */ 657 this.x1_ = path[index + 4] - path[index + 2]; 658 659 /** 660 * The y value of the second vector. 661 * @const {number} 662 * @private 663 */ 664 this.y1_ = path[index + 5] - path[index + 3]; 665 666 /** 667 * The start position in this path. 668 * @const {number} 669 * @private 670 */ 671 this.start_ = start; 672 673 /** 674 * The step length of this path. 675 * @const {number} 676 * @private 677 */ 678 this.step_ = step; 679 680 /** 681 * The angle offset to be added to calculated ones. 682 * @const {number} 683 * @private 684 */ 685 this.offset_ = rotation.end_ - offset; 686 687 /** 688 * The delta angle to be added to calculated ones. 689 * @const {number} 690 * @private 691 */ 692 this.delta_ = delta; 693 }; 694 createjs.inherits('TweenTarget.RotationProperty', 695 createjs.TweenTarget.RotationProperty, 696 createjs.TweenTarget.Property); 697 698 /** 699 * Creates a new createjs.TweenTarget.RotationProperty object. 700 * @param {createjs.TweenTarget.NumberProperty} rotation 701 * @param {Array.<number>} path 702 * @param {number} index 703 * @param {number} start 704 * @param {number} step 705 * @param {number} orientation 706 * @param {number} offset 707 * @return {createjs.TweenTarget.RotationProperty} 708 * @const 709 */ 710 createjs.TweenTarget.RotationProperty.get = 711 function(rotation, path, index, start, step, orientation, offset) { 712 /// <param type="createjs.TweenTarget.NumberProperty" name="rotation"/> 713 /// <param type="Array" elementType="number" name="path"/> 714 /// <param type="number" name="index"/> 715 /// <param type="number" name="start"/> 716 /// <param type="number" name="step"/> 717 /// <param type="number" name="orientation"/> 718 /// <param type="number" name="offset"/> 719 /// <returns type="createjs.TweenTarget.RotationProperty"/> 720 var delta = 0; 721 if (orientation != createjs.TweenTarget.Orientation.FIXED) { 722 var angle0 = createjs.atan2(path[index + 2] - path[index], 723 path[index + 3] - path[index + 1]); 724 var angle1 = createjs.atan2(path[index + 4] - path[index + 2], 725 path[index + 5] - path[index + 3]); 726 delta = angle1 - angle0; 727 if (orientation == createjs.TweenTarget.Orientation.COUNTERCLOCKWISE) { 728 if (delta > 0) { 729 delta -= 360; 730 } 731 } else if (orientation == createjs.TweenTarget.Orientation.CLOCKWISE) { 732 if (delta < 0) { 733 delta += 360; 734 } 735 } else { 736 if (delta > 180) { 737 delta -= 360; 738 } else if (delta < -180) { 739 delta += 360; 740 } 741 } 742 } 743 return new createjs.TweenTarget.RotationProperty( 744 rotation, path, index, start, step, offset, delta); 745 }; 746 747 /** 748 * Retrieves an angle offset. This method is used for creating a list of 749 * createjs.TweenTarget.RotationProperty objects from a path. 750 * @param {Array.<number>} path 751 * @param {number} index 752 * @return {number} 753 */ 754 createjs.TweenTarget.RotationProperty.getOffset = function(path, index) { 755 /// <param type="Array" elementType="number" name="path"/> 756 /// <param type="number" name="index"/> 757 /// <returns type="number"/> 758 return createjs.atan2(path[index + 3] - path[index + 1], 759 path[index + 2] - path[index]); 760 }; 761 762 /** @override */ 763 createjs.TweenTarget.RotationProperty.prototype.setValue = 764 function(target, proxy, ratio, listener, position, targets) { 765 /// <param type="createjs.TweenTarget" name="target"/> 766 /// <param type="createjs.TweenTarget" name="proxy"/> 767 /// <param type="number" name="ratio"/> 768 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 769 /// <param type="number" name="position"/> 770 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 771 var t = this.start_ + ratio * this.step_; 772 var t_ = 1 - t; 773 var x = t_ * this.x0_ + t * this.x1_; 774 var y = t_ * this.y0_ + t * this.y1_; 775 var rotation = createjs.atan2(y, x) + this.offset_ + this.delta_ * t; 776 this.setter_.call(target, rotation); 777 }; 778 779 /** 780 * A class that changes a boolean property of a createjs.TweenTarget object. 781 * @param {function(boolean)} setter 782 * @param {boolean} start 783 * @param {boolean} end 784 * @extends {createjs.TweenTarget.Property} 785 * @constructor 786 */ 787 createjs.TweenTarget.BooleanProperty = function(setter, start, end) { 788 createjs.TweenTarget.Property.call(this); 789 790 /** 791 * The function that changes this property. 792 * @const {function(boolean)} 793 * @private 794 */ 795 this.setter_ = setter; 796 797 /** 798 * The start value of this property. 799 * @const {boolean} 800 * @private 801 */ 802 this.start_ = start; 803 804 /** 805 * The end value of this property. 806 * @const {boolean} 807 * @private 808 */ 809 this.end_ = end; 810 }; 811 createjs.inherits('TweenTarget.BooleanProperty', 812 createjs.TweenTarget.BooleanProperty, 813 createjs.TweenTarget.Property); 814 815 /** 816 * Creates a new createjs.TweenTarget.BooleanProperty object. 817 * @param {function(boolean)} setter 818 * @param {boolean} start 819 * @return {createjs.TweenTarget.BooleanProperty} 820 * @const 821 */ 822 createjs.TweenTarget.BooleanProperty.get = function(setter, start) { 823 /// <param type="Function" name="setter"/> 824 /// <param type="boolean" name="start"/> 825 /// <returns type="createjs.TweenTarget.BooleanProperty"/> 826 return new createjs.TweenTarget.BooleanProperty(setter, start, start); 827 }; 828 829 /** 830 * Retrieves the interpolated value. 831 * @param {number} ratio 832 * @return {boolean} 833 * @protected 834 */ 835 createjs.TweenTarget.BooleanProperty.prototype.getBoolean = function(ratio) { 836 return (ratio == 1) ? this.end_ : this.start_; 837 }; 838 839 /** @override */ 840 createjs.TweenTarget.BooleanProperty.prototype.setValue = 841 function(target, proxy, ratio, listener, position, targets) { 842 /// <param type="createjs.TweenTarget" name="target"/> 843 /// <param type="createjs.TweenTarget" name="proxy"/> 844 /// <param type="number" name="ratio"/> 845 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 846 /// <param type="number" name="position"/> 847 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 848 this.setter_.call(target, this.getBoolean(ratio)); 849 }; 850 851 /** @override */ 852 createjs.TweenTarget.BooleanProperty.prototype.clone = 853 function(target, targets, opt_value) { 854 /// <param type="createjs.TweenTarget" name="target"/> 855 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 856 /// <param type="boolean" name="opt_value"/> 857 /// <returns type="createjs.TweenTarget.BooleanProperty"/> 858 if (opt_value == null) { 859 if (this.start_ == this.end_) { 860 return this; 861 } 862 opt_value = this.end_; 863 } 864 var end = createjs.getBoolean(opt_value); 865 return new createjs.TweenTarget.BooleanProperty(this.setter_, this.end_, end); 866 }; 867 868 /** 869 * A class that changes a string property of a createjs.TweenTarget object. 870 * @param {Function} setter 871 * @param {string} start 872 * @param {string} end 873 * @extends {createjs.TweenTarget.Property} 874 * @constructor 875 */ 876 createjs.TweenTarget.StringProperty = function(setter, start, end) { 877 createjs.TweenTarget.Property.call(this); 878 879 /** 880 * The function that changes this property. 881 * @const {Function} 882 * @private 883 */ 884 this.setter_ = setter; 885 886 /** 887 * The start value of this property. 888 * @const {string} 889 * @private 890 */ 891 this.start_ = start; 892 893 /** 894 * The end value of this property. 895 * @const {string} 896 * @private 897 */ 898 this.end_ = end; 899 }; 900 createjs.inherits('TweenTarget.StringProperty', 901 createjs.TweenTarget.StringProperty, 902 createjs.TweenTarget.Property); 903 904 /** 905 * Creates a new createjs.TweenTarget.StringProperty object. 906 * @param {Function} setter 907 * @param {string} start 908 * @return {createjs.TweenTarget.StringProperty} 909 * @const 910 */ 911 createjs.TweenTarget.StringProperty.get = function(setter, start) { 912 /// <param type="number" name="key"/> 913 /// <param type="Function" name="setter"/> 914 /// <param type="string" name="start"/> 915 /// <returns type="createjs.TweenTarget.StringProperty"/> 916 return new createjs.TweenTarget.StringProperty(setter, start, start); 917 }; 918 919 /** @override */ 920 createjs.TweenTarget.StringProperty.prototype.setValue = 921 function(target, proxy, ratio, listener, position, targets) { 922 /// <param type="createjs.TweenTarget" name="target"/> 923 /// <param type="createjs.TweenTarget" name="proxy"/> 924 /// <param type="number" name="ratio"/> 925 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 926 /// <param type="number" name="position"/> 927 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 928 this.setter_.call(target, (ratio == 1) ? this.end_ : this.start_, proxy); 929 }; 930 931 /** @override */ 932 createjs.TweenTarget.StringProperty.prototype.clone = 933 function(target, targets, opt_value) { 934 /// <param type="createjs.TweenTarget" name="target"/> 935 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 936 /// <param type="string" name="value"/> 937 /// <returns type="createjs.TweenTarget.StringProperty"/> 938 if (opt_value == null) { 939 if (this.start_ == this.end_) { 940 return this; 941 } 942 opt_value = this.end_; 943 } 944 var end = createjs.getString(opt_value); 945 return new createjs.TweenTarget.StringProperty(this.setter_, this.end_, end); 946 }; 947 948 /** 949 * A class that changes a loop property of a createjs.MovieClip object. 950 * @param {function(boolean)} setter 951 * @param {boolean} start 952 * @param {boolean} end 953 * @extends {createjs.TweenTarget.BooleanProperty} 954 * @constructor 955 */ 956 createjs.TweenTarget.LoopProperty = function(setter, start, end) { 957 createjs.TweenTarget.BooleanProperty.call(this, setter, start, end); 958 }; 959 createjs.inherits('TweenTarget.LoopProperty', 960 createjs.TweenTarget.LoopProperty, 961 createjs.TweenTarget.BooleanProperty); 962 963 /** 964 * Creates a new createjs.TweenTarget.LoopProperty object. 965 * @param {function(boolean)} setter 966 * @param {boolean} start 967 * @return {createjs.TweenTarget.LoopProperty} 968 * @const 969 */ 970 createjs.TweenTarget.LoopProperty.get = function(setter, start) { 971 /// <param type="Function" name="setter"/> 972 /// <param type="boolean" name="start"/> 973 /// <returns type="createjs.TweenTarget.LoopProperty"/> 974 return new createjs.TweenTarget.LoopProperty(setter, start, start); 975 }; 976 977 /** @override */ 978 createjs.TweenTarget.LoopProperty.prototype.setValue = 979 function(target, proxy, ratio, listener, position, targets) { 980 /// <param type="createjs.TweenTarget" name="target"/> 981 /// <param type="createjs.TweenTarget" name="proxy"/> 982 /// <param type="number" name="ratio"/> 983 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 984 /// <param type="number" name="position"/> 985 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 986 createjs.TweenTarget.LoopProperty.superClass_.setValue.call( 987 this, target, proxy, ratio, listener, position, targets); 988 listener.handleLoopChanged(this.getBoolean(ratio)); 989 }; 990 991 /** @override */ 992 createjs.TweenTarget.LoopProperty.prototype.clone = 993 function(target, targets, opt_value) { 994 /// <param type="createjs.TweenTarget" name="target"/> 995 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 996 /// <param type="boolean" name="opt_value"/> 997 /// <returns type="createjs.TweenTarget.LoopProperty"/> 998 if (opt_value == null) { 999 if (this.start_ == this.end_) { 1000 return this; 1001 } 1002 opt_value = this.end_; 1003 } 1004 var end = createjs.getBoolean(opt_value); 1005 return new createjs.TweenTarget.LoopProperty(this.setter_, this.end_, end); 1006 }; 1007 1008 /** 1009 * A class that changes the 'graphics' property of a createjs.TweenTarget 1010 * object. 1011 * @param {Function} setter 1012 * @param {createjs.Graphics} start 1013 * @param {createjs.Graphics} end 1014 * @extends {createjs.TweenTarget.Property} 1015 * @constructor 1016 */ 1017 createjs.TweenTarget.GraphicsProperty = function(setter, start, end) { 1018 createjs.TweenTarget.Property.call(this); 1019 1020 /** 1021 * The function that changes this property. 1022 * @const {Function} 1023 * @private 1024 */ 1025 this.setter_ = setter; 1026 1027 /** 1028 * The start value of this property. 1029 * @const {createjs.Graphics} 1030 * @private 1031 */ 1032 this.start_ = start; 1033 1034 /** 1035 * The end value of this property. 1036 * @const {createjs.Graphics} 1037 * @private 1038 */ 1039 this.end_ = end; 1040 }; 1041 createjs.inherits('TweenTarget.GraphicsProperty', 1042 createjs.TweenTarget.GraphicsProperty, 1043 createjs.TweenTarget.Property); 1044 1045 /** 1046 * Creates a new createjs.TweenTarget.GraphicsProperty object. 1047 * @param {Function} setter 1048 * @param {createjs.Graphics} start 1049 * @return {createjs.TweenTarget.GraphicsProperty} 1050 * @const 1051 */ 1052 createjs.TweenTarget.GraphicsProperty.get = function(setter, start) { 1053 /// <param type="Function" name="setter"/> 1054 /// <param type="createjs.Graphics" name="start"/> 1055 /// <returns type="createjs.TweenTarget.GraphicsProperty"/> 1056 return new createjs.TweenTarget.GraphicsProperty(setter, start, start); 1057 }; 1058 1059 /** @override */ 1060 createjs.TweenTarget.GraphicsProperty.prototype.setValue = 1061 function(target, proxy, ratio, listener, position, targets) { 1062 /// <param type="createjs.TweenTarget" name="target"/> 1063 /// <param type="createjs.TweenTarget" name="proxy"/> 1064 /// <param type="number" name="ratio"/> 1065 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 1066 /// <param type="number" name="position"/> 1067 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1068 this.setter_.call(target, (ratio == 1) ? this.end_ : this.start_); 1069 }; 1070 1071 /** @override */ 1072 createjs.TweenTarget.GraphicsProperty.prototype.clone = 1073 function(target, targets, opt_value) { 1074 /// <param type="createjs.TweenTarget" name="target"/> 1075 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1076 /// <param type="createjs.Graphics" name="opt_value"/> 1077 /// <returns type="createjs.TweenTarget.GraphicsProperty"/> 1078 if (arguments.length == 2) { 1079 if (this.start_ === this.end_) { 1080 return this; 1081 } 1082 opt_value = this.end_; 1083 } 1084 var end = /** @type {createjs.Graphics} */ (opt_value); 1085 if (target) { 1086 target.addGraphics(end); 1087 } 1088 return new createjs.TweenTarget.GraphicsProperty(this.setter_, this.end_, end); 1089 }; 1090 1091 /** 1092 * A class that changes a startPosition property of a createjs.MovieClip object. 1093 * @param {function(number)} setter 1094 * @param {number} start 1095 * @param {number} end 1096 * @extends {createjs.TweenTarget.NumberProperty} 1097 * @constructor 1098 */ 1099 createjs.TweenTarget.PositionProperty = function(setter, start, end) { 1100 createjs.TweenTarget.NumberProperty.call(this, setter, start, end); 1101 }; 1102 createjs.inherits('TweenTarget.PositionProperty', 1103 createjs.TweenTarget.PositionProperty, 1104 createjs.TweenTarget.NumberProperty); 1105 1106 /** 1107 * Creates a new createjs.TweenTarget.PositionProperty object. 1108 * @param {function(number)} setter 1109 * @param {number} start 1110 * @return {createjs.TweenTarget.PositionProperty} 1111 * @const 1112 */ 1113 createjs.TweenTarget.PositionProperty.get = function(setter, start) { 1114 /// <param type="Function" name="setter"/> 1115 /// <param type="number" name="start"/> 1116 /// <returns type="createjs.TweenTarget.PositionProperty"/> 1117 return new createjs.TweenTarget.PositionProperty(setter, start, start); 1118 }; 1119 1120 /** @override */ 1121 createjs.TweenTarget.PositionProperty.prototype.setValue = 1122 function(target, proxy, ratio, listener, position, targets) { 1123 /// <param type="createjs.TweenTarget" name="target"/> 1124 /// <param type="createjs.TweenTarget" name="proxy"/> 1125 /// <param type="number" name="ratio"/> 1126 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 1127 /// <param type="number" name="position"/> 1128 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1129 if (position >= 0) { 1130 this.setter_.call( 1131 target, this.start_ + (this.end_ - this.start_) * position); 1132 } 1133 }; 1134 1135 /** @override */ 1136 createjs.TweenTarget.PositionProperty.prototype.clone = 1137 function(target, targets, opt_value) { 1138 /// <param type="createjs.TweenTarget" name="target"/> 1139 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1140 /// <param type="number" name="opt_value"/> 1141 /// <returns type="createjs.TweenTarget.NumberProperty"/> 1142 if (opt_value == null) { 1143 if (this.start_ == this.end_) { 1144 return this; 1145 } 1146 opt_value = this.end_; 1147 } 1148 var end = createjs.getNumber(opt_value); 1149 return new createjs.TweenTarget.PositionProperty( 1150 this.setter_, this.end_, end); 1151 }; 1152 1153 /** 1154 * A class that changes a state property of a createjs.TweenTarget object. 1155 * @param {Array.<createjs.TweenTarget>} targets 1156 * @param {Array.<Array.<createjs.TweenTarget.ValueProperty>>} start 1157 * @param {Array.<Array.<createjs.TweenTarget.ValueProperty>>} end 1158 * @extends {createjs.TweenTarget.Property} 1159 * @constructor 1160 */ 1161 createjs.TweenTarget.StateProperty = function(targets, start, end) { 1162 createjs.TweenTarget.Property.call(this); 1163 1164 /** 1165 * The initial properties of the targets. 1166 * @const {Array.<Array.<createjs.TweenTarget.ValueProperty>>} 1167 * @private 1168 */ 1169 this.start_ = start; 1170 1171 /** 1172 * The final properties of the targets. 1173 * @const {Array.<Array.<createjs.TweenTarget.ValueProperty>>} 1174 * @private 1175 */ 1176 this.end_ = end; 1177 }; 1178 createjs.inherits('TweenTarget.StateProperty', 1179 createjs.TweenTarget.StateProperty, 1180 createjs.TweenTarget.Property); 1181 1182 /** 1183 * Creates a new createjs.TweenTarget.StateProperty object. 1184 * @param {Array.<createjs.TweenTarget>} targets 1185 * @return {createjs.TweenTarget.StateProperty} 1186 * @const 1187 */ 1188 createjs.TweenTarget.StateProperty.get = function(targets) { 1189 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1190 /// <returns type="createjs.TweenTarget.StateProperty"/> 1191 var start = []; 1192 for (var i = 0; i < targets.length; ++i) { 1193 start.push(createjs.TweenTarget.ValueProperty.get({ '_off': true })); 1194 } 1195 return new createjs.TweenTarget.StateProperty(targets, start, start); 1196 }; 1197 1198 /** @override */ 1199 createjs.TweenTarget.StateProperty.prototype.setValue = 1200 function(target, proxy, ratio, listener, position, targets) { 1201 /// <param type="createjs.TweenTarget" name="target"/> 1202 /// <param type="createjs.TweenTarget" name="proxy"/> 1203 /// <param type="number" name="ratio"/> 1204 /// <param type="createjs.TweenTarget.Property.Listener" name="listener"/> 1205 /// <param type="number" name="position"/> 1206 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1207 var properties = ratio == 1 ? this.end_ : this.start_; 1208 for (var i = 0; i < targets.length; ++i) { 1209 var values = properties[i]; 1210 for (var j = 0; j < values.length; ++j) { 1211 values[j].setValue(targets[i]); 1212 } 1213 } 1214 }; 1215 1216 /** @override */ 1217 createjs.TweenTarget.StateProperty.prototype.clone = 1218 function(target, targets, opt_value) { 1219 /// <param type="createjs.TweenTarget" name="target"/> 1220 /// <param type="Array" elementType="createjs.TweenTarget" name="targets"/> 1221 /// <param name="opt_value"/> 1222 /// <returns type="createjs.TweenTarget.StateProperty"/> 1223 if (opt_value == null) { 1224 // Just create another property with the last state of this property when 1225 // this property is cloned without any arguments, i.e. when the wait() 1226 // method is called for a state tween. 1227 return new createjs.TweenTarget.StateProperty( 1228 targets, this.end_, this.end_); 1229 } 1230 // Normalize this state tween. This code fills implicit parameters to the 1231 // existing steps so each step represents the states of all targets added 1232 // or removed by this tween. For example, consider the code snippet listed 1233 // below. 1234 // var shape1 = new createjs.Shape(); 1235 // var shape2 = new createjs.Shape(); 1236 // ... 1237 // createjs.Tween.get({}). 1238 // to({ state: [{ t: shape1 }]}).to({ state: [{ t: shape2 }]}); 1239 // To fill implicit parameters to this tween, it becomes the state tween 1240 // listed below. 1241 // createjs.Tween.get({}). 1242 // to({ state: [{ t: shape1, p: { _off: false }}, 1243 // { t: shape2, p: { _off: true }}]}). 1244 // to({ state: [{ t: shape1, p: { _off: true }}, 1245 // { t: shape2, p: { _off: false }}]}) 1246 // It is easy to seek normalized tweens and this code converts state tweens 1247 // to normalized ones. 1248 var end = /** @type {Array.<Object>} */ (createjs.getArray(opt_value)); 1249 var properties = []; 1250 for (var i = 0; i < targets.length; ++i) { 1251 var off = true; 1252 var property = {}; 1253 for (var j = 0; j < end.length; ++j) { 1254 var state = end[j]; 1255 if (targets[i] === state['t']) { 1256 if (state['p']) { 1257 property = state['p']; 1258 } 1259 off = false; 1260 break; 1261 } 1262 } 1263 property['_off'] = off; 1264 properties.push(createjs.TweenTarget.ValueProperty.get(property)); 1265 } 1266 return new createjs.TweenTarget.StateProperty( 1267 targets, this.end_, properties); 1268 }; 1269 1270 /** 1271 * Adds setters used for creating createjs.TweenTarget.Property objects that 1272 * changes the specified properties. 1273 * @param {Object.<string,Function>} setters 1274 * @const 1275 */ 1276 createjs.TweenTarget.Property.addSetters = function(setters) { 1277 for (var key in setters) { 1278 createjs.TweenTarget.Property.setters_[key] = 1279 new createjs.TweenTarget.Setter(setters[key]); 1280 } 1281 }; 1282 1283 /** 1284 * Adds setters used for creating createjs.TweenTarget.Property objects that 1285 * changes the specified properties. 1286 * @return {Object.<string,createjs.TweenTarget.Setter>} 1287 * @const 1288 */ 1289 createjs.TweenTarget.Property.getSetters = function() { 1290 /// <return type="Object" elementType="createjs.TweenTarget.Setter"/> 1291 return createjs.TweenTarget.Property.setters_; 1292 }; 1293 1294 /** 1295 * Creates a createjs.TweenTarget.Property object. 1296 * @param {createjs.TweenTarget.Setter} setter 1297 * @return {createjs.TweenTarget.Property} 1298 * @const 1299 */ 1300 createjs.TweenTarget.Property.get = function(setter) { 1301 /// <param type="createjs.TweenTarget.Setter" name="setter"/> 1302 /// <return type="createjs.TweenTarget.Property"/> 1303 if (setter.type_ == createjs.TweenTarget.Setter.NUMBER_) { 1304 return createjs.TweenTarget.NumberProperty.get( 1305 /** @type {function(number)} */ (setter.fn_), 1306 setter.number_); 1307 } else if (setter.type_ == createjs.TweenTarget.Setter.BOOLEAN_) { 1308 return createjs.TweenTarget.BooleanProperty.get( 1309 /** @type {function(boolean)} */ (setter.fn_), 1310 setter.bool_); 1311 } else if (setter.type_ == createjs.TweenTarget.Setter.STRING_) { 1312 return createjs.TweenTarget.StringProperty.get(setter.fn_, setter.text_); 1313 } else if (setter.type_ == createjs.TweenTarget.Setter.LOOP_) { 1314 return createjs.TweenTarget.LoopProperty.get( 1315 /** @type {function(boolean)} */ (setter.fn_), 1316 setter.bool_); 1317 } else if (setter.type_ == createjs.TweenTarget.Setter.POSITION_) { 1318 return createjs.TweenTarget.PositionProperty.get( 1319 /** @type {function(number)} */ (setter.fn_), 1320 setter.number_); 1321 } else if (setter.type_ == createjs.TweenTarget.Setter.GRAPHICS_) { 1322 return createjs.TweenTarget.GraphicsProperty.get( 1323 setter.fn_, setter.graphics_); 1324 } else { 1325 return null; 1326 } 1327 }; 1328 1329 /** 1330 * Registers a tween. 1331 * @param {createjs.TweenObject} tween 1332 */ 1333 createjs.TweenTarget.prototype.registerTween = function(tween) {}; 1334 1335 /** 1336 * Unregisters a tween. 1337 * @param {createjs.TweenObject} tween 1338 */ 1339 createjs.TweenTarget.prototype.unregisterTween = function(tween) {}; 1340 1341 /** 1342 * Removes all tween registered to this target. 1343 */ 1344 createjs.TweenTarget.prototype.resetTweens = function() {}; 1345 1346 /** 1347 * Starts playing the tweens attached to this target. 1348 * @param {number} time 1349 */ 1350 createjs.TweenTarget.prototype.playTweens = function(time) {}; 1351 1352 /** 1353 * Stops playing the tweens attached to this target. 1354 * @param {number} time 1355 */ 1356 createjs.TweenTarget.prototype.stopTweens = function(time) {}; 1357 1358 /** 1359 * Updates the tweens attached to this target. 1360 * @param {number} time 1361 */ 1362 createjs.TweenTarget.prototype.updateTweens = function(time) {}; 1363 1364 /** 1365 * Returns whether this target has tweens. 1366 * @return {boolean} 1367 */ 1368 createjs.TweenTarget.prototype.hasTweens = function() {}; 1369 1370 /** 1371 * Sets the position of all tweens attached to this target. 1372 * @param {number} position 1373 */ 1374 createjs.TweenTarget.prototype.setTweenPosition = function(position) {}; 1375 1376 /** 1377 * Sets the properties of all tweens attached to this target. 1378 * @param {boolean} loop 1379 * @param {number} position 1380 * @param {boolean} single 1381 */ 1382 createjs.TweenTarget.prototype.setTweenProperties = 1383 function(loop, position, single) {}; 1384 1385 /** 1386 * Returns whether this target is detached by a tween. 1387 * @return {boolean} 1388 */ 1389 createjs.TweenTarget.prototype.getOff = function() {}; 1390 1391 /** 1392 * Attaches this target to an object tree or detaches it. 1393 * @param {boolean} off 1394 */ 1395 createjs.TweenTarget.prototype.setOff = function(off) {}; 1396 1397 /** 1398 * Returns the play mode of this target. 1399 * @return {number} 1400 */ 1401 createjs.TweenTarget.prototype.getPlayMode = function() {}; 1402 1403 /** 1404 * Sets the play mode of this target. 1405 * @param {number} mode 1406 */ 1407 createjs.TweenTarget.prototype.setPlayMode = function(mode) {}; 1408 1409 /** 1410 * Retrieves setters for the createjs.Tween object to change properties of a 1411 * createjs.TweenTarget object. 1412 * @return {Object.<string,createjs.TweenTarget.Setter>} 1413 */ 1414 createjs.TweenTarget.prototype.getSetters = function() {}; 1415 1416 /** 1417 * Synchronizes the specified target with this target. 1418 * @param {createjs.TweenTarget} target 1419 * @param {boolean} synchronize 1420 */ 1421 createjs.TweenTarget.prototype.synchronize = function(target, synchronize) {}; 1422 1423 /** 1424 * Synchronizes the specified target with this target. 1425 * @param {createjs.Graphics} graphics 1426 */ 1427 createjs.TweenTarget.prototype.addGraphics = function(graphics) {}; 1428