Flash / Flex / ActionScript/Development/Sprite

Материал из Web эксперт
Перейти к: навигация, поиск

addChild( ) method doesn"t guarantee that a display object is added to the display list.

   <source lang="java">

package {

 import flash.display.*;
 public class CircleExample extends Sprite {
   public function CircleExample(  ) {
     var red:Shape = createCircle( 0xFF0000, 10 );
     red.x = 10;
     red.y = 20;
     var green:Shape = createCircle( 0x00FF00, 10 );
     green.x = 15;
     green.y = 25;
     var blue:Shape = createCircle( 0x0000FF, 10 );
     blue.x = 20;
     blue.y = 20;
     
     addChild( red );
     addChild( blue );
     
     addChildAt( green, 1 );
   }
   
   public function createCircle( color:uint, radius:Number ):Shape {
     var shape:Shape = new Shape(  );
     shape.graphics.beginFill( color );
     shape.graphics.drawCircle( 0, 0, radius );
     shape.graphics.endFill(  );
     return shape;
   }
 }

}

       </source>
   
  


Adding an Item to the Display List

   <source lang="java">

package {

 import flash.display.DisplayObjectContainer;
 import flash.display.Sprite;
 import flash.text.TextField;
 public class DisplayListExample extends Sprite {
   public function DisplayListExample(  ) {
     var hello:TextField = new TextField(  );
     hello.text = "hello";
     
     addChild( hello );
   }
 }

}

       </source>
   
  


Add TextField to Sprite

   <source lang="java">

package {

 import flash.display.Sprite;
 import flash.text.TextField;
 public class Main extends Sprite {
   public function Main(  ) {
     var field:TextField = new TextField(  );
     addChild(field);
   }
 }

}

       </source>
   
  


Advanced Masks

   <source lang="java">

package {

   import flash.display.Sprite;
   import flash.events.MouseEvent;
   public class Main extends Sprite
   {
       private var maskingSprite:Sprite = new Sprite();
       private var maskedSprite:Sprite = new Sprite();
       private var maskHolder:Sprite = new Sprite();
       public function Main()
       {
           stage.scaleMode = "noScale";
           stage.align = "TL";
           maskedSprite.graphics.beginFill(0xFFCC00, 1);
           maskedSprite.graphics.drawRect(0, 0, 1000, 600);
           maskedSprite.graphics.lineStyle(20, 0x000000);
           maskedSprite.graphics.lineTo(1000, 600);
           maskedSprite.graphics.moveTo(1000, 0);
           maskedSprite.graphics.lineTo(0, 600);
           addChild(maskedSprite);
           maskHolder.graphics.beginFill(0x000000, 1);
           maskHolder.graphics.drawRect(0, 0, 120, 120);
           maskingSprite.graphics.beginFill(0x000000, 1);
           maskingSprite.graphics.drawRect(0, 0, 100, 100);
           maskingSprite.graphics.endFill();
           addChild(maskingSprite);
           maskedSprite.addEventListener(MouseEvent.MOUSE_DOWN, dragMask);
           maskedSprite.addEventListener(MouseEvent.MOUSE_UP, stopDragMask);
           maskedSprite.mask = maskingSprite;
       }
       private function dragMask(mouseEvent:MouseEvent):void
       {
           trace(" drag ");
           maskingSprite.startDrag();
       }
       private function stopDragMask(mouseEvent:MouseEvent):void
       {
           maskingSprite.stopDrag();
       }
   }

}

       </source>
   
  


Applies a black color transformation to group, causing all children to be colored solid black

   <source lang="java">

package {

   import flash.display.GradientType;
   import flash.display.Sprite;
   import flash.geom.Matrix;
   import flash.geom.ColorTransform;
   public class Main extends Sprite {
   
        public function Main() {
   
           var rect1:Sprite = new Sprite(  );
           rect1.graphics.lineStyle(1);
           rect1.graphics.beginFill(0x0000FF, 1);
           rect1.graphics.drawRect(0, 0, 75, 50);
           
           var rect2:Sprite = new Sprite(  );
           rect2.graphics.lineStyle(1);
           rect2.graphics.beginFill(0xFF0000, 1);
           rect2.graphics.drawRect(0, 0, 75, 50);
           rect2.x = 50;
           rect2.y = 75;
           
           // Create the container
           var group:Sprite = new Sprite(  );
           
           // Add the rectangles to the container
           group.addChild(rect1);
           group.addChild(rect2);
           
           // Add the container to the main application
           addChild(group);
           
           group.x = 40;
           group.scaleY = .15;
           group.rotation = 15;
           var blackTransform:ColorTransform = new ColorTransform(  );
           blackTransform.color = 0x0000FF;
           group.transform.colorTransform = blackTransform;
        }
   
   }

}

       </source>
   
  


Building an FLV Playback Application

   <source lang="java">

package {

   import flash.display.Sprite;
   import flash.events.Event;
   import flash.events.MouseEvent;
   import flash.geom.Rectangle;
   public class Main extends Sprite
   {
       public static const SEEKING:String = "seeking";
       public static const FINISHED_SEEKING:String = "finishedSeeking";
       public var playhead:Sprite;
       public function Main()
       {
           this.graphics.beginFill(0xCCCCCC, 1);
           this.graphics.drawRect(0, 0, 100, 20);
           playhead = new Sprite();
           playhead.graphics.beginFill(0x0000ff, 1);
           playhead.graphics.drawRect(0, 0, 20, 20);
           addChild(playhead);
           playhead.x = -10;
           playhead.addEventListener(MouseEvent.MOUSE_DOWN, beginDrag);
       }
       private function beginDrag(mouseEvent:MouseEvent):void
       {
           playhead.startDrag(false, new Rectangle(0, 0, width, height));
           playhead.addEventListener(MouseEvent.MOUSE_UP, stopDragPlayhead);
           var event:Event = new Event("seeking");
           dispatchEvent(event);
       }
       private function stopDragPlayhead(mouseEvent:MouseEvent):void
       {
           playhead.stopDrag();
           var event:Event = new Event("finishedSeeking");
           dispatchEvent(event);
       }
       public function updatePlayhead(number:Number):void
       {
           playhead.x = number;
       }
   }

}

       </source>
   
  


Change child index

   <source lang="java">

package {

 import flash.display.*;
 public class Main extends Sprite {
   public function Main(  ) {
     var green:Shape = createCircle( 0x00FF00, 10 );
     green.x = 25;
     green.y = 25;
     var blue:Shape = createCircle( 0x0000FF, 20 );
     blue.x = 25;
     blue.y = 25;
     
     addChild( green );
     addChild( blue );
     
     setChildIndex( blue, getChildIndex( green ) );
   }
   public function createCircle( color:uint, radius:Number ):Shape {
     var shape:Shape = new Shape(  );
     shape.graphics.beginFill( color );
     shape.graphics.drawCircle( 0, 0, radius );
     shape.graphics.endFill(  );
     return shape;
   }
 }

}

       </source>
   
  


Containment Events

   <source lang="java">

package {

 import flash.display.*;
 import flash.events.*;
 public class Main extends Sprite {
   public function Main() {
     var container:Sprite = new Sprite(  );
     var child:Sprite = new Sprite(  );
     var grandchild:Sprite = new Sprite(  );
     container.addEventListener(Event.ADDED, addedListener);
     container.addEventListener(Event.REMOVED, removedListener);
     container.addChild(child);  
     child.addChild(grandchild);  
     stage.addChild(container);
     child.removeChild(grandchild);
     stage.removeChild(container);
   }
   private function addedListener (e:Event):void {
     if (e.eventPhase != EventPhase.AT_TARGET) {
       trace("container has a new descendant: " + e.target);
     } else {
       trace("container was added to a new parent: "
             + DisplayObject(e.target).parent);
     }
   }
   private function removedListener (e:Event):void {
     if (e.eventPhase != EventPhase.AT_TARGET) {
       trace("a descendant was removed from container: " + e.target);
     } else {
       trace("container was removed from its parent: "
             + DisplayObject(e.target).parent);
     }
   }
 }

}

       </source>
   
  


Depth test

   <source lang="java">

package {

    import flash.display.BlendMode;
    import flash.display.Sprite;
    
    [SWF(width=550, height=400)]
    
    public class Main extends Sprite {
    
         public function Main() {
              var square:Square = new Square();
              addChild(square);
              square.x = 10;
              square.y = 10;
              var square2:Square = new Square();
              addChild(square2);
              square2.x = 43;
              square2.y = 66;
              var square3:Square = new Square();
              addChild(square3);
              square3.x = 93;
              square3.y = 31;
              trace("square: " + getChildIndex(square));
              trace("square2: " + getChildIndex(square2));
              trace("square3: " + getChildIndex(square3));
              
              setChildIndex(square, numChildren-1);
              
              trace("square: " + getChildIndex(square));
              trace("square2: " + getChildIndex(square2));
              trace("square3: " + getChildIndex(square3));
              
              swapChildren(square2, square3);
              swapChildrenAt(0, 2);
              
              trace("square: " + getChildIndex(square));
              trace("square2: " + getChildIndex(square2));
              trace("square3: " + getChildIndex(square3));
              
              square3.blendMode = BlendMode.INVERT;
         }
    
    }
    

} class Square extends flash.display.Sprite {

    public function Square() {
         graphics.lineStyle(5);
         graphics.beginFill(0xFF);
         graphics.drawRect(0, 0, 100, 100);
         graphics.endFill();
    }

}

       </source>
   
  


Manipulating Objects in Containers Collectively

   <source lang="java">

package {

   import flash.display.GradientType;
   import flash.display.Sprite;
   import flash.geom.Matrix;
        
   public class Main extends Sprite {
   
        public function Main() {
   
           var rect1:Sprite = new Sprite(  );
           rect1.graphics.lineStyle(1);
           rect1.graphics.beginFill(0x0000FF, 1);
           rect1.graphics.drawRect(0, 0, 75, 50);
           
           var rect2:Sprite = new Sprite(  );
           rect2.graphics.lineStyle(1);
           rect2.graphics.beginFill(0xFF0000, 1);
           rect2.graphics.drawRect(0, 0, 75, 50);
           rect2.x = 50;
           rect2.y = 75;
           
           var group:Sprite = new Sprite(  );
           
           group.addChild(rect1);
           group.addChild(rect2);
           
           addChild(group);
           
           group.x = 40;
           group.scaleY = .15;
           group.rotation = 15;
   
        }
   
   }

}

       </source>
   
  


Masks

   <source lang="java">

package {

   import flash.display.*;
   import flash.events.Event;
   public class Main extends Sprite
   {
       private var circle:Shape;
       private var vBox:Shape;
       private var up:Boolean = false;
       public function Main()
       {
           super();
           stage.scaleMode = "noScale";
           circle = new Shape();
           circle.graphics.beginFill(0xFF6600, 1);
           circle.graphics.drawCircle(250, 250, 250);
           vBox = new Shape();
           vBox.graphics.beginFill(0x000000, 1);
           vBox.graphics.drawRect(0, 0, 1000, 20);
           circle.mask = vBox;
           addChild(vBox);
           addChild(circle);
           addEventListener(Event.ENTER_FRAME, scrollVertBox);
       }
       private function scrollVertBox(event:Event):void
       {
           if(up)
           {
               vBox.y -= 2;
           } else {
               vBox.y += 2;
           }
           if(vBox.y > 520)
           {
               up = true;
           }
           if(vBox.y < 0)
           {
               up = true;
           }
       }
   }

}

       </source>
   
  


Moving Objects Forward and Backward

   <source lang="java">

package {

 import flash.display.*;
 public class SetChildIndexExample extends Sprite {
   public function SetChildIndexExample(  ) {
     var red:Shape = createCircle( 0xFF0000, 10 );
     red.x = 10;
     red.y = 20;
     var green:Shape = createCircle( 0x00FF00, 10 );
     green.x = 15;
     green.y = 25;
     var blue:Shape = createCircle( 0x0000FF, 10 );
     blue.x = 20;
     blue.y = 20;
     
     addChild( red );
     addChild( green );
     addChild( blue );
     
     setChildIndex( blue, 0 );
   }
   
   public function createCircle( color:uint, radius:Number ):Shape {
     var shape:Shape = new Shape(  );
     shape.graphics.beginFill( color );
     shape.graphics.drawCircle( 0, 0, radius );
     shape.graphics.endFill(  );
     return shape;
   }
 }

}

       </source>
   
  


Removing an Item from the Display List

   <source lang="java">

package {

 import flash.display.Sprite;
 import flash.text.TextField;
 import flash.events.MouseEvent;
 public class RemoveChildExample extends Sprite {
   private var _label:TextField;
   
   public function RemoveChildExample(  ) {
     _label = new TextField(  );
     _label.text = "Some Text";
     
     addChild( _label );
     
     stage.addEventListener( MouseEvent.CLICK, removeLabel );
   }
   
   public function removeLabel( event:MouseEvent ):void {
     removeChild( _label );
   }
 }

}

       </source>
   
  


Reparenting Display Objects

   <source lang="java">

package {

   import flash.display.*;
   import flash.events.*;
   public class Main extends Sprite
   {
       var squareOne:Sprite = new Sprite();
       var squareTwo:Sprite = new Sprite();
       var shapeInst:Shape = new Shape();
       public function Main()
       {
           squareOne.graphics.beginFill(0x00ff00, 1);
           squareOne.graphics.drawRect(0, 0, 200, 200);
           squareOne.graphics.endFill();
   
           squareTwo.graphics.beginFill(0x00ff00, 1);
           squareTwo.graphics.drawRect(0, 0, 200, 200);
           squareTwo.graphics.endFill();
   
           addChild(squareOne);
           addChild(squareTwo);
   
           squareTwo.x = 300;
   
           squareOne.addEventListener(MouseEvent.MOUSE_DOWN, addShape);
           squareTwo.addEventListener(MouseEvent.MOUSE_DOWN, addShape);
       }
       private function addShape(event:Event):void
       {
           event.target.addChild(shapeInst);
       }
   }

}

       </source>
   
  


Swapping the Depths of Children

   <source lang="java">

package {

   import flash.display.Sprite;
   import flash.events.*;
   public class Main extends Sprite
   {
       public function Main()
       {
           var aSpr:Sprite = new Sprite();
           var bSpr:Sprite = new Sprite();
           var cSpr:Sprite = new Sprite();
           var dSpr:Sprite = new Sprite();
   
           aSpr.addEventListener(MouseEvent.MOUSE_DOWN, swapSprites);
           bSpr.addEventListener(MouseEvent.MOUSE_DOWN, swapSprites);
           cSpr.addEventListener(MouseEvent.MOUSE_DOWN, swapSprites);
           dSpr.addEventListener(MouseEvent.MOUSE_DOWN, swapSprites);
   
           addChild(aSpr);
           addChild(bSpr);
           addChild(cSpr);
           addChild(dSpr);
       }
   
       private function swapSprites(evt:Event):void
       {
           swapChildren((evt.target as Sprite), getChildAt(numChildren - 1));
       }
   }

}

       </source>
   
  


Using hitTestPoint

   <source lang="java">

package{

 import flash.display.*;
 import flash.geom.*;
 public class Main extends Sprite{
   public function Main(){
       var pt:Point = new Point(20, 30);
   
       var temp:Sprite = new Sprite();
       temp.graphics.beginFill(0x00ff00, 1.0);
       temp.graphics.drawRect(0, 0, 30, 30);
       temp.graphics.endFill();
       addChild(temp);
   
       if (temp.hitTestPoint(pt.x, pt.y))
       {
           trace("Point within bounds");
       }
   }
 }

}

       </source>
   
  


Using the buttonMode of the Sprite

   <source lang="java">

package{

 import flash.display.Sprite;
 
 public class Main extends Sprite{
   public function Main(){
        var foo:Sprite = new Sprite();
        foo.graphics.beginFill(0xff0000, 1);
        foo.graphics.drawRect(0, 0, 100, 100);
        foo.graphics.endFill();
        foo.buttonMode = true;
        addChild(foo);
   }
 }

}

       </source>
   
  


Using the hitArea

   <source lang="java">

package {

   import flash.display.*;
   import flash.events.*;
   public class Main extends Sprite
   {
       public function Main()
       {
           var notHitArea:Sprite = new Sprite();
   
          notHitArea.graphics.beginFill(0x00FF00, 1.0);
          notHitArea.graphics.drawRect(0, 0, 30, 30);
          notHitArea.graphics.endFill();
          addChild(notHitArea);
          notHitArea.x = 100;
          notHitArea.y = 200;
   
   
          var hitAreaSprite:Sprite = new Sprite();
          hitAreaSprite.graphics.beginFill(0x0000FF, 1.0);
          hitAreaSprite.graphics.drawRect(0, 0, 30, 30);
          hitAreaSprite.graphics.endFill();
          addChild(hitAreaSprite);
   
          notHitArea.hitArea = hitAreaSprite;
   
   
          hitAreaSprite.mouseEnabled = false;
   
   
          notHitArea.addEventListener(MouseEvent.MOUSE_DOWN, clickHandler);
      }
      private function clickHandler(mouseEvent:MouseEvent):void
      {
          trace(" clickHandler ");
      }
   }

}

       </source>