Nano Hash - криптовалюты, майнинг, программирование

Версия JavaScript события ActionScript Event.ENTER_FRAME?

Я пытаюсь изучить JavaScript, и мне интересно, есть ли в JavaScript прослушиватель событий, такой как ENTER_FRAME в ActionScript. По сути, я хочу, чтобы этот прослушиватель событий прослушивал «все время», а не просто ждал какого-либо конкретного экземпляра (щелчок мыши, событие клавиатуры) события.


  • да, в DOM браузера нет такой вещи, как фрейм, поэтому javascript нечего слушать. Обратитесь к правильным ответам ниже. 07.07.2011

Ответы:


1

Вы ищете setInterval(func, time). Если заставить его работать как ENTER_FRAME, время будет очень маленьким. Итак, если вы хотите имитировать частоту кадров, скажем, 30 раз в секунду:

 // you will need to make sure you have good scoping around the function param.
 setInterval(function(){console.log('enterframe')}, 33) 
 // 33 is about 1000 milliseconds / 30.

На самом деле, setInterval есть и во Flash -- flash.utils.setInterval.

В качестве примечания: к сожалению, setInterval (как во Flash, так и в JS) может работать против собственной частоты обновления. Во Flash ENTER_FRAME избегает этого - вы выполняете рендеринг, когда swf повторно рендерится. В браузере setInterval просто так не получится.

07.07.2011

2

Это, вероятно, тоже стоит посмотреть: http://paulirish.com/2011/requestanimationframe-for-smart-animating/

08.07.2011

3

HTML5 предоставляет доступ к requestAnimationFrame()

<canvas id="canvas" width="400" height="400"></canvas>
<script>
window.onload = function () {
    var canvas = document.getElementById('canvas'),
    context = canvas.getContext('2d'),

    var counter = 0;

    (function drawFrame () {
        window.requestAnimationFrame(drawFrame, canvas);
        context.clearRect(0, 0, canvas.width, canvas.height);
        console.log(counter++);
        // animation code goes here
    }());
};
</script>

Кредит принадлежит Киту Питерсу за помощь в этом. Очень рекомендую его книгу «Анимация HTML5 с Javascript» от FriendsOfEd: http://www.apress.com/9781430236658

01.03.2016
  • Сначала удивлялся, почему это не принятый ответ, но потом заметил, что он опоздал на 5 лет. WEB набирает обороты... 11.02.2017

  • 4

    Я все еще учусь конвертировать AS3 в JavaScript, но не будет ли это этой функцией:

    createjs.Ticker.addEventListener("tick", gameLoop);
    

    gameLoop — это пользовательская функция, которая будет вызываться при каждом «тике».

    Посмотрите этот полезный пример написания игры в Adobe Animate CC с использованием JavaScript вместо AS3: https://software.intel.com/en-us/html5/hub/blogs/flash-cc-to-html5

    05.04.2016

    5

    Неа. Не совсем. Хорошей заменой будет setInterval или setTimeout:

    function doAllTheTime() { }
    function wrapper() {
        doAllTheTime();
        setTimeout(wrapper, 40);
    }
    wrapper();
    

    Но даже в этом случае вы довольно ограничены, потому что у вас нет доступа ни к одному из свойств объекта события.

    07.07.2011
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..