Flash / Flex / ActionScript/Graphics/Rectangle
Содержание
- 1 A rectangle in a Sprite is nested within another Sprite. Both Sprite instances are rotated 45 degrees.
- 2 Draw a rectangle
- 3 Draw Colored Rectangle
- 4 Fill a rectangle
- 5 rotateChildren( ), applies the generalized code from Example 20-4. It randomly rotates all the descendants of a specified container (not just the children).
- 6 Rotating Rectangles
- 7 Square
A rectangle in a Sprite is nested within another Sprite. Both Sprite instances are rotated 45 degrees.
<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 group.x = 40; group.scaleY = .15; group.rotation = 15; var innerGroup:Sprite = new Sprite( ); innerGroup.addChild(group); innerGroup.rotation = 15; addChild(innerGroup); } }
}
</source>
Draw a rectangle
<source lang="java">
package{
import flash.display.Sprite; public class Main extends Sprite{ public function Main(){
try { drawRectangle(this, 100, 200); drawRectangle(this, 300, 400); } catch(errObject:Error) { this.graphics.clear( ); trace("An error occurred: " + errObject.message); } } private function drawRectangle(sprite:Sprite, nWidth:Number, nHeight:Number):void { if(isNaN(nWidth) || isNaN(nHeight)) { throw new Error("Invalid dimensions specified."); } sprite.graphics.lineStyle(1, 0, 1); sprite.graphics.lineTo(nWidth, 0); sprite.graphics.lineTo(nWidth, nHeight); sprite.graphics.lineTo(0, nHeight); sprite.graphics.lineTo(0, 0); } }
}
</source>
Draw Colored Rectangle
<source lang="java">
package {
import flash.display.Sprite; import flash.display.Shape; import flash.display.Graphics; public class Rectangles extends Sprite { public function Rectangles() { drawColoredRectIn(graphics, 0xFF0000); var rect:Shape = new Shape(); drawColoredRectIn(rect.graphics, 0xFFFF00); rect.x = 50; rect.y = 50; addChild(rect); } private function drawColoredRectIn(target:Graphics, color:int):void { target.lineStyle(1, 0x000000); target.beginFill(color); target.drawRect(0, 0, 100, 100); } }
}
</source>
Fill a rectangle
<source lang="java">
package{
import flash.display.*; import flash.filters.*; public class Main extends Sprite{ public function Main(){ var box:Sprite = new Sprite( ); box.graphics.lineStyle( ); box.graphics.beginFill(0xFFFFFF); box.graphics.drawRect(0, 0, 100, 100); box.graphics.endFill( ); addChild(box); box.filters = [new DropShadowFilter(10), new GlowFilter( )]; } }
}
</source>
rotateChildren( ), applies the generalized code from Example 20-4. It randomly rotates all the descendants of a specified container (not just the children).
<source lang="java">
package {
import flash.display.*; import flash.events.*; public class RotatingRectangles extends Sprite { public function RotatingRectangles ( ) { var rects:Array = new Array( ); for (var i:int = 0; i < 20; i++) { rects[i] = new Shape( ); rects[i].graphics.lineStyle(1); rects[i].graphics.beginFill(Math.floor(Math.random( )*0xFFFFFF), 1); rects[i].graphics.drawRect(0, 0, 100, 50); rects[i].x = Math.floor(Math.random( )*500); rects[i].y = Math.floor(Math.random( )*400); addChild(rects[i]); } stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); } private function mouseDownListener (e:Event):void { for (var i:int=0; i < numChildren; i++) { getChildAt(i).rotation = Math.floor(Math.random( )*360); } } public function rotateChildren (container:DisplayObjectContainer):void { for (var i:int = 0; i < container.numChildren; i++) { var thisChild:DisplayObject = container.getChildAt(i); if (thisChild is DisplayObjectContainer) { rotateChildren(DisplayObjectContainer(thisChild)); } else { thisChild.rotation = Math.floor(Math.random( )*360); } } } }
}
</source>
Rotating Rectangles
<source lang="java">
package {
import flash.display.*; import flash.events.*; public class Main extends Sprite { public function Main ( ) { var rects:Array = new Array( ); for (var i:int = 0; i < 20; i++) { rects[i] = new Shape( ); rects[i].graphics.lineStyle(1); rects[i].graphics.beginFill(Math.floor(Math.random( )*0xFFFFFF), 1); rects[i].graphics.drawRect(0, 0, 100, 50); rects[i].x = Math.floor(Math.random( )*500); rects[i].y = Math.floor(Math.random( )*400); addChild(rects[i]); } stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener); } private function mouseDownListener (e:Event):void { for (var i:int=0; i < numChildren; i++) { getChildAt(i).rotation = Math.floor(Math.random( )*360); } } }
}
</source>
Square
<source lang="java">
package {
import flash.display.Sprite; [SWF(width=550, height=400)] public class Main extends Sprite { public function Main() { var square:Square = new Square(); addChild(square); // Move to (300,300) square.x = 30; square.y = 30; // Stretch horizontally and squash vertically square.scaleX = 2; square.scaleY = 0.5; // Make 50% alpha square.alpha = 0.5; // Rotate 45 degrees square.rotation = 45; } }
} class Square extends flash.display.Sprite {
public function Square() { graphics.lineStyle(5); graphics.beginFill(0xFF); graphics.drawRect(0, 0, 100, 100); graphics.endFill(); }
}
</source>