рдЗрддрдирд╛ рд╕рд░рд▓ рдкреНрд░рднрд╛рд╡ред рдХрдЯ рд╕реНрд░реЛрдд рдХреЗ рддрд╣рдд, рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдЯрд┐рдкреНрдкрдгреА рдФрд░ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред
рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХрд┐ рдпрд╣ рдпрд╛ рд╡рд╣ рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдореЗрд░реЗ рджрд┐рдорд╛рдЧ рдореЗрдВ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдЖрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╣рдореЗрд╢рд╛ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд╡рд┐рд╢реЗрд╖ рдкреНрд░рднрд╛рд╡реЛрдВ рдХреЗ рд╕рд╛рде рдЫреЛрдЯреЗ рдЕрдиреБрднрд╡ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдПред рд╕реНрдерд┐рддрд┐ рдХреЛ рд╕реБрдзрд╛рд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИ, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ред рдереЛрдбрд╝реЗ рд╡рд┐рдЪрд╛рд░ рдХреЗ рд╕рд╛рде, рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╡рд┐рдЪрд╛рд░ рдЖрдпрд╛ рдХрд┐ рдРрд╕рд╛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛ред рдЙрдиреНрд╣реЛрдВрдиреЗ рдЦреБрдж рдХреЛ рдкрд╛рда рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рдкреНрд░рднрд╛рд╡ рдХреЛ рдмрдирд╛рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛, рдЬреИрд╕реЗ рдХрд┐ рдпрд╣ рдкрд┐рдХреНрд╕реЗрд▓ рд╡реЗрд▓реНрдбрд┐рдВрдЧ рджреНрд╡рд╛рд░рд╛ рдореБрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ рд╡реЗрд▓реНрдбрд┐рдВрдЧ рдмрд┐рдВрджреБ рд╕реЗ рдмрд┐рдЦрд░реЗ рд╣реБрдП рдХрдгред рдФрд░, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдПрдХ рд▓реЗрдЦ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВред рд▓реЗрдЦрдХ рдореБрдЭрд╕реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмреЗрдХрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдХрд┐рд╕реА рдХреЛ рдлрд╛рдпрджрд╛ рд╣реЛрдЧрд╛ред
рдПрд▓реНрдЧреЛрд░рд┐рдердо рд╡рд┐рд╡рд░рдг
рдкреНрд░рднрд╛рд╡ рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рдпрд╣ рдкрд╛рда рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рд╕рдореЛрдЪреНрдЪ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХрдЯреЗ рд╣реБрдП рдкреЗрд░реНрд▓рд┐рди рд╢реЛрд░ (
рдбреЙрдХреНрдЯрд░ ) рдХрд╛ рдПрдХ рдЯреБрдХрдбрд╝рд╛ рд╣реИред рдкрд╛рда рдХреЗ рдКрдкрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рд╣реИ рдЬреЛ рдкрд╛рда рдХреЛ рдЦреЛрд▓рддреЗ рд╣реБрдП рдЕрдХреНрд╖ OX рдХреЗ рджрд╛рдИрдВ рдУрд░ рдЪрд▓рддрд╛ рд╣реИред рдореБрдЦреНрдп рд▓реВрдк рдореЗрдВ, рд╣рдо рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдХрд┐ рдореБрдЦреМрдЯрд╛ рдХрд╛ рджрд╛рдпрд╛рдБ рдХрд┐рдирд╛рд░рд╛ рдЕрдм рдХрд╣рд╛рдБ рд╕реНрдерд┐рдд рд╣реИ, рдФрд░ рдкреНрд░рддреНрдпреЗрдХ Y рдХреЗ рд▓рд┐рдП, рдкрд╛рда рдХреЗ рд╕рд╛рде рдмрд┐рдЯрдореИрдк рдХреА рдКрдБрдЪрд╛рдИ рд╕реЗ, рд╣рдореЗрдВ рдПрдХ рдЕрдкрд╛рд░рджрд░реНрд╢реА рдкрд┐рдХреНрд╕реЗрд▓ рдорд┐рд▓рддрд╛ рд╣реИ рдФрд░ рдЗрд╕реЗ рдЪреЗрддрди рдХрд░рдирд╛ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣рд╛рдВ рд╣рдо рджрд┐рдЦрд╛рддреЗ рд╣реИрдВ рдХрд┐ "рд╡реЗрд▓реНрдбрд┐рдВрдЧ" рдмрд┐рдВрджреБ рдЕрдм рдХрд╣рд╛рдВ рд╣реИред
рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдкрд╛рда
BlendMode.ERASE рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдХрд╛рдЯрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рдорд┐рд╢реНрд░рд┐рдд рд╡рд╕реНрддреБ рдХреЗ рдЕрд▓реНрдлрд╛ рдореВрд▓реНрдп рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдкреГрд╖реНрдарднреВрдорд┐ рд╡рд╕реНрддреБ рдХреЗ рдкрд┐рдХреНрд╕рд▓ рдХреЛ рдорд┐рдЯрд╛ рджреЗрддрд╛ рд╣реИред рдпрд╣реА рд╣реИ, 0xFF рдХреЗ рдмрд░рд╛рдмрд░ рдЕрд▓реНрдлрд╛ рдХреЗ рд╕рд╛рде, рдкреГрд╖реНрдарднреВрдорд┐ рдХреЗ рдЕрд▓реНрдлрд╛ рдЪреИрдирд▓ рдХрд╛ рдореВрд▓реНрдп 0x00 рд╣реЛрдЧрд╛ред
рдкрд╛рда рдХреЗ рд╕рд╛рде рдмрд┐рдЯрдореИрдк рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рд╡рд┐рдзрд┐ред
рдХреЛрдбprivate function GetMaskedText(text:String):BitmapData { var tf:TextField = new TextField(); var format:TextFormat = new TextFormat("Arial", 60, 0xFFFFFF, true); tf.defaultTextFormat = format; tf.text = text; tf.width = tf.textWidth + 4.0; tf.height = tf.textHeight + 4.0; tf.filters = [new GlowFilter(0xFFFFFF, 1.0, 2, 2, 4, 3)]; var w:int = tf.width; var h:int = tf.height; var noiseBdata:BitmapData = new BitmapData(w, h, true, 0xFFFFFFFF);
рдЕрдм рдЖрдкрдХреЛ рджреГрд╢реНрдп рдореЗрдВ рдкрд╛рда рдЬреЛрдбрд╝рдиреЗ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рд╢реАрд░реНрд╖ рдкрд░ рдПрдХ рдореБрдЦреМрдЯрд╛ рдбрд╛рд▓реЗрдВред
рдХреЛрдб private var textBdata:BitmapData; private var textBmp:Bitmap; private var txtMask:Shape; private var btnRestart:MiniButton; private function InitalizeLayout():void { screen = new BitmapData(W, H, true, 0x00000000); addChild(new Bitmap(screen)); textBdata = GetMaskedText("..Hello world.."); textBmp = new Bitmap(textBdata); textBmp.x = (W - textBmp.width) * 0.5; textBmp.y = (H - textBmp.height) * 0.5; addChild(textBmp); txtMask = new Shape(); txtMask.graphics.beginFill(0xFFFFFF); txtMask.graphics.drawRect(0, 0, 4, textBmp.height); txtMask.graphics.endFill(); txtMask.x = textBmp.x; txtMask.y = textBmp.y; textBmp.mask = txtMask; addChild(txtMask); btnRestart = new MiniButton("restart"); btnRestart.x = (W - MiniButton.W) * 0.5; btnRestart.y = 10.0; addChild(btnRestart); }
рд╕реНрдХреНрд░реАрди рд╡реЗрд░рд┐рдПрдмрд▓ рдПрдХ рдмрдбрд╝рд╛
рдмрд┐рдЯрдореИрдкрдбрд╛рдЯрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдХрдгреЛрдВ рдХреЛ рдЦреАрдВрдЪрд╛ рдЬрд╛рдПрдЧрд╛ред рддреБрд░рдВрдд рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЪреЗрддрд╛рд╡рдиреА, рдХрдгреЛрдВ рдХреЛ рд╕рдВрдЪрдп рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ
рд╡реЗрдХреНрдЯрд░ рдХреЗ рдмрдЬрд╛рдп рдПрдХ рдмрд╕-рд▓рд┐рдВрдХреНрдб рд╕реВрдЪреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдЕрдХреНрд╕рд░ рдХрдгреЛрдВ рдХреЛ рд╣рдЯрд╛рдиреЗ рдФрд░ рд╡реЗрдХреНрдЯрд░ рдмрдирд╛рдиреЗ рдореЗрдВ рдорджрдж рдорд┐рд▓реЗрдЧреАред рдФрд░ рд╕реВрдЪреА рд╕реЗ рдПрдХ рддрддреНрд╡ рдХреЛ рдирд┐рдХрд╛рд▓рдирд╛ рдЖрд╕рд╛рди рд╣реИ - рдЖрдкрдХреЛ рдмрд╕ рддрддреНрд╡ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдФрд░ рдкрдбрд╝реЛрд╕рд┐рдпреЛрдВ рд╕реЗ рд▓рд┐рдВрдХ рдмрджрд▓рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╡рд░реНрдЧ рдХрд╛
рдХрдгрдХреЛрдб class Particle { private static const GRAVITY:Point = new Point(0, 0.2); private var speed:Point; public var position:Point; public var color:int; public var next:Particle; public function Particle(x:Number, y:Number, color:int) { position= new Point(x, y);
рдПрдиреАрдореЗрд╢рди рдХреЛ рдкреБрдирд░рд╛рд░рдВрдн рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдПрдХ рдкреБрдирд░рд╛рд░рдВрдн рдмрдЯрди рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдмрдЯрди рдореЗрдВ рджреЛ рд░рд╛рдЬреНрдп рд╣реИрдВ - рд╣реЙрд╡рд░ рдФрд░ рд╕рд╛рдорд╛рдиреНрдп рдХреЗ рджреМрд░рд╛рди рд╣рд╛рдЗрд▓рд╛рдЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ред
рдХреЛрдб class MiniButton extends Sprite { private var tf:TextField; public static const W:int = 100; public static const H:int = 24; public function MiniButton(text:String) { tf = new TextField(); var format:TextFormat = new TextFormat( "Arial" , 16 , 0x676767 , true , null, null, null, null , TextFormatAlign.CENTER); tf.defaultTextFormat = format; tf.mouseEnabled = false; tf.text = text; tf.width = W; tf.height = H; Redraw(0xB3F7B6); this.filters = [new GlowFilter(0xFFFFFF, 0.5, 14, 14, 3, 3)]; mouseChildren = false; buttonMode = true; addEventListener(MouseEvent.ROLL_OVER, HandleRollOver); addEventListener(MouseEvent.ROLL_OUT, HandleRollOut); } private function Redraw(color:int):void { graphics.clear(); graphics.beginFill(0xB3F7B6); graphics.drawRoundRect(0, 0, W, H, 16); graphics.endFill(); } private function HandleRollOut(e:MouseEvent):void { Redraw(0xB3F7B6); } private function HandleRollOver(e:MouseEvent):void { Redraw(0x37EC41); } }
рдПрдиреАрдореЗрд╢рди рдХреЛ рдлрд┐рд░ рд╕реЗ рд╢реБрд░реВ рдХрд░рдиреЗ рдФрд░ рд░реЛрдХрдиреЗ рдХреЗ рд▓рд┐рдП рддрд░реАрдХреЗред
рдХреЛрдб private function Reset():void { btnRestart.visible = false; txtMask.width = 4; isRunning = true; addEventListener(Event.ENTER_FRAME, HandleEnterFrame); } private function Stop():void { btnRestart.visible = true; isRunning = false; removeEventListener(Event.ENTER_FRAME, HandleEnterFrame); }
рдЖрд╡рд╢реНрдпрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рддреИрдпрд╛рд░ рд╣реИред рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ,
InitializeLayout рдХреЛ рдХреЙрд▓
рдХрд░реЗрдВ рдФрд░ рдПрдиреАрдореЗрд╢рди рд╢реБрд░реВ рдХрд░реЗрдВред
рдХреЛрдб public function Main() { InitalizeLayout(); Reset(); btnRestart.addEventListener(MouseEvent.CLICK, HandleResetClick); }
рдпрд╣ рдореБрдЦреНрдп рдЪрдХреНрд░ рд╣реИ, рдЬреЛ рд╣рд╛рд▓рд╛рдВрдХрд┐ рдереЛрдбрд╝рд╛ рдмреЛрдЭрд┐рд▓ рд╣реЛ рдЧрдпрд╛ рд╣реИред
рдХреЛрдб private var firstParticle:Particle; private function HandleEnterFrame(e:Event):void { if (!isRunning) return;
рдкреБрдирд╢реНрдЪред рдмрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдкреВрд░реНрдг рд╕реНрд░реЛрдд
рдХреЛрдб package { import flash.display.Bitmap; import flash.display.BitmapData; import flash.display.BitmapDataChannel; import flash.display.BlendMode; import flash.display.Shape; import flash.display.Sprite; import flash.display.StageAlign; import flash.display.StageScaleMode; import flash.events.Event; import flash.events.MouseEvent; import flash.filters.BlurFilter; import flash.filters.GlowFilter; import flash.geom.ColorTransform; import flash.geom.Point; import flash.text.TextField; import flash.text.TextFormat; public class Main extends Sprite {