Adobe Flash Platform * Памяншэнне загрузкі ЦП

  1. Ўдасканаленыя магчымасці Flash Player 10.1 для выкарыстання рэсурсаў ЦП
  2. Паўза, зніжэнне хуткасці і аднаўленне
  3. кіраванне экземплярамі
  4. спячы рэжым
  5. Замарожванне і размарожванне аб'ектаў
  6. Актывацыя і адключэнне падзей
  7. Узаемадзеянне з мышшу
  8. Параўнанне таймераў з падзеямі ENTER_FRAME
  9. прыкмета анімацыі

Іншым важным напрамкам аптымізацыі з'яўляецца загрузка цэнтральнага працэсара

Іншым важным напрамкам аптымізацыі з'яўляецца загрузка цэнтральнага працэсара. Аптымізацыя загрузкі ЦП ўплывае на агульную прадукцыйнасць, а такім чынам, і на час працы мабільнага прылады ад акумулятара.

Ўдасканаленыя магчымасці Flash Player 10.1 для выкарыстання рэсурсаў ЦП

У прайгравальніку Flash Player 10.1 прадстаўлены дзве новыя функцыі, якія дазваляюць паменшыць загрузку цэнтральнага працэсара. Гэтыя функцыі дазваляюць прыпыняць і аднаўляць прайграванне SWF-змесціва, калі яно становіцца закадровым, і абмяжоўваюць колькасьць асобнікаў Flash Player на старонцы.

Паўза, зніжэнне хуткасці і аднаўленне

Заўвага. Функцыя паўзы, зніжэння хуткасці і аднаўлення не ўжываецца да прыкладанняў Adobe® AIR®.

Каб аптымізаваць выкарыстанне рэсурсаў ЦП і акумулятара, у прайгравальнік Flash Player 10.1 дададзеная новая функцыя, прызначаная для працы з неактыўнымі экземплярамі. Яна дазваляе знізіць нагрузку на ЦП за кошт таго, што калі змесціва з'яўляецца ці знікае з экрана, прайграванне SWF-файла адпаведна прыпыняецца і аднаўляецца. Дзякуючы гэтай функцыі прайгравальнік Flash Player вызваляе ўсю магчымую памяць шляхам выдалення ўсіх аб'ектаў, якія могуць быць паўторна створаны пры аднаўленні прайгравання змесціва. Змесціва лічыцца закадровым, калі ўсё змесціва знаходзіцца за межамі экрана.

SWF-змесціва можа стаць закадровым ў двух выпадках:

  • Падчас прагорткі старонкі карыстальнікам SWF-змесціва перамяшчаецца за межы экрана.

    У гэтым выпадку любы прайграванне відэа ці аўдыё працягвае выконвацца, але візуалізацыя спыняецца. Калі аўдыё або відэа не прайграваецца, каб выкарыстанне або выкананне кода ActionScript ня прыпынялася, задайце для HTML-параметру hasPriority значэнне true. Аднак памятайце, што візуалізацыя SWF-змесціва прыпыняецца, калі змесціва з'яўляецца закадровым або схаваным па-за залежнасці ад значэння HTML-параметру hasPriority.

  • Пры адкрыцці укладкі ў браўзэры SWF-змесціва перамяшчаецца на задні план.

    У гэтым выпадку незалежна ад значэння тэга HTML hasPriority хуткасць прайгравання SWF-змесціва зніжаецца да 2-8 кадраў у секунду. Прайграванне аўдыё і відэа спыняецца і візуалізацыя змесціва ня апрацоўваецца, пакуль SWF-змесціва зноў не стане бачным.

У прайгравальніку Flash Player 11.2 і больш позніх версій, выконваліся ў браўзэрах на настольных кампутарах Windows і Mac, у дадатку можна выкарыстоўваць падзея ThrottleEvent. Flash Player адпраўляе падзея ThrottleEvent ў выпадку паўзы, зніжэння хуткасці або аднаўлення прайгравання.

Падзея ThrottleEvent - гэта шматадрасных падзея, якое адпраўляецца усімі аб'ектамі EventDispatcher, для якіх зарэгістраваныя прослушиватели дадзенага падзеі. Дадатковыя звесткі аб шматадрасных падзеях см. Ў апісанні класа DisplayObject .

кіраванне экземплярамі

Заўвага. Функцыя кіравання экземплярамі не ўжываецца да прыкладанняў Adobe® AIR®.

Ць Flash Player 10.1 з'явіўся новы параметр HTML - hasPriority.

<Param name = "hasPriority" value = "true" />

Гэта функцыя абмяжоўвае колькасць асобнікаў Flash Player, якія запускаюцца на старонцы. Гэта эканоміць рэсурсы ЦП і акумулятара. Мэтай з'яўляецца прызначэнне пэўнага прыярытэту SWF-змесціва, дзякуючы чаму адно змесціва становіцца больш важным у параўнанні з іншым змесцівам на старонцы. Разгледзім просты прыклад: карыстальнік праглядае вэб-сайт, а на старонцы паказальнікаў размешчаны тры розных SWF-файла. Адзін з іх з'яўляецца бачным, другога - часткова бачным на экране, а апошні - закадровым, якія патрабуюць пракруткі. Першыя дзве анімацыі запускаюцца ў звычайным рэжыме, а запуск апошняй анімацыі адкладаецца, пакуль яна не стане бачнай. Гэты сцэнар уяўляе паводзіны па змаўчанні, калі параметр hasPriority адсутнічае або мае значэнне false. Для забеспячэння запуску SWF-файла, нават калі ён знаходзіцца за межамі экрана, задайце для параметра hasPriority значэнне true. Аднак па-за залежнасці ад значэння параметру hasPriority візуалізацыя SWF-файла, які нябачны для карыстальніка, заўсёды прыпыняецца.

Заўвага. Калі даступных рэсурсаў ЦП недастаткова, новыя асобнікі Flash Player не запускаюцца аўтаматычна, нават калі для параметру hasPriority зададзена значэнне true. Калі новыя асобнікі ствараюцца з выкарыстаннем JavaScript пасля загрузкі старонкі, гэтыя асобнікі будуць ігнараваць сцяг hasPriority. Любое змесціва памерам 1x1 або 0x0 кропак запускаецца, прадухіляючы адкладзены запуск SWF-файлаў памочніка, калі вэб-майстар не ўключыў сцяг hasPriority. Аднак SWF-файлы будуць па-ранейшаму прайгравацца па пстрычцы мышы. Гэта паводзіны называецца «прайграваннем па пстрычцы» (click to play).

На схемах ніжэй паказана, як працуе параметр hasPriority з рознымі значэннямі.

спячы рэжым

У прайгравальніках Flash Player 10.1 і AIR 2.5 прадстаўлена новая функцыя для мабільных прылад, якая дазваляе паменшыць загрузку ЦП і, як вынік, падоўжыць тэрмін службы акумулятара. Гэтая функцыя працуе разам з падсветкай, прадугледжанай ў многіх мабільных прыладах. Напрыклад, калі мабільнае прыкладанне запушчана і карыстальнік больш не выкарыстоўвае прылада, серада выканання выяўляе, калі падсвятленне пераходзіць у спячы рэжым. Затым ён скідае частату кадраў да 4 кадраў у секунду і прыпыняе візуалізацыю. Для прыкладанняў AIR пераход у спячы рэжым выконваецца, калі праграма перамяшчаецца на задні план.

Код ActionScript працягвае выконвацца ў спячым рэжыме, як калі б ўласцівасці Stage.frameRate было прысвоена значэнне 4 кадра ў секунду. Але этап візуалізацыі прапускаецца, таму карыстальнік не бачыць таго, што прайгравальнік працуе з частатой 4 кадра ў секунду. Частата кадраў, роўная 4 кадрах у секунду, была абраная замест нуля, паколькі яна дазваляе захоўваць адкрытымі усе злучэнні (NetStream, Socket і NetConnection). Пры ўсталёўцы значэння, роўнага нулю, будуць разарваныя ўсе адкрытыя злучэння. Частата абнаўлення, роўная 250 мс (4 кадра ў секунду) была абраная, паколькі многія вытворцы прылад выкарыстоўваюць гэтую частату ў якасці частоты абнаўлення. Выкарыстанне гэтага значэння дазваляе падтрымліваць частату кадраў асяроддзя выканання прыкладна на тым жа ўзроўні, што і частата кадраў самага тэлефона.

Заўвага. Калі асяроддзю выканання працуе ў спячым рэжыме, ўласцівасць Stage.frameRate вяртае частату кадраў зыходнага SWF-файла, а не 4 к / с.

Калі падсвятленне зноў перакладаецца ў актыўны рэжым, візуалізацыя аднаўляецца. Для частоты кадраў аднаўляецца зыходнае значэнне. Разгледзім прыкладанне мультымедыйнага прайгравальніка, у якім карыстальнік прайгравае музыку. Калі экран пераходзіць у спячы рэжым, серада выканання рэагуе ў залежнасці ад тыпу прайграванага змесціва. Далей прыводзіцца спіс сітуацый, а таксама апісана адпаведнае паводзіны асяроддзя выканання.

  • Падсвятленне пераходзіць у спячы рэжым, прайграваецца змесціва, выдатнае ад A / V. Візуалізацыя прыпыняецца, усталёўваецца частата 4 кадра ў секунду.

  • Падсвятленне пераходзіць у спячы рэжым, прайграваецца змесціва A / V. Асяроддзю выканання прымусова ўключае падсвятленне, забяспечваючы бесперапыннае прайграванне.

  • Падсвятленне пераходзіць з спячага рэжыму ў актыўны рэжым. Асяроддзю выканання задае для таймера зыходны параметр таймера SWF-файла і аднаўляе візуалізацыю.

  • Прайгравальнік Flash Player прыпыняе працу пры прайграванні змесціва A / V. Прайгравальнік Flash Player аднаўляе для стану падсвятлення сістэмнае паводзіны па змаўчанні, паколькі змесціва A / V больш не прайграваецца.

  • Мабільнае прылада атрымлівае выклік пры прайграванні змесціва A / V. Візуалізацыя прыпыняецца, усталёўваецца частата 4 кадра ў секунду.

  • Спячы рэжым падсвятлення адключаны ў мабільным прыладзе. Асяроддзю выканання працуе ў звычайным рэжыме.

Калі для падсвятлення ўключаецца спячы рэжым, візуалізацыя прыпыняецца і частата кадраў памяншаецца. Гэтая функцыя дазваляе знізіць загрузку ЦП, але на яе нельга спадзявацца пры стварэнні сапраўднай паўзы, напрыклад у гульнявым дадатку.

Заўвага. Калі асяроддзю выканання пераходзіць у спячы рэжым або выходзіць з яго, падзеі ActionScript не адпраўляюцца.

Замарожванне і размарожванне аб'ектаў

Для аптымізацыі кода заўсёды замарожваць і размарожваць аб'екты. Замарожванне і размарожванне асабліва важныя для экранных аб'ектаў. Нават калі экранныя аб'екты больш не ўключаны ў спіс адлюстравання і чакаюць выдалення пры зборцы смецця, яны па-ранейшаму могуць выкарыстоўваць код, які ўплывае на загрузку ЦП. Напрыклад, яны па-ранейшаму могуць выкарыстоўваць падзея Event.ENTER_FRAME. Такім чынам, вельмі важна правільна замарожваць і размарожваць аб'екты. Для гэтага выкарыстоўвайце падзеі Event.REMOVED_FROM_STAGE і Event.ADDED_TO_STAGE. Ніжэй паказаны код фрагмента роліка, прайграванага ў працоўнай вобласці, з функцыямі кіравання з клавіятуры.

// Listen to keyboard events stage.addEventListener (KeyboardEvent.KEY_DOWN, keyIsDown); stage.addEventListener (KeyboardEvent.KEY_UP, keyIsUp); // Create object to store key states var keys: Dictionary = new Dictionary (true); function keyIsDown (e: KeyboardEvent): void {// Remember that the key was pressed keys [e.keyCode] = true; if (e.keyCode == Keyboard.LEFT || e.keyCode == Keyboard.RIGHT) {runningBoy.play (); }} Function keyIsUp (e: KeyboardEvent): void {// Remember that the key was released keys [e.keyCode] = false; for each (var value: Boolean in keys) if (value) return; runningBoy.stop (); } RunningBoy.addEventListener (Event.ENTER_FRAME, handleMovement); runningBoy.stop (); var currentState: Number = runningBoy.scaleX; var speed: Number = 15; function handleMovement (e: Event): void {if (keys [Keyboard.RIGHT]) {e.currentTarget.x + = speed; e.currentTarget.scaleX = currentState; } Else if (keys [Keyboard.LEFT]) {e.currentTarget.x - = speed; e.currentTarget.scaleX = -currentState; }}

Пры націску кнопкі «Выдаліць» фрагмент роліка выдаляецца са спісу адлюстравання.

// Show or remove running boy showBtn.addEventListener (MouseEvent.CLICK, showIt); removeBtn.addEventListener (MouseEvent.CLICK, removeIt); function showIt (e: MouseEvent): void {addChild (runningBoy); } Function removeIt (e: MouseEvent): void {if (contains (runningBoy)) removeChild (runningBoy); }

Нават пасля выдалення з спісу адлюстравання фрагмент роліка па-ранейшаму адпраўляе падзея Event.ENTER_FRAME. Фрагмент роліка ўсё яшчэ выконваецца, але не візуалізуецца. У гэтай сітуацыі неабходна праслухоўваць адпаведныя падзеі і выдаляць прослушиватели, каб код, які падвышае нагрузку на ЦП, ужо не выконваўся.

// Listen to Event.ADDED_TO_STAGE and Event.REMOVED_FROM_STAGE runningBoy.addEventListener (Event.ADDED_TO_STAGE, activate); runningBoy.addEventListener (Event.REMOVED_FROM_STAGE, deactivate); function activate (e: Event): void {// Restart everything e.currentTarget.addEventListener (Event.ENTER_FRAME, handleMovement); } Function deactivate (e: Event): void {// Freeze the running boy - consumes fewer CPU resources when not shown e.currentTarget.removeEventListener (Event.ENTER_FRAME, handleMovement); e.currentTarget.stop (); }

Пры націску на кнопку "Паказаць" прайграванне аднаўляецца, зноў праслухоўваюцца падзеі Event.ENTER_FRAME, а кіраванне ролікам з клавіятуры працуе карэктна.

Заўвага. Калі экранны аб'ект выдаляецца са спісу адлюстравання, заданне для адпаведнай спасылкі значэння null пасля яго выдалення не забяспечвае замарожванне аб'екта. Калі зборшчык смецця не запускаецца, аб'ект працягвае выкарыстоўваць рэсурсы памяці і ЦП, нават калі аб'ект больш не адлюстроўваецца. Каб аб'ект выкарыстаў мінімум рэсурсаў ЦП, пераканайцеся, што ён цалкам замарожаны пры выдаленні з спісу адлюстравання.

Пачынаючы з версій Flash Player 10 і AIR 1.5 рэалізавана наступнае паводзіны. Калі кропка прайгравання выяўляе пустой кадр, экранны аб'ект замарожваецца аўтаматычна, нават калі распрацоўшчык не рэалізаваў паводзіны замарожвання.

Прынцып замарожвання таксама важны пры загрузцы аддаленага змесціва з выкарыстаннем класа Loader. Пры выкарыстанні класа Loader ў прайгравальніку Flash Player 9 і AIR 1.0 трэба было ўручную размарожваць змесціва шляхам праслухоўвання падзеі Event.UNLOAD, адпраўленага аб'ектам LoaderInfo. Кожны аб'ект трэба было размарожваць ўручную, што з'яўлялася нетрывіяльнай задачай. У прайгравальніках Flash Player 10 і AIR 1.5 у класе Loader прадстаўлены новы важны метад unloadAndStop (). Гэты метад дазваляе выгрузіць SWF-файл, аўтаматычна размарозіць кожны аб'ект у загружаным SWF-файле і прымусова запусціць выкананне зборкі смецця.

У наступным кодзе SWF-файл загружаецца, а затым выгружаецца з выкарыстаннем метаду unload (), што патрабуе дадатковай апрацоўкі і замарожвання ўручную.

var loader: Loader = new Loader (); loader.load (new URLRequest ( "content.swf")); addChild (loader); stage.addEventListener (MouseEvent.CLICK, unloadSWF); function unloadSWF (e: MouseEvent): void {// Unload the SWF file with no automatic object deactivation // All deactivation must be processed manually loader.unload (); }

Найлепшым прыёмам з'яўляецца выкарыстанне метаду unloadAndStop (), у якім прадугледжаны ўнутраная апрацоўка замарожвання і прымусовае ўключэнне працэсу зборкі смецця.

var loader: Loader = new Loader (); loader.load (new URLRequest ( "content.swf")); addChild (loader); stage.addEventListener (MouseEvent.CLICK, unloadSWF); function unloadSWF (e: MouseEvent): void {// Unload the SWF file with automatic object deactivation // All deactivation is handled automatically loader.unloadAndStop (); }

Пры выкліку метаду unloadAndStop () выконваюцца наступныя дзеянні.

  • Спыняецца прайграванне гуку.

  • Прослушиватели, зарэгістраваныя для асноўнай часовай шкалы SWF-файла, выдаляюцца.

  • Аб'екты таймера спыняюцца.

  • Апаратныя перыферыйныя прылады (напрыклад, камера і мікрафон) вызваляюцца.

  • Кожны фрагмент роліка спыняецца.

  • Адпраўка падзей Event.ENTER_FRAME, Event.FRAME_CONSTRUCTED, Event.EXIT_FRAME, Event.ACTIVATE і Event.DEACTIVATE спыняецца.

Актывацыя і адключэнне падзей

Дзве падзеі (Event.ACTIVATE і Event.DEACTIVATE) дапамогуць наладзіць прыкладанне такім чынам, каб для яго патрабавалася як мага менш рэсурсаў ЦП. Гэтыя падзеі дазваляюць выявіць, калі асяроддзю выканання атрымлівае або губляе фокус. Такім чынам, код можна аптымізаваць у адпаведнасці са зменамі кантэксту. Наступны код праслухоўвае абодва падзеі і дынамічна змяняе частату кадраў да нуля, калі праграма губляе фокус. Напрыклад, прыкладанне можа страціць фокус, калі карыстальнік пераключыцца на іншую ўкладку або перамесціць дадатак на задні план.

var originalFrameRate: uint = stage.frameRate; var standbyFrameRate: uint = 0; stage.addEventListener (Event.ACTIVATE, onActivate); stage.addEventListener (Event.DEACTIVATE, onDeactivate); function onActivate (e: Event): void {// restore original frame rate stage.frameRate = originalFrameRate; } Function onDeactivate (e: Event): void {// set frame rate to 0 stage.frameRate = standbyFrameRate; }

Калі праграма зноў атрымлівае фокус, аднаўляецца зыходнае значэнне частоты кадраў. Замест значнага змены частоты кадраў можна ўжыць іншыя спосабы аптымізацыі, напрыклад замарожванне і размарожванне аб'ектаў.

З дапамогай актывацыі і адключэння падзей можна рэалізаваць аналагічны механізм для функцыі паўзы і аднаўлення, якая часам сустракаецца на мабільных прыладах і нетбуках.

Узаемадзеянне з мышшу

Пры працы з інтэрактыўным аб'ектам, такім як фрагмент роліка або спрайт, серада выканання выконвае уласны код для выяўлення і апрацоўкі ўзаемадзеяння з мышшу. Калі на экране шмат інтэрактыўных аб'ектаў, тым больш калі яны накладзеныя адзін на аднаго, выяўленне ўзаемадзеяння з мышшу патрабуе значных рэсурсаў ЦП. Каб пазбегнуць непатрэбнай апрацоўкі, адключыце ўзаемадзеянне з мышшу аб'ектаў, якім яно не патрабуецца. Ніжэй паказана выкарыстанне ў кодзе уласцівасцяў mouseEnabled і mouseChildren.

// Disable any mouse interaction with this InteractiveObject myInteractiveObject.mouseEnabled = false; const MAX_NUM: int = 10; // Create a container for the InteractiveObjects var container: Sprite = new Sprite (); for (var i: int = 0; i <MAX_NUM; i ++) {// Add InteractiveObject to the container container.addChild (new Sprite ()); } // Disable any mouse interaction on all the children container.mouseChildren = false;

Адключэнне ўзаемадзеяння з мышшу эканоміць рэсурсы ЦП, а такім чынам, і акумулятара на мабільных прыладах, таму па магчымасці адключайце яго.

Параўнанне таймераў з падзеямі ENTER_FRAME

Для неанимированного змесціва, выкананага на працягу доўгага часу, таймеры пераважней падзей Event.ENTER_FRAME.

У ActionScript 3.0 прадугледжана два спосабу выкліку функцыі праз пэўныя інтэрвалы. Першы - з дапамогай падзеі Event.ENTER_FRAME, які адпраўляецца экраннымі аб'ектамі (DisplayObject). Другі - з дапамогай таймера. Распрацоўшчыкі ActionScript часта выкарыстоўваюць першы спосаб (падзея ENTER_FRAME). Падзея ENTER_FRAME адпраўляецца ў кожным кадры, таму інтэрвал выкліку функцыі залежыць ад бягучай частоты кадраў. Частата кадраў задаецца уласцівасцю Stage.frameRate. Аднак у шэрагу выпадкаў лепш выкарыстоўваць таймер, чым падзея ENTER_FRAME. Напрыклад, калі ў вас няма анімацыі, але вам патрабуецца, каб код выклікаўся праз зададзеныя інтэрвалы, варта выкарыстоўваць таймер.

Таймер дзейнічае падобна падзеі ENTER_FRAME, аднак падзея можа адпраўляцца без прывязкі да частаце кадраў. Такія паводзіны дае прастору для аптымізацыі. Разгледзім у якасці прыкладу прайгравальнік відэа. У гэтым выпадку высокая частата кадраў не патрэбна, так як рух кантралюецца толькі дадаткам.

Заўвага. Частата кадраў не ўплывае на відэа, таму што відэа не ўбудавана ў часовую шкалу. Замест гэтага відэа загружаецца дынамічна, шляхам паслядоўнай загрузкі альбо струменевага відэа.

У гэтым прыкладзе частата кадраў складае 10 да / с. Таймер абнаўляе элементы кіравання з частатой раз у секунду. Метад updateAfterEvent () аб'екта TimerEvent дазваляе павысіць частату абнаўлення. Гэты метад выклікае абнаўленне экрана пры кожнай адпраўцы падзеі. Гэта праілюстравана ў наступным кодзе.

// Use a low frame rate for the application stage.frameRate = 10; // Choose one update per second var updateInterval: int = 1000; var myTimer: Timer = new Timer (updateInterval, 0); myTimer.start (); myTimer.addEventListener (TimerEvent.TIMER, updateControls); function updateControls (e: TimerEvent): void {// Update controls here // Force the controls to be updated on screen e.updateAfterEvent (); }

Выклік метаду updateAfterEvent () не змяняе частату кадраў. Ён простая прымушае Серада выканання абнаўляць на экране змененае змесціва. Гадзінная шкала па-ранейшаму абнаўляецца в е частатой 10 так / с. Майце на ўвазе, Што дакладнасць таймераў І падзей ENTER_FRAME Можа зніжацца пры выкананні на низкопроизводительных прыладах Або Ў выпадках, калі функцыі апрацоўніка падзей ўтрымліваюць код, які патрабуе інтэнсіўнай апрацоўкі. Як і частата кадраў SWF-файла, частата абнаўлення кадраў таймера можа залежаць ад шэрагу фактараў.

Кожны кадр асяроддзя выканання адпраўляе падзея enterFrame ўсім экранным аб'ектах са спісу адлюстравання. Можна зарэгістраваць прослушиватели падзеі enterFrame і для некалькіх экранных аб'ектаў, аднак гэта прывядзе да павелічэння аб'ёму кода, выкананага ў кожным кадры. Замест гэтага выкарыстоўвайце адзіны цэнтралізаваны апрацоўшчык enterFrame для выканання ўсяго аб'ёму кода ў кожным кадры. Цэнтралізацыя кода аблегчыць кіраванне часта выкананым кодам.

Аналагічным чынам ідзе сітуацыя і з аб'ектамі Timer. Стварэнне і адпраўка падзей мноствам аб'ектаў Timer моцна нагружаюць код. Калі неабходна запусціць розныя аперацыі з рознымі інтэрваламі, ніжэй прыводзяцца некаторыя рэкамендуемыя альтэрнатыўныя варыянты:

  • Скароціце да мінімуму колькасць аб'ектаў Timer і групавых аперацый у залежнасці ад частаты іх выканання.

    Напрыклад, выкарыстоўвайце асобнік Timer для частых аперацый, якія неабходна выконваць кожныя 100 мілісекунд. Затым выкарыстоўвайце яшчэ адзін асобнік Timer для частых аперацый, якія неабходна выконваць менш часта, кожныя 2000 мілісекунд.

  • Выкарыстоўвайце адзіны аб'ект Timer, у якім перыяд выканання розных аперацый зададзены ва ўласцівасці delay.

    Да прыкладу, неабходна, каб адны аперацыі выконваліся кожныя 100 мілісекунд, а іншыя - кожныя 200 мілісекунд. У гэтым выпадку выкарыстоўвайце адзін аб'ект Timer, ўласцівасць delay якога наладжана на 100 мілісекунд. У апрацоўшчыку падзей timer дадайце ўмоўную канструкцыю, пасля чаго кожная другая аперацыя будзе выконвацца з інтэрвалам 200 мілісекунд. Наступны прыклад ілюструе такі падыход:

    var timer: Timer = new Timer (100); timer.addEventListener (TimerEvent.Timer, timerHandler); timer.start (); var offCycle: Boolean = true; function timerHandler (event: TimerEvent): void {// Do things that happen every 100 ms if (! offCycle) {// Do things that happen every 200 ms} offCycle =! offCycle; }

Калі апрацоўшчык падзеі timer аб'екта Timer выконвае аперацыі толькі пры пэўных умовах, выклічце метад stop () аб'екта Timer, калі ні адно з умоў не прымае значэнне true.

У кожным кадры ў фазе візуалізацыі вырабляецца перамалёўкі змяніліся элементаў працоўнай вобласці. Калі вобласць перамалёўкі вялікая, або калі вобласць перамалёўкі невялікая, але ўтрымлівае мноства складаных экранных аб'ектаў, асяроддзі выканання патрабуецца больш часу для візуалізацыі. Каб даведацца аб'ём перамалёўкі, скарыстайцеся функцыяй «Паказаць вобласць перамалёўкі» у адладчык прайгравальніка Flash Player або AIR.

Дадатковыя звесткі аб паляпшэнні прадукцыйнасці паўтараных дзеянняў см. Ў наступных артыкулах.

прыкмета анімацыі

Дызайнеры і распрацоўшчыкі, якія ствараюць Flash-прыкладанні для настольных кампутараў, часта выкарыстоўваюць анімацыю руху. Пры стварэнні змесціва для мабільных прылад старайцеся звесці анімацыю да мінімуму. Без анімацыі прыкладання будзе хутчэй працаваць на низкопроизводительных прыладах.