Repository: flex-asjs
Updated Branches:
  refs/heads/refactor-sprite 720881257 -> 726775219


Listen to strand events instead of model events and avoid initialization order 
problems.


Project: http://git-wip-us.apache.org/repos/asf/flex-asjs/repo
Commit: http://git-wip-us.apache.org/repos/asf/flex-asjs/commit/970f3e3a
Tree: http://git-wip-us.apache.org/repos/asf/flex-asjs/tree/970f3e3a
Diff: http://git-wip-us.apache.org/repos/asf/flex-asjs/diff/970f3e3a

Branch: refs/heads/refactor-sprite
Commit: 970f3e3af89fbbbc16972e73e22c80f7b58f4d6e
Parents: fa40021
Author: yishayw <yishayj...@hotmail.com>
Authored: Thu Jul 28 15:49:22 2016 +0300
Committer: yishayw <yishayj...@hotmail.com>
Committed: Thu Jul 28 15:49:22 2016 +0300

----------------------------------------------------------------------
 .../flex/org/apache/flex/core/ITransformHost.as |  3 ++-
 .../flex/org/apache/flex/core/TransformModel.as | 25 +++++++++++++++--
 .../flex/org/apache/flex/svg/TransformBead.as   | 28 ++++++++------------
 3 files changed, 36 insertions(+), 20 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/970f3e3a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformHost.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformHost.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformHost.as
index 3553cc3..84192b1 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformHost.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/ITransformHost.as
@@ -18,6 +18,7 @@
 
////////////////////////////////////////////////////////////////////////////////
 package org.apache.flex.core
 {
+       import org.apache.flex.events.IEventDispatcher;
        
        
 
@@ -30,7 +31,7 @@ package org.apache.flex.core
         *  @playerversion AIR 2.6
         *  @productversion FlexJS 0.0
         */
-       public interface ITransformHost extends IStrand
+       public interface ITransformHost extends IStrand, IEventDispatcher
        {
                /**
                 *  Each ITransformHost has an element that is actually added to

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/970f3e3a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
index 6f0df64..ca5ce11 100644
--- 
a/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
+++ 
b/frameworks/projects/Core/src/main/flex/org/apache/flex/core/TransformModel.as
@@ -6,7 +6,11 @@ package org.apache.flex.core
        
        public class TransformModel extends EventDispatcher implements 
ITransformModel
        {
+               
+               public static const CHANGE:String = "transferModelChange";
+               
                private var _matrix:Matrix;
+               private var _strand:IStrand;
                
                public function TransformModel()
                {
@@ -17,13 +21,30 @@ package org.apache.flex.core
                        return _matrix;
                }
 
+               private function dispatchModelChangeEvent():void
+               {
+                       host.dispatchEvent(new Event(CHANGE));
+               }
+               
+               private function get host():ITransformHost
+               {
+                       return _strand as ITransformHost;
+               }
+               
                public function set matrix(value:Matrix):void
                {
                        _matrix = value;
-                       dispatchEvent(new Event(Event.CHANGE));
+                       if (_strand)
+                       {
+                               dispatchModelChangeEvent();
+                       }
                }
                
-               public function set strand(value:IStrand):void {}
+               public function set strand(value:IStrand):void 
+               {
+                       _strand = value;
+                       dispatchModelChangeEvent();
+               }
 
        }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/flex-asjs/blob/970f3e3a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
----------------------------------------------------------------------
diff --git 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
index e852db5..5585b8a 100644
--- 
a/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
+++ 
b/frameworks/projects/Graphics/src/main/flex/org/apache/flex/svg/TransformBead.as
@@ -1,22 +1,21 @@
 package org.apache.flex.svg
 {
+       import org.apache.flex.core.IBeadTransform;
        import org.apache.flex.core.IStrand;
+       import org.apache.flex.core.ITransformHost;
        import org.apache.flex.core.ITransformModel;
+       import org.apache.flex.core.TransformModel;
        import org.apache.flex.events.Event;
        import org.apache.flex.geom.Matrix;
-       import org.apache.flex.core.IBeadTransform;
-       import org.apache.flex.core.ITransformHost;
 
        COMPILE::SWF {
                import flash.display.Sprite;
                import flash.geom.Matrix;
        }
        
-       
        public class TransformBead implements IBeadTransform
        {
                private var _strand:IStrand;
-               private var transformModel:ITransformModel;
                
                public function TransformBead()
                {
@@ -32,25 +31,20 @@ package org.apache.flex.svg
                 */             
                public function set strand(value:IStrand):void
                {
-                       if (!(value is GraphicContainer))
-                       {
-                               throw new Error("This bead only works with svg 
GraphicContainers");
-                               return;
-                       }
                        _strand = value;
-                       transformModel = value.getBeadByType(ITransformModel) 
as ITransformModel;
-                       if (!transformModel)
-                       {
-                               throw new Error("An ITransformModel needs to be 
defined.");
-                               return;
-                       }
-                       transformModel.addEventListener(Event.CHANGE, 
changeHandler);
-                       if (transformModel.matrix)
+                       host.addEventListener(TransformModel.CHANGE, 
changeHandler);
+                       var model:ITransformModel = transformModel;
+                       if (model && model.matrix)
                        {
                                transform();
                        }
                }
                
+               public function get transformModel():ITransformModel
+               {
+                       return host.getBeadByType(ITransformModel) as 
ITransformModel;
+               }
+                               
                COMPILE::SWF
                public function transform():void
                {

Reply via email to