Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Почему останавливается секундомер при свёртывания окна? (http://www.flasher.ru/forum/showthread.php?t=200213)

sidorenkova 31.05.2013 15:15

Почему останавливается секундомер при свёртывания окна?
 
Здравствуйте!
Я заметила особенность одну, у меня есть ролик с отображением секундомера. В общем, он отсчитывает время, но когда я сворачиваю окно или перехожу на другую вкладку в браузере... секундомер останавливается, даже через пару минут я возвращаюсь в ролик... секундомер продолжает делать отсчёт
Почему это происходит и как это можно исправить?

caseyryan 31.05.2013 15:19

это фишка флеш плеера. Фреймрейт падает до 4 кадров в секунду (если мне память не изменяет) при потере фокуса вкладки с плеером. Чтобы весь бразуер не тормозил. Исправить нельзя, это зашито в сам плеер.

Final Hope 31.05.2013 15:19

Если флеш плеер находится в неактивном состоянии, то фпс падает до 4 кадров. Чтобы секундомер работал правильно, лучше использовать класс Date.

sidorenkova 31.05.2013 16:24

Цитата:

Сообщение от Final Hope (Сообщение 1135832)
Если флеш плеер находится в неактивном состоянии, то фпс падает до 4 кадров. Чтобы секундомер работал правильно, лучше использовать класс Date.

Date ??? А как использовать этот класс? Если не сложно, можно об этой реализации где-то прочитать?

То есть как примерно реализовать date чтобы был отсчёт без сбоя таймера при неактивности окна браузера

Final Hope 31.05.2013 17:21

Вот тут можно много всего почитать: http://help.adobe.com/ru_RU/FlashPla...tml#!Date.html
Например, вот такой пример:
Код AS3:

import flash.text.TextField;
import flash.events.Event;
 
var timerTextField:TextField = new TextField();
var startDate:Date = new Date();
var currentDate:Date;
var deltaTime:Number;
 
timerTextField.width = 200;
this.addChild(timerTextField);
 
stage.addEventListener(Event.ENTER_FRAME, updateTimerHandler);
//----------------------------------------------------------
//  Event handlers
//----------------------------------------------------------
function updateTimerHandler(event:Event):void
{
        currentDate = new Date();
        deltaTime = currentDate.getTime() - startDate.getTime()
        currentDate.setTime(deltaTime);
        timerTextField.text = "С момента запуска прошло: " +
        currentDate.getUTCHours().toString() + ":" +
        currentDate.getUTCMinutes().toString() + ":" +
        currentDate.getUTCSeconds().toString();
}


sidorenkova 31.05.2013 17:44

Цитата:

Сообщение от Final Hope (Сообщение 1135856)
Вот тут можно много всего почитать: http://help.adobe.com/ru_RU/FlashPla...tml#!Date.html
Например, вот такой пример:
Код AS3:

import flash.text.TextField;
import flash.events.Event;
 
var timerTextField:TextField = new TextField();
var startDate:Date = new Date();
var currentDate:Date;
var deltaTime:Number;
 
timerTextField.width = 200;
this.addChild(timerTextField);
 
stage.addEventListener(Event.ENTER_FRAME, updateTimerHandler);
//----------------------------------------------------------
//  Event handlers
//----------------------------------------------------------
function updateTimerHandler(event:Event):void
{
        currentDate = new Date();
        deltaTime = currentDate.getTime() - startDate.getTime()
        currentDate.setTime(deltaTime);
        timerTextField.text = "С момента запуска прошло: " +
        currentDate.getUTCHours().toString() + ":" +
        currentDate.getUTCMinutes().toString() + ":" +
        currentDate.getUTCSeconds().toString();
}



Огромное спасибо!!! Вы - настоящий друг!


Часовой пояс GMT +4, время: 04:41.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.