15
15
import flash.events.EventDispatcher ;
16
16
import flash.geom.ColorTransform ;
17
17
import flash.geom.Matrix ;
18
- import flash.geom.Point ;
19
18
20
19
use namespace dragonBones_internal;
21
20
59
58
*
60
59
* private function updateAnimation(e:Event):void
61
60
* {
62
- * armature.advanceTime(stage.frameRate / 1000 );
61
+ * armature.advanceTime(1 / stage.frameRate );
63
62
* }
64
63
* }
65
64
* }
69
68
*/
70
69
public class Bone extends EventDispatcher
71
70
{
72
- private static var _helpPoint : Point = new Point ();
73
71
/**
74
72
* The name of this Bone instance's Armature instance.
75
73
*/
192
190
{
193
191
return _displayBridge . display ;
194
192
}
195
- /**
196
- * @private
197
- */
198
193
public function set display (value :Object ):void
199
194
{
200
195
if (_displayBridge . display == value )
209
204
_displayBridge . display = value ;
210
205
}
211
206
207
+
208
+ /**
209
+ * The DisplayObject list belonging to this Bone instance.
210
+ */
211
+ public function get displayList ():Array
212
+ {
213
+ return _displayList ;
214
+ }
215
+
212
216
/** @private */
213
217
dragonBones_internal function changeDisplay (displayIndex :int ):void
214
218
{
219
+ var childArmature: Armature = this . childArmature;
215
220
if (displayIndex < 0 )
216
221
{
217
222
if (_isOnStage )
218
223
{
219
224
_isOnStage = false ;
220
225
//removeFromStage
221
226
_displayBridge . removeDisplay();
227
+
228
+ if (childArmature)
229
+ {
230
+ childArmature. animation. stop ();
231
+ childArmature. animation. clearMovement();
232
+ }
222
233
}
223
234
}
224
235
else
245
256
//change
246
257
display = _displayList [ _displayIndex ];
247
258
}
259
+
260
+ if (childArmature)
261
+ {
262
+ childArmature. animation. play ();
263
+ }
248
264
}
249
265
}
250
266
368
384
/** @private */
369
385
dragonBones_internal function update ():void
370
386
{
387
+ //transform
388
+ if (_parent )
389
+ {
390
+ var x : Number = origin . x + node. x + _tweenNode . x ;
391
+ var y : Number = origin . y + node. y + _tweenNode . y ;
392
+ var parentMatrix: Matrix = _parent . _globalTransformMatrix ;
393
+ _globalTransformMatrix . tx = global . x = parentMatrix. a * x + parentMatrix. c * y + parentMatrix. tx ;
394
+ _globalTransformMatrix . ty = global . y = parentMatrix. d * y + parentMatrix. b * x + parentMatrix. ty ;
395
+ global . skewX = _parent . global . skewX + origin . skewX + node. skewX + _tweenNode . skewX ;
396
+ global . skewY = _parent . global . skewY + origin . skewY + node. skewY + _tweenNode . skewY ;
397
+ }
398
+ else
399
+ {
400
+ _globalTransformMatrix . tx = global . x = origin . x + node. x + _tweenNode . x ;
401
+ _globalTransformMatrix . ty = global . y = origin . y + node. y + _tweenNode . y ;
402
+ global . skewX = origin . skewX + node. skewX + _tweenNode . skewX ;
403
+ global . skewY = origin . skewY + node. skewY + _tweenNode . skewY ;
404
+ }
405
+
371
406
//update global
372
- global . x = origin . x + node. x + _tweenNode . x ;
373
- global . y = origin . y + node. y + _tweenNode . y ;
374
- global . skewX = origin . skewX + node. skewX + _tweenNode . skewX ;
375
- global . skewY = origin . skewY + node. skewY + _tweenNode . skewY ;
376
407
global . scaleX = origin . scaleX + node. scaleX + _tweenNode . scaleX ;
377
408
global . scaleY = origin . scaleY + node. scaleY + _tweenNode . scaleY ;
378
409
global . pivotX = origin . pivotX + node. pivotX + _tweenNode . pivotX;
379
410
global . pivotY = origin . pivotY + node. pivotY + _tweenNode . pivotY;
380
411
global . z = origin . z + node. z + _tweenNode . z ;
381
- //transform
382
- if (_parent )
383
- {
384
- _helpPoint . x = global . x ;
385
- _helpPoint . y = global . y ;
386
- _helpPoint = _parent . _globalTransformMatrix . transformPoint (_helpPoint );
387
- global . x = _helpPoint . x
388
- global . y = _helpPoint . y ;
389
- global . skewX += _parent . global . skewX ;
390
- global . skewY += _parent . global . skewY ;
391
- }
392
412
393
413
//Note: this formula of transform is defined by Flash pro
394
414
_globalTransformMatrix . a = global . scaleX * Math . cos (global . skewY );
395
415
_globalTransformMatrix . b = global . scaleX * Math . sin (global . skewY );
396
416
_globalTransformMatrix . c = - global . scaleY * Math . sin (global . skewX );
397
417
_globalTransformMatrix . d = global . scaleY * Math . cos (global . skewX );
398
- _globalTransformMatrix . tx = global . x ;
399
- _globalTransformMatrix . ty = global . y ;
400
418
401
419
//update children
402
420
if (_children . length > 0 )
403
421
{
404
- for each (var child : Bone in _children )
422
+ var i: int = _children . length ;
423
+ while (i -- )
405
424
{
406
- child . update ();
425
+ _children [ i ] . update ();
407
426
}
408
427
}
409
428
455
474
}
456
475
}
457
476
}
458
- }
477
+ }
0 commit comments