Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Jul 1st, 2012  |  syntax: None  |  size: 4.73 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ActionScript - Mouse Control Logic Problem
  2. package
  3. {
  4. import flash.display.Sprite;
  5. import flash.display.Shape;
  6. import flash.events.MouseEvent;
  7.  
  8. //Class
  9. public class RectsTest extends Sprite
  10.     {
  11.     //Variables
  12.     private var redRect:Shape;
  13.     private var blueRect:Shape;
  14.  
  15.     private var mouseDownOrigin:Number;
  16.     private var redRectOrigin:Number;
  17.     private var blueRectOrigin:Number;
  18.     private var averageX:Number;
  19.  
  20.     //Constructor
  21.     public function RectsTest()
  22.         {
  23.         init();
  24.         }
  25.  
  26.     //Initialize
  27.     private function init():void
  28.         {
  29.         redRect = createRect(0xFF0000, -200, 200, 100);
  30.         redRect.x = 200;
  31.         redRect.y = 200;
  32.  
  33.         blueRect = createRect(0x0000FF, 0, 200, 100);
  34.         blueRect.x = stage.stageWidth - 200;
  35.         blueRect.y = 300;
  36.  
  37.         addChild(redRect);
  38.         addChild(blueRect);
  39.  
  40.         stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownEventHandler);
  41.         }
  42.  
  43.     //Create Rect
  44.     private function createRect(color:Number, x:Number, width:Number, height:Number):Shape
  45.         {
  46.         var result:Shape = new Shape();
  47.         result.graphics.beginFill(color);
  48.         result.graphics.drawRect(x, 0, width, height);
  49.         result.graphics.endFill();
  50.  
  51.         return result;
  52.         }
  53.  
  54.     //Mouse Down Event Handler
  55.     private function mouseDownEventHandler(evt:MouseEvent):void
  56.         {
  57.         mouseDownOrigin = evt.stageX;
  58.         redRectOrigin = redRect.x;
  59.         blueRectOrigin = blueRect.x;
  60.  
  61.         averageX = (redRect.x + blueRect.x) / 2;
  62.  
  63.         stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
  64.         stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
  65.         }
  66.  
  67.     //Mouse Move Event Handler
  68.     private function mouseMoveEventHandler(evt:MouseEvent):void
  69.         {
  70.         if  (evt.stageX < averageX)
  71.             redRect.x = redRectOrigin + evt.stageX - mouseDownOrigin;
  72.  
  73.         if  (evt.stageX > averageX)
  74.             blueRect.x = blueRectOrigin + evt.stageX - mouseDownOrigin;
  75.  
  76.         averageX = (redRect.x + blueRect.x) / 2;
  77.         }
  78.  
  79.     //Mouse Up Event Handler
  80.     private function mouseUpEventHandler(evt:MouseEvent):void
  81.         {
  82.         stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
  83.         stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
  84.         }
  85.     }
  86. }
  87.        
  88. package
  89. {
  90. import flash.display.Sprite;
  91. import flash.display.Shape;
  92. import flash.events.MouseEvent;
  93.  
  94. //Class
  95. public class RectsTest extends Sprite
  96.     {
  97.     //Variables
  98.     private var redRect:Shape;
  99.     private var blueRect:Shape;
  100.  
  101.     private var mouseDownOrigin:Number;
  102.     private var redRectOrigin:Number;
  103.     private var blueRectOrigin:Number;
  104.     private var averageX:Number;
  105.  
  106.     //Constructor
  107.     public function RectsTest()
  108.         {
  109.         init();
  110.         }
  111.  
  112.     //Initialize
  113.     private function init():void
  114.         {
  115.         redRect = createRect(0xFF0000, -200, 200, 100);
  116.         redRect.x = 200;
  117.         redRect.y = 200;
  118.  
  119.         blueRect = createRect(0x0000FF, 0, 200, 100);
  120.         blueRect.x = stage.stageWidth - 200;
  121.         blueRect.y = 300;
  122.  
  123.         addChild(redRect);
  124.         addChild(blueRect);
  125.  
  126.         stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownEventHandler);
  127.         }
  128.  
  129.     //Create Rect
  130.     private function createRect(color:Number, x:Number, width:Number, height:Number):Shape
  131.         {
  132.         var result:Shape = new Shape();
  133.         result.graphics.beginFill(color);
  134.         result.graphics.drawRect(x, 0, width, height);
  135.         result.graphics.endFill();
  136.  
  137.         return result;
  138.         }
  139.  
  140.     //Mouse Down Event Handler
  141.     private function mouseDownEventHandler(evt:MouseEvent):void
  142.         {
  143.         mouseDownOrigin = evt.stageX;
  144.         redRectOrigin = redRect.x;
  145.         blueRectOrigin = blueRect.x;
  146.  
  147.         averageX = (redRect.x + blueRect.x) / 2;
  148.  
  149.         stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
  150.         stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
  151.         }
  152.  
  153.     //Mouse Move Event Handler
  154.     private function mouseMoveEventHandler(evt:MouseEvent):void
  155.         {
  156.         if  (evt.stageX < averageX) {
  157.             redRect.x = redRectOrigin + evt.stageX - mouseDownOrigin;
  158.             redRectOrigin = redRect.x;
  159.         }
  160.  
  161.  
  162.         if  (evt.stageX > averageX) {
  163.             blueRect.x = blueRectOrigin + evt.stageX - mouseDownOrigin;
  164.             blueRectOrigin = blueRect.x;
  165.         }
  166.  
  167.         mouseDownOrigin = evt.stageX;
  168.         averageX = (redRect.x + blueRect.x) / 2;
  169.         }
  170.  
  171.     //Mouse Up Event Handler
  172.     private function mouseUpEventHandler(evt:MouseEvent):void
  173.         {
  174.         stage.removeEventListener(MouseEvent.MOUSE_UP, mouseUpEventHandler);
  175.         stage.removeEventListener(MouseEvent.MOUSE_MOVE, mouseMoveEventHandler);
  176.         }
  177.     }
  178. }