2012-03-27 20 views

Antwort

2

Sie können eine einfache Maske verwenden, um dies zu erreichen, . Hier ist ein funktionierendes Beispiel (mit linker Maustaste, obwohl ich glaube nicht, richtige für diesen geeignet wäre.):

SWF result

package examples 
{ 
    import flash.display.Sprite; 
    import flash.display.Stage; 
    import flash.events.MouseEvent; 
    import flash.ui.Mouse; 

    public class MaskTest extends Example 
    { 
     private var _toBeErased:Sprite; 
     private var _discoverable:Sprite; 
     private var _holesContainer:Sprite; 

     private var _mouseIsPressed:Boolean = false; 

     public function MaskTest() 
     { 

     } 

     // Call this method once this Class instance has been added to stage 
     public function init():void 
     { 
      // Create sprites   
      _toBeErased = new Sprite();  
      addChild(_toBeErased); 

      _discoverable = new Sprite(); 
      addChild(_discoverable); 

      _holesContainer = new Sprite(); 
      addChild(_holesContainer); 

      // Draw sprites   
      _toBeErased.graphics.beginFill(0xFFFF00); 
      _toBeErased.graphics.drawRect(0, 0, 900, 600); 
      _toBeErased.graphics.endFill(); 

      _discoverable.graphics.beginFill(0xFFAAAA); 
      _discoverable.graphics.drawRect(0, 0, 900, 600); 
      _discoverable.graphics.endFill(); 

      // Set mask 
      _discoverable.mask = _holesContainer; 

      // Add mouse listeners 
      stage.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); 
      stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDown); 
      stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUp); 
     } 

     // Mouse listeners callbacks... 
     private function onMouseDown(e:MouseEvent):void{ 
      _mouseIsPressed = true; 
     } 

     private function onMouseUp(e:MouseEvent):void{ 
      _mouseIsPressed = false; 
     } 

     private function onMouseMove(e:MouseEvent):void 
     { 
      if(!_mouseIsPressed) 
       return; 

      // Get a random size for circle 
      var radius:Number = 5 + (Math.random()*10-5); 

      // Create new circle and paint it 
      var circle:Sprite = new Sprite(); 
      circle.graphics.beginFill(0x000000); 
      circle.graphics.drawCircle(0, 0, radius); 
      circle.graphics.endFill(); 

      // Move it randomly, just a bit 
      circle.x = _holesContainer.mouseX + (Math.random()*20-10); 
      circle.y = _holesContainer.mouseY + (Math.random()*20-10); 
      _holesContainer.addChild(circle); 
     } 
    } 
}