рдПрдХ рдмрд╛рд░ рдЬрдм рдореБрдЭреЗ рдмрдЧ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдХреЗ рд▓рд┐рдП рдХрд╣рд╛ рдЧрдпрд╛ рдерд╛: рдЬрдм рдиреЗрд╕реНрдЯреЗрдб рдХреА рдПрдХ рдордирдорд╛рдиреА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЛ рдмрджрд▓рддреЗ рд╣реИрдВред рддреЛ, рд╕реНрд╡-рд╕реНрдЯрд╛рдЗрд▓ рд╡рд╛рд▓реЗ "рдЯреНрд╡реАрдирд░" рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреЗрддреЗ рд╣реИрдВ - рдПрдХ рд╡рд░реНрдЧ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕рдордп рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рдХреНрд╖реЗрдкрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдкрдиреА рд╕рд╛рдорд╛рдиреНрдп рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЗ рдмрдЬрд╛рдп, рдПрдХ рдЯреНрд╡рд┐рдирд░ рдореВрд▓реНрдпреЛрдВ рдХреЛ рдЫреЛрдбрд╝ рд╕рдХрддрд╛ рд╣реИ, рдПрдХ рдкрд░ рдЪрд┐рдкрдХ рд╕рдХрддрд╛ рд╣реИ, рдФрд░ рдХрднреА-рдХрднреА рд╕рдордп рдореЗрдВ рдПрдХ рдордирдорд╛рдирд╛ рдХреНрд╖рдг рдкрд░ рдЪрд░ рдХреЛ рдЕрдкрдиреЗ рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдкрд░ рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдХрд╛рдо рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рдкрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИред рдпрд╛рдЪрд┐рдХрд╛рдХрд░реНрддрд╛ рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдмрд╣реБ-рд╕реНрддрд░реАрдп рдШреЛрдВрд╕рд▓реЗ рдХреЗ рд╢рд┐рдХрд╛рд░ рдФрд░ рдореВрд▓ рдФрд░ рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреЗ рдмреАрдЪ рдмреЗрдореЗрд▓ рд╕рдВрдмрдВрдз рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рд╛ред
рдореИрдВрдиреЗ рд╕реНрдХреНрд░реИрдЪ рд╕реЗ рдПрдХ рдЯрд░реНрдирд░ рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рд╛ рдХрд┐ рдореЗрд░рд╛ рд╕рдВрд╕реНрдХрд░рдг рднреА рдЕрдЬреАрдм рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рд╕реНрддрд░ рдХреЗрд╡рд▓ рдПрдХ рдерд╛ рдФрд░ рдПрдлрдкреАрдПрд╕ рд╕реНрдерд┐рд░ рдерд╛ред рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдореЗрдВ, рдореИрдВрдиреЗ рдХреБрдЫ рдмрдврд╝рд┐рдпрд╛ рдлрд╝реНрд▓реИрд╢ рдЯреНрд░рд┐рдХреНрд╕ рд╕реАрдЦреЗ, рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХреНрдпрд╛ рдХрдард┐рдирд╛рдЗрдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ? рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдЯрд░реНрдирд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ, рд╣рдо рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рд▓рд┐рдВрдХ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдмрджрд▓рд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП, рдЕрдВрддрд┐рдо рдореВрд▓реНрдп рдФрд░ рд╕рдордп / рдлреНрд░реЗрдо, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЖрд╕рд╛рдиреА рд╕реЗ рдЕрдВрддрд┐рдо рд░реВрдк рд▓реЗрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╕рд╛рджрдЧреА рдХреЗ рд▓рд┐рдП, рд╣рдо рдлреНрд░реЗрдо-рджрд░-рдлреНрд░реЗрдо рдореВрд▓реНрдп рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдорд╛рдорд▓реЗ рдХреЛ рд▓реЗрддреЗ рд╣реИрдВ:
public class SomeTweener { private var _obj:Object; private var _paramName:String; private var _endValue:Number; private var _frames:Number; public function SomeTweener(obj:Object, paramName:String, endValue:Number, frames:Number) { _obj = obj; _paramName = paramName; _endValue = endValue; _frames = frames; } }
рд╣рд╛рдВ, рдпрд╣ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдореВрд▓реНрдп рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдХрдм рд╣реИред
рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЛ рджрд┐рдП рдЧрдП
DisplayObject рд╕реЗ
Event.ENTER_FRAME рдЗрд╡реЗрдВрдЯ рдХреА рд╕рджрд╕реНрдпрддрд╛ рд▓реЗрдВред рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рдо рдЖрд╕рд╛рди рддрд░реАрдХреЛрдВ рдХреА рддрд▓рд╛рд╢ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рдЯреНрд╡рд┐рди рдХреЛ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдмрдирд╛рддреЗ рд╣реИрдВред рдпрд╣реА рд╣реИ, рдПрдХ рд╣реИ рдЬреЛ рди рдХреЗрд╡рд▓
DisplayObject рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдмрджрд▓рддрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ as3 рдХреА рдПрдХ рдФрд░
рдЕрдирд┐рд░реНрджрд┐рд╖реНрдЯ рдЕрд▓реНрдк-рдЬреНрдЮрд╛рдд рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
DisplayList рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЧрдпрд╛ рдХреЛрдИ рднреА DisplayObject рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдкреНрд░рддрд┐ рдлреНрд░реЗрдо рдПрдХ рдЗрдирдкреБрдЯ рдИрд╡реЗрдВрдЯ рдкреНрд░рд╛рдкреНрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред
рдирд┐рд░реНрдорд╛рддрд╛ рдмрджрд▓реЗрдВ:
import flash.display.Shape; import flash.events.Event; import flash.events.IEventDispatcher; public class SomeTweener { private var _obj:Object; private var _paramName:String; private var _endValue:Number; private var _frames:Number; private var eventDispatcher:IEventDispatcher; public function SomeTweener(obj:Object, paramName:String, endValue:Number, frames:Number) { _obj = obj; _paramName = paramName; _endValue = endValue; _frames = frames; eventDispatcher = new Shape(); eventDispatcher.addEventListener(Event.ENTER_FRAME, tween); } private function tween(e:Event):void { } }
рдЖрдк рдЗрд╕реЗ рд╕реНрд╡рдпрдВ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
рдЯреНрд╡реАрди рд╡рд┐рдзрд┐ рдХреЛ рдирд┐рдпрдорд┐рдд рд░реВрдк рд╕реЗ рдПрдлрдкреАрдПрд╕ рдкрд░ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
рдЪрд▓рд┐рдП рдЖрдЧреЗ рдмрдврд╝рддреЗ рд╣реИрдВред рдлрд┐рд░ рд╕реЗ, рд╕рдмрд╕реЗ рд╕рд░рд▓ рддрд░реАрдХреЗ рд╕реЗ - рдкреНрд░рддреНрдпреЗрдХ рдХреЙрд▓ рдХреЙрд▓ рдореЗрдВ рд╣рдо рд╕рдВрдЪрд░рд┐рдд рдорд╛рди рдХреЛ рдПрдХ рд╣реА рдорд╛рди рдореЗрдВ рдмрджрд▓рддреЗ рд╣реИрдВ (рдЯрд╛рдЗрдкрд┐рдВрдЧ рдореЗрдВ рдЖрд╕рд╛рдиреА рд╣реЛрддреА рд╣реИ - рдЕрд░реНрдерд╛рддреН, рд╕рдорд╛рди)ред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЕрдВрддрд┐рдо рдФрд░ рд╢реБрд░реБрдЖрддреА рдорд╛рдиреЛрдВ рдФрд░ рдЯреНрд╡реАрдиреНрд╕ рдХреА рдЕрд╡рдзрд┐ рдХреЗ рдмреАрдЪ рдЕрдВрддрд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рд░рдЪрдирд╛рдХрд╛рд░ рдореЗрдВ рд╡реГрджреНрдзрд┐рд╢реАрд▓ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдХреА рдЧрдгрдирд╛ рдХрд░рдирд╛ рдмреЗрд╣рддрд░ рд╣реИ, рдФрд░ рд╡рд░реНрдЧ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рд▓рд┐рдЦреЗрдВред
рдЯреНрд╡реАрди рд╡рд┐рдзрд┐ рдореЗрдВ, рд╣рдо рдЬрд╛рдБрдЪреЗрдВрдЧреЗ рдХрд┐ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХрд┐рддрдиреЗ рдлреНрд░реЗрдо рдЯреНрд╡рд┐рдирд┐рдВрдЧ рд▓реЗ рд░рд╣реЗ рд╣реИрдВ рдФрд░ рд╕реЗрдЯ рд╡реИрд▓реНрдпреВ рддрдХ рдкрд╣реБрдБрдЪрдиреЗ рдкрд░, рдЯреНрд╡рд┐рд╕реНрдЯрд┐рдВрдЧ рдХреЛ рдмрд╛рдзрд┐рдд рдХрд░ рд░рд╣рд╛ рд╣реИ:
import flash.display.Shape; import flash.events.Event; import flash.events.IEventDispatcher; public class SomeTweener { private var _obj:Object; private var _paramName:String; private var _endValue:Number; private var _frames:Number; private var eventDispatcher:IEventDispatcher; private var increment:Number; public function SomeTweener(obj:Object, paramName:String, endValue:Number, frames:Number) { _obj = obj; _paramName = paramName; _endValue = endValue; _frames = frames; increment = (endValue - Number(obj[paramName])/frames; eventDispatcher = new Shape(); eventDispatcher.addEventListener(Event.ENTER_FRAME, tween); } private function tween(e:Event):void { if (_frames == 0) { e.currentTarget.removeEventListener(e.type, tween); return; } obj[paramName] += increment; _frames--; } }
рдЯрд░реНрдирд┐рдВрдЧ рдХреЗ рд╢реЗрд╖ "рдЯрд┐рдХреНрд╕" рдХреЗ рд▓рд┐рдП рдПрдХ рдХрд╛рдЙрдВрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ
рдлрд╝реНрд░реЗрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдареАрдХ рд╣реИ: рд╣рдо рд╕реЗрдХрдВрдб рдХреЗ рд╕рдордп рдХреЗ рд░реВрдк рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░рдиреЗ рдкрд░ рд╕рд╣рдордд рд╣реБрдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛,
рдлреНрд░реЗрдо рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдЫреЛрдбрд╝рдХрд░, рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдореЗрдВ рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдХреЛрдИ рднреА (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐) рд╣рдореЗрдВ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдореВрд▓реНрдп рдХреЛ рдкрд╛рд░рд┐рдд рдореВрд▓реНрдп рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рджреЛрд╖реА рдирд╣реАрдВ рдард╣рд░рд╛рдПрдЧрд╛ред
рдРрд╕рд╛ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ - рд╕рднреА рдкреНрд░рдХрд╛рд░ рд╕реЗ рддреИрдпрд╛рд░ рд╣реИред рдФрд░ рдпрд╣ рднреА рдХрд╛рдо рдХрд░реЗрдЧрд╛, рдФрд░ рдЬреНрдпрд╛рджрд╛рддрд░ рдорд╛рдорд▓реЛрдВ рдореЗрдВ - рд╕рд╣реА рдврдВрдЧ рд╕реЗ рднреАред рд▓реЗрдХрд┐рди рдПрдХ рдорд╛рдорд▓рд╛ рд╣реИ рдЬрдм рд╡рд╣ рдХрд┐рд╕реА рднреА рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╛рдорд╛рдиреНрдп рдкрд░рд┐рдгрд╛рдо рдирд╣реАрдВ рджреЗрдЧрд╛ред рдореИрдВ рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛:
import flash.display.Sprite; import flash.events.Event; public class SomeClass extends Sprite { private var sprite:Sprite; public function SomeClass() { sprite = new Sprite(); sprite.x = 1; sprite.addEventListener(Event.ENTER_FRAME, traceSome); var tween:SomeTweener = new SomeTweener(sprite, 'x', -1, 40); } private function traceSome(e:Event):void { trace(sprite.x); } }
рдЗрд╕ рдХреЛрдб рдХреЛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЯреНрд░реЗрд╕ рд╣рдореЗрдВ рдХреНрдпрд╛ рджреЗрдЧрд╛? рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рдЪрд╛рд▓реАрд╕ рд╕рдВрдЦреНрдпрд╛рдУрдВ рдХрд╛ рдПрдХ рд╕реНрддрдВрдн 0.05 рдХреА рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдореЗрдВ рдШрдЯрддрд╛ рд╣реИред рд╡реНрдпрд╡рд╣рд╛рд░ рдореЗрдВ, рдХрд┐рд╕реА рднреА
DisplayObject рдореЗрдВ рдХрдо рд╕реЗ рдХрдо рдПрдХ рдФрд░ рдЕрдиреИрдЪреНрдЫрд┐рдХ рд╕реБрд╡рд┐рдзрд╛ рд╣реИ: рдЗрд╕рдХреЗ рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ (рдФрд░ рд╕рдВрднрд╡рддрдГ рдХреБрдЫ рдЕрдиреНрдп рдЧреБрдг) рд╣рдореЗрд╢рд╛ 0.05 рдХреЗ рдЧреБрдгрдХ рд╣реЛрддреЗ рд╣реИрдВред рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╕реЗ рдЕрдзрд┐рдХ рдорд╛рди рджреЗрдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛: рдЕрдЧрд▓реА рдмрд╛рд░ рдЬрдм рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рддреЛ рдЗрд╕реЗ рдирд┐рдХрдЯрддрдо рдмрд╣реБ рд╕реЗ рд╢реВрдиреНрдп рддрдХ рдкреВрд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрд╕ рдкреНрд░рднрд╛рд╡ рд╕реЗ рд╣рдореЗрдВ рдХреЛрдИ рдЦрддрд░рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП (рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рд╕реНрд╡рдпрдВ рдЗрд╕рдХреА рд╕рднреА рдорд╣рд┐рдорд╛ рдореЗрдВ рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ), рд▓реЗрдХрд┐рди, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдлреНрд░реЗрдо рдХреЗ рдореВрд▓реНрдп рдореЗрдВ рд╡реГрджреНрдзрд┐, рдЬрд┐рд╕рдХреЗ рджреМрд░рд╛рди рдЯреНрд╡рд┐рдирд┐рдВрдЧ 80 рддрдХ рджрд┐рдЦрд╛рдИ рджреЗрдиреА рдЪрд╛рд╣рд┐рдП, рд╣рдореЗрдВ 0.025 рдФрд░ рдкреНрд░рдХреНрд╖реЗрдкрд╡рдХреНрд░ "рдлреНрд░реАрдЬ" рдХреЗ рдмрд░рд╛рдмрд░ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдорд┐рд▓рддреА рд╣реИ тАЬрд╢реВрдиреНрдп рдкрд░, рдХрднреА рдирд╣реАрдВ рдкрд╣реБрдВрдЪрддрд╛ -1ред
рдПрдХ рдФрд░ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИред
FlashPlayer рд░рдирдЯрд╛рдЗрдо рдореЗрдВ, рд╕рдВрдЦреНрдпрд╛ рдкреНрд░рдХрд╛рд░ 64-рдмрд┐рдЯ рдлрд╝реНрд▓реЛрдЯрд┐рдВрдЧ-рдкреЙрдЗрдВрдЯ рд╕рдВрдЦреНрдпрд╛ рд╣реИред рдЗрд╕ рд╡рдЬрд╣ рд╕реЗ, рдЕрдХреНрд╕рд░ рдУрд╡рд░рд▓реЗ рд╣реЛрддреЗ рд╣реИрдВред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рд╕рдордЭрд╛рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛:
trace(String(-.35 - .05))
рдпрд╣ рдПрдХ рдлреНрд▓реИрд╢ рдкреНрд░рдХрд╛рд░
рд╕рдВрдЦреНрдпрд╛ рдХреЗ рд╕рднреА рдореВрд▓реНрдпреЛрдВ рдХреЗ рд╕рд╛рде рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИ (рдЬрд┐рд╕рдореЗрдВ
DisplayObject рд╕рдордиреНрд╡рдп рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ), рд╡рд╣рд╛рдБ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рд╣реИред рдпрд╣ рдмрд┐рд▓рдХреБрд▓ рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ SomeClass рд╡рд░реНрдЧ рдХреА рдЯреНрд░реЗрд╕рд╕реЛрдо рд╡рд┐рдзрд┐ рдХрд╛ рдЙрджрд╛рд╣рд░рдг 40 рдлреНрд░реЗрдореЛрдВ рдХреЗ рд▓рд┐рдП рдЯреНрд╡рд┐рди рдХрд░рдиреЗ рдкрд░ рднреА рд╡рд┐рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рдЕрднреНрдпрд╛рд╕ рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐
рд╕реНрдкреНрд░рд╛рдЗрдЯред X рдкреНрд░рддреНрдпреЗрдХ рдлреНрд░реЗрдо рдХреЗ рд▓рд┐рдП -0.35 рдХреЗ рдореВрд▓реНрдп рд╕реЗ рдареАрдХ рд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдирд╣реАрдВ рд╣реЛ рдкрд╛рдПрдЧрд╛ред рдЪрдХреНрд░ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИ:
- рдСрдмреНрдЬреЗрдХреНрдЯ рдлрд╝реАрд▓реНрдб рдХрд╛ рдорд╛рди рд▓реЗрдВ (-0.35)
- рд╣рдо рдЗрд╕реЗ рд╡реЗрддрди рд╡реГрджреНрдзрд┐ (-0.35 + (-0.05) = -0.39 (9) 97) рдХреЗ рдорд╛рди рд╕реЗ рдмрдврд╝рд╛рддреЗ рд╣реИрдВ
- рд╣рдо рдЗрд╕реЗ рд╡рд╕реНрддреБ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рд▓рд┐рдЦрддреЗ рд╣реИрдВ (-0.39 (реп) реп the)
- (рдЫрд┐рдкреА рдЖрд╡рд╢реНрдпрдХ рд╡рд╕реНрддреБ) DisplayObject рдЙрджрд╛рд╣рд░рдг рд╕рдордиреНрд╡рдп рдлрд╝реАрд▓реНрдб рдорд╛рди рдЧреЛрд▓ рд╣реИ (-0.35)
- рд╣рдо рдЕрдЧрд▓реЗ рдлреНрд░реЗрдо рдореЗрдВ рдкреНрд░рд╡реЗрд╢ рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдСрдмреНрдЬреЗрдХреНрдЯ рдлреАрд▓реНрдб рдХрд╛ рдорд╛рди рд▓реЗрддреЗ рд╣реИрдВ (-0.35)
- рдЧреЛрдЯреЛ реи
рдЫрд┐рдкреЗ рд╣реБрдП рдЪреМрдереЗ рдмрд┐рдВрджреБ рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдкрд╛рдирд╛ рдЕрд╕рдВрднрд╡ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐,
рд╕рдВрдЦреНрдпрд╛ рдЧрдгрд┐рдд рдХреА рд╕рд╣рдЬреАрд╡рди рдХреЗ рдХрд╛рд░рдг рддреНрд░реБрдЯрд┐ рдФрд░
DisplayObject рд╕рдордиреНрд╡рдп рдореВрд▓реНрдпреЛрдВ рдХреА рд╕реАрдорд╛рдПрдБ рд╣рдореЗрдВ рдмрд┐рд▓реНрдХреБрд▓ рддреАрди рдЕрддрд┐рд░рд┐рдХреНрдд рд▓рд╛рдЗрдиреЛрдВ рдХреА рд▓рд╛рдЧрддред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЪрдХреНрд░ рдХреЗ рдкрд╣рд▓реЗ рдФрд░ рдкрд╛рдВрдЪрд╡реЗрдВ рдкреИрд░рд╛рдЧреНрд░рд╛рдл рдХреЛ рдмрджрд▓рдиреЗ рдФрд░ рдорд╛рди рдХреЛ рд╕реНрдЯреЛрд░ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рд╕реНрдерд╛рдпреА рд░реВрдк рд╕реЗ "рдЦрд░рд╛рдм" рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЕрдкрдирд╛ рд╕рдордп рд╢реБрд░реВ рдХрд░реЗрдВ:
import flash.display.Shape; import flash.events.Event; import flash.events.IEventDispatcher; public class SomeTweener { private var _obj:Object; private var _paramName:String; private var _endValue:Number; private var _frames:Number; private var eventDispatcher:IEventDispatcher; private var increment:Number; private var currentValue:Number; public function SomeTweener(obj:Object, paramName:String, endValue:Number, frames:Number) { _obj = obj; _paramName = paramName; _endValue = endValue; _frames = frames; currentValue = Number(obj[paramName]); increment = (endValue - Number(obj[paramName])/frames; eventDispatcher = new Shape(); eventDispatcher.addEventListener(Event.ENTER_FRAME, tween); } private function tween(e:Event):void { if (_frames == 0) { e.currentTarget.removeEventListener(e.type, tween); return; } currentValue += increment; obj[paramName] = currentValue; _frames--; } }
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, MVC рдХреЛ рдЗрд╕рдХреЗ рд╕рд╛рде рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ? :-)
рдкреБрдирд╢реНрдЪ: рд╣рд╛рдБ, рдореМрдЬреВрджрд╛ рдЯреНрд╡рд┐рди рдХреЛрдб рдореЗрдВ рд╕реБрдзрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд▓рдВрдмрд┐рдд рдкреНрд░рд╛рд░рдВрдн, рд╕рдВрджреЗрд╢ рдЬреЛрдбрд╝реЗрдВред рдЖрдк рд╕рд╣рдЬрддрд╛ рдФрд░ рдЕрдиреНрдп рдмрд╣реБ-рдХреНрд╖реЗрддреНрд░ рдЬреБрдбрд╝рд╡рд╛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЗрд╕ рдХрд╛рд░реНрдп рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдо рдЗрд╕реЗ рд╣реЛрдорд╡рд░реНрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдЫреЛрдбрд╝ рджреЗрдВрдЧреЗред