рдлрд┐рд░ рд╕реЗ рд╕рдВрдХреЗрдд

рд╕рд┐рдЧреНрдирд▓ рдкрд░ Aiden рджрд░реНрдЬреА рд▓реЗрдЦ рдЬреЛ C # рд╕реЗ рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рдорд╛рдЗрдЧреНрд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд░реЙрдмрд░реНрдЯ рдкреЗрдирд░ рдХреЗ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рджред рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд╡рд╛рдж рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ рдзреЛрдЦрд╛ рдкрддреНрд░ рд╣реИ - рдПрдХ рд▓реЗрдЦ рдХрд╛ рдПрдХ рдирд┐рдЪреЛрдбрд╝ред рдкрд╛рдиреА рдХреЗ рдмрд┐рдирд╛, рдФрд░ рдХреБрдЫ рднреА рдирд╣реАрдВ, рддрд╛рдХрд┐ рдЙрд╕рдХреА рдЖрдВрдЦреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рднреА рд╕рдмрд╕реЗ рдЖрд▓рд╕реА рджреМрдбрд╝ рд╕рдХреЗред рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рднреА рдХрд┐рдП рдЧрдП рд╣реИрдВред рдкреЛрд╕реНрдЯ рди рдХреЗрд╡рд▓ рдПрдПрд╕ 3 рдЧреБрд░реБ рдХреЗ рд▓рд┐рдП рд╣реИ, рдмрд▓реНрдХрд┐ рдЙрди рд╕рднреА рдХреЗ рд▓рд┐рдП рднреА рд╣реИ рдЬреЛ рдХреЛрдб рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд░рдиреЗ рдХреА рдкрд░рд╡рд╛рд╣ рдХрд░рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕рдореЗрдВ рдСрдмреНрдЬрд░реНрд╡рд░ рдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рдХрд╛ рд╡рд░реНрдгрди рд╣реИред рдФрд░ рдпрд╣рд╛рдБ рдПрдХ рд╡реАрдбрд┐рдпреЛ рдЯреНрдпреВрдЯреЛрд░рд┐рдпрд▓ рд╣реИ ред



рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рд╕рд┐рдЧреНрдирд▓ рдЕрдкрдиреЗ рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреА рдПрдХ рдЕрд▓рдЧ рдЗрд╡реЗрдВрдЯ рдореИрдиреЗрдЬрд░ рд╣реИред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ EventDispatcher рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреА рдЬрд╛рдиреЗ рд╡рд╛рд▓реА рд╕реНрдЯреНрд░рд┐рдВрдЧ рддреБрд▓рдирд╛рдУрдВ рд╕реЗ рджреВрд░ рдЬрд╛рдирд╛ рд╣реИ рдФрд░ Event s рдХрд╛ рдПрдХ рд╕реЗрдЯ рд╕реНрдкреЙрди рдХрд░рдирд╛ рд╣реИред As3 рдкреБрд╕реНрддрдХрд╛рд▓рдп рдХреЗ рд╕реНрд░реЛрддреЛрдВ рдХреЛ рдпрд╣рд╛рдБ GIT рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рд╕реЗ рд▓рд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ ред



рд╕рдВрдХреЗрдд - рдореБрдЦреНрдп рд╕рдВрдХреЗрддред



package insideria.basicSignal { import org.osflash.signals.Signal; public class AlarmClock { public var alarm:Signal; public function AlarmClock() { alarm = new Signal(); //   } public function ring():void { alarm.dispatch(); //   () } } } package insideria.basicSignal { import flash.display.Sprite; public class WakeUp extends Sprite { private var alarmClock:AlarmClock; public function WakeUp() { alarmClock = new AlarmClock(); alarmClock.alarm.add(onRing); //   alarmClock.ring(); } private function onRing():void { //  trace("Wake up!"); } } }
      
      







рд╕рд┐рдЧреНрдирд▓ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдкреНрд░рдХрд╛рд░реЛрдВ рдХреЛ рд╕реВрдЪреАрдмрджреНрдз рдХрд░рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╛рд░рд┐рдд рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ:



  package insideria.basicSignalArguments { import org.osflash.signals.Signal; public class AlarmClock { public var alarm:Signal; public function AlarmClock() { alarm = new Signal(String); //     } public function ring():void { alarm.dispatch("9 AM"); //  } } } package insideria.basicSignalArguments { import flash.display.Sprite; public class WakeUp extends Sprite { private var alarmClock:AlarmClock; public function WakeUp() { alarmClock = new AlarmClock(); alarmClock.alarm.add(onRing); alarmClock.ring(); } private function onRing(time:String):void { //   - ,      trace("Wake up! It's already " + time); } } }
      
      







рдпрджрд┐ рдЖрдк рд╕рджрд╕реНрдпрддрд╛ рд╕рдорд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ (рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ рдЬрд╛рдБрдЪ рдХреА рдЬрд╛рддреА рд╣реИ)



  alarmClock.alarm.remove(onRing); //  alarmClock.alarm.addOnce(onRing); //   , , ,  Event.ADDED_TO_STAGE alarmClock.alarm.removeAll(); //   
      
      







рдбреАрд▓рдХреНрд╕рд╕рд┐рдЧреНрдирд▓ - рдПрдХ рд╢рд╛рдирджрд╛рд░ (рдЙрдиреНрдирдд) рд╕рд┐рдЧреНрдирд▓ рдЖрдкрдХреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рдорд╛рд▓рд┐рдХ рдФрд░ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рд╕реНрд╡рдпрдВ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдпрд╣ рдЬреЗрдиреЗрд░рд┐рдХрд╡реЗрдВрдЯ (рд╕рд╛рдорд╛рдиреНрдп рдШрдЯрдирд╛) рдФрд░ рдХрд╕реНрдЯрдо рдкреИрд░рд╛рдореАрдЯрд░ (рдПрдХ рдмреБрдирд┐рдпрд╛рджреА рд╕рдВрдХреЗрдд рдХреЗ рд░реВрдк рдореЗрдВ) рджреЛрдиреЛрдВ рдХреЛ рд╢реНрд░реЛрддрд╛ рддрдХ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХрднреА-рдХрднреА рдПрдХ рдЕрд╕рд╣рдиреАрдп рд╡рд┐рд▓рд╛рд╕рд┐рддрд╛ рд╣реИ (рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░рджрд░реНрд╢рди рдкрд░реАрдХреНрд╖рдг рджреЗрдЦреЗрдВ)



  package insideria.deluxeSignal { import org.osflash.signals.DeluxeSignal; import org.osflash.signals.events.GenericEvent; public class AlarmClock { public var alarm:DeluxeSignal; public var message:String; public function AlarmClock() { alarm = new DeluxeSignal(this); //   target  message = "This is a message from our AlarmClock"; } public function ring():void { alarm.dispatch(new GenericEvent()); //  GenericEvent } } } package insideria.deluxeSignal { import org.osflash.signals.events.GenericEvent; import flash.display.Sprite; public class WakeUp extends Sprite { private var alarmClock:AlarmClock; public function WakeUp() { alarmClock = new AlarmClock(); alarmClock.alarm.add(onRing); alarmClock.ring(); } private function onRing(event:GenericEvent):void { trace(event.target); // target,      trace(event.signal); //  trace(event.target.message); } } }
      
      







рдореВрд▓рдирд┐рд╡рд╛рд╕реА - рджреЗрд╢реА рд╕рдВрдХреЗрддред рджреЗрд╢реА ActionScript рдШрдЯрдирд╛рдУрдВ рдХреЛ рд╕рдВрдХреЗрддреЛрдВ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддрд╛ рд╣реИред

рдПрдХ рдЙрджрд╛рд╣рд░рдг:

  package insideria.nativeSignals { import org.osflash.signals.natives.NativeSignal; import flash.display.Sprite; import flash.events.Event; public class AddToStage extends Sprite { public function AddToStage() { var added:NativeSignal = new NativeSignal(this, Event.ADDED_TO_STAGE, Event); //      Event' added.addOnce(onAdded); } private function onAdded(event:Event):void { graphics.beginFill(0xCCCCCC); graphics.drawRect(0, 0, 100, 100); graphics.endFill(); } } }
      
      







рдкреНрд░рджрд░реНрд╢рди:



- рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдореЗрдВ рджрд┐рдЦрд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ рдХрд┐ EventDispatcher рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ рдФрд╕рддрди рдкреНрд░рддрд┐ рдШрдВрдЯреЗ рдЕрддрд┐рд░рд┐рдХреНрдд 4 kb RAM рдЦрд╛рддрд╛ рд╣реИ

- EventDispatcher рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд╕рд┐рдЧреНрдирд▓ 2 рдЧреБрдирд╛ рдЕрдзрд┐рдХ рдзреАрдорд╛

- рдбреАрд▓рдХреНрд╕ рд╕рд┐рдЧреНрдирд▓ EventDispatcher рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рд▓рдЧрднрдЧ 4.5 рдЧреБрдирд╛ рдзреАрдорд╛ рд╣реИ (рдЕрдм рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рдпрд╣ рдирд╛рдо рдХреНрдпреЛрдВ рд╣реИ)

- NativeSignal - рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдкреНрд░рджрд░реНрд╢рди рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕рдорд╛рди рд╣реА рд╣реЛрдЧрд╛



рд╡рд╣ рдХреЛрдб рдЬрд┐рд╕ рдкрд░ рдирд┐рд╖реНрдкрд╛рджрди рдЧрддрд┐ рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛:



  public class Main extends Sprite { private static const COUNT:int = 10000; private var _signal: SignalItem; private var _dispatcher: DispatcherItem; private var t:int; private var i:int; private var test:int; public function Main() { _signal = new SignalItem(); _signal.signal.add(onSignal); test = 0; t = getTimer(); for (i = 0; i<COUNT; i++) { _signal.dispatch(); } t = getTimer()-t; trace("Main.Main(); signal : " + t); _dispatcher = new DispatcherItem(); _dispatcher.addEventListener(Event.CHANGE, onChange); test = 0; t = getTimer(); for (i = 0; i<COUNT; i++) { _dispatcher.dispatch(); } t = getTimer() - t; trace("Main.Main(); dispatcher : " + t); } private function onSignal(z:int): void { test++; } private function onChange(e:Event): void { test++; } } public class SignalItem { private var _signal:DeluxeSignal; public function SignalItem() { _signal = new DeluxeSignal(this); } public function get signal(): Signal { return _signal; } public function dispatch():void { _signal.dispatch(new GenericEvent()); } } public class DispatcherItem extends EventDispatcher{ public function DispatcherItem() { } public function dispatch ():void { dispatchEvent(new Event(Event.CHANGE)); } }
      
      







рдирд┐рд╖реНрдХрд░реНрд╖:



рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рд╕рд┐рдЧреНрдирд▓ рдПрдХ рд╣реА рдСрдмреНрдЬрд░реНрд╡рд░ рдкреИрдЯрд░реНрди рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН IEventDispatcher рдХрд╛ рд╡рд┐рдХрд▓реНрдкред рдкреНрд░рджрд░реНрд╢рди рдХрдо рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рджреЗрд╢реА рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рд╕реНрд╡реАрдХрд╛рд░реНрдп рд╕реНрддрд░ рдкрд░ рд╣реИред рд╕рд┐рдЧреНрдирд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕реА # рд╕реЗ рдПрдХреНрд╢рдирд╕реНрдХреНрд░рд┐рдкреНрдЯ рддрдХ рдЙрдирд╕реЗ рдмрдВрдзреЗ рдЕрдиреНрдп рд╕рдорд╛рдзрд╛рдиреЛрдВ рдХрд╛ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдЦреЛрд▓ рд╕рдХрддреЗ рд╣реИрдВред



рдкреНрд▓рд╕:

- рдЕрдзрд┐рдХ рдХреЙрдореНрдкреИрдХреНрдЯ рдХреЛрдб



рдХрдо:

-Performance



All Articles