/src/nid/xfl/dom/DOMFrame.as

http://github.com/nidin/as3-XFL-compiler · ActionScript · 144 lines · 112 code · 17 blank · 15 comment · 29 complexity · bdb25fbbdda2663d05bc69609b19ddbf MD5 · raw file

  1. package nid.xfl.dom
  2. {
  3. import flash.geom.*;
  4. import nid.utils.*;
  5. import nid.xfl.data.display.*;
  6. import nid.xfl.data.script.*;
  7. import nid.xfl.dom.elements.*;
  8. import nid.xfl.interfaces.*;
  9. import nid.xfl.motion.*;
  10. import nid.xfl.XFLDocument;
  11. /**
  12. * ...
  13. * @author Nidin Vinayak
  14. */
  15. public class DOMFrame
  16. {
  17. /**
  18. * XFL Reference
  19. */
  20. public var doc:DOMDocument;
  21. /**
  22. *
  23. */
  24. public var type:int;
  25. public var motionObjectXML:MotionObjectXML;
  26. public var morphShape:MorphShape;
  27. public var index:int;
  28. public var duration:int=0;
  29. public var tweenType:String;
  30. public var keyMode:int;
  31. public var elements:Vector.<IElement>;
  32. public var isEmptyFrame:Boolean;
  33. public var motionTweenRotate:String;
  34. public var motionTweenScale:Boolean;
  35. public var motionTweenSnap:Boolean;
  36. public var motionTweenOrientToPath:Boolean;
  37. public var motionTweenSync:Boolean;
  38. public var hasCustomEase:Boolean;
  39. public var acceleration:Number;
  40. public var isMotionObject:Boolean;
  41. public var visibleAnimationKeyframes:int;
  42. public var tweenMatrix:Matrix;
  43. public var color:Color;
  44. public var tweens:Tweens;
  45. public var actionscript:Actionscript;
  46. /**
  47. * Access to the transformation properties if the frame is Tween type
  48. */
  49. public function get transformationPoint():Point { return DOMSymbolInstance(elements[0]).transformationPoint; }
  50. public function get centerPoint3DX():Number { return DOMSymbolInstance(elements[0]).centerPoint3DX; }
  51. public function get centerPoint3DY():Number { return DOMSymbolInstance(elements[0]).centerPoint3DY; }
  52. public function get centerPoint3DZ():Number { return DOMSymbolInstance(elements[0]).centerPoint3DZ; }
  53. public function get filter():Vector.<IXFilter> { return DOMSymbolInstance(elements[0])._filters; }
  54. public function DOMFrame(data:XML = null, refdoc:DOMDocument = null)
  55. {
  56. doc = refdoc;
  57. if (data != null)
  58. {
  59. parse(data);
  60. }
  61. }
  62. public function parse(data:XML):void
  63. {
  64. index = int(data.@index);
  65. duration = int(data.@duration);
  66. keyMode = int(data.@keyMode);
  67. tweenType = String(data.@tweenType);
  68. acceleration = Number(data.@acceleration);
  69. motionTweenOrientToPath = Boolean2.toBoolean(data.@motionTweenOrientToPath);
  70. motionTweenSync = Boolean2.toBoolean(data.@motionTweenSync);
  71. motionTweenSnap = Boolean2.toBoolean(data.@motionTweenSnap);
  72. hasCustomEase = Boolean2.toBoolean(data.@hasCustomEase);
  73. if (tweenType == TweenTypes.SHAPE)
  74. {
  75. morphShape = new MorphShape(data.MorphShape);
  76. }
  77. else if (tweenType == TweenTypes.MOTION_OBJECT)
  78. {
  79. motionObjectXML = new MotionObjectXML(data.motionObjectXML);
  80. }
  81. tweens = new Tweens(data.tweens);
  82. elements = null;
  83. elements = new Vector.<IElement>();
  84. if (data.Actionscript.toXMLString() != "")
  85. {
  86. doc.DoABC = true;
  87. actionscript = new Actionscript(data.Actionscript);
  88. //trace('frame:' + (index + 1) , actionscript);
  89. }
  90. //trace('element length:'+data.elements.*.length());
  91. isEmptyFrame = String(data.elements) == ""?true:false;
  92. if (!isEmptyFrame)
  93. {
  94. for (var i:int = 0; i < data.elements.*.length(); i++)
  95. {
  96. if (data.elements.*[i].toXMLString().indexOf("DOMStaticText") != -1)
  97. {
  98. elements.push(new DOMStaticText(data.elements.*[i]));
  99. }
  100. else if (data.elements.*[i].toXMLString().indexOf("DOMDynamicText") != -1)
  101. {
  102. elements.push(new DOMDynamicText(data.elements.*[i]));
  103. }
  104. else if (data.elements.*[i].toXMLString().indexOf("DOMInputText") != -1)
  105. {
  106. elements.push(new DOMInputText(data.elements.*[i]));
  107. }
  108. else if (data.elements.*[i].toXMLString().indexOf("DOMShape") != -1)
  109. {
  110. elements.push(new DOMShape(data.elements.*[i], doc));
  111. }
  112. else if (data.elements.*[i].toXMLString().indexOf("DOMSymbolInstance") != -1)
  113. {
  114. var domSymbol:DOMSymbolInstance = new DOMSymbolInstance(data.elements.*[i], doc);
  115. elements.push(domSymbol);
  116. tweenMatrix = domSymbol.matrix;
  117. color = domSymbol.color;
  118. }
  119. else if (data.elements.*[i].toXMLString().indexOf("DOMBitmapInstance") != -1)
  120. {
  121. elements.push(new DOMBitmapInstance(data.elements.*[i], doc));
  122. }
  123. }
  124. }
  125. }
  126. }
  127. }