2017-01-20 8 views
1
import 'dart:html'; 

main() { 
    new test(); 
} 

class test { 
    test() { 
    print(x); 
    } 

    void x() { 
    window.requestAnimationFrame(x); 
    } 
} 

Я мог бы использовать animationFrame, но я хочу большего контроля, поэтому я пытаюсь использовать requestAnimationFrame (без фьючерсов). Поэтому я вызываю метод из моего оконного объекта и передать в функции обратного вызова только, чтобы получить следующее сообщение об ошибке:Google Dart requestAnimationFrame не принимает обратный вызов

The argument type '() → void' cannot be assigned to the parameter type 'FrameRequestCallback(num) → void'. 

https://dartpad.dartlang.org/fb763a4a770b5cdd896982e10ccf4118

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

В документации четко указано, что функция принимает обратный вызов типа FrameRequestCallback (метод, который я предполагаю). Затем функция возвращает целое число/num. Почему мой тестовый проект не работает?

+0

Dartpad не использует 'window.requestAnimationFrame'. –

+0

@ GünterZöchbauer о, мой бог. Я этого не знал. Так что я все делаю правильно? Он использует animFrame, хотя – Asperger

+0

Ваш Dartpad использует https://api.dartlang.org/stable/1.21.1/dart-html/Window-class.html 'window.animationFrame.then' –

ответ

1

https://api.dartlang.org/stable/1.21.1/dart-html/FrameRequestCallback.html показывает, что ожидается параметр num.

Это должно работать тогда

void x(num value) { 
    window.requestAnimationFrame(x); 
    } 
+0

Вероятно, отметка времени – Asperger

+0

Вещь есть, я подумал, что это необязательно: D oops. – Asperger

+0

'typedef void FrameRequestCallback ([num highResTime]);' будет необязательным, но на самом деле он не имеет '[]' ;-) –

Смежные вопросы