2012-11-16 4 views
1

저는 캔버스를 사용하는 다트에서 기본 응용 프로그램을 작성하고 있습니다. 기본적으로 두 개의 사각형 중 하나가 화면의 오른쪽에서 왼쪽으로 이동하고 두 번째 이동은 사용자가 화살표 키를 선 택할 때 수행합니다.js로 컴파일해도 My Dart 프로젝트가 작동하지 않습니다. 그것은 다트 늄에서만 작동합니다

이제는 문제가 Dartium에서 시도해도 문제가 없습니다. 하지만 Chrome/Firefox에서 열려고하면 빈 사각형 만 보입니다.

다트 편집기는 자바 스크립트 코드로 컴파일 할 때 오류를 표시하지 않습니다.

하지만 크롬의 요소 검사의 콘솔로 볼 때 오류 메시지가 : 그 방법에 대한 호출

Uncaught TypeError: Object [object Window] has no method 'webkitRequestAnimationFrame$1' 

현재 위치 : 여기

void main() { 
    var maincharacter = new Player(10,10, 70, 70, "red"); 
    var secondCharacter = new Player(400,250, 50,50, "yellow"); 
    player = maincharacter; 

    sprites = new Set(); 
    randomnumbergenerator = new Random(); 
    window.on.keyDown.add(myKeyDownEvent); 
    CanvasElement element = query("canvas"); 
    context = element.context2d; 
    maincharacter.context = context; 
    secondCharacter.context = context; 
    maincharacter.type = 'player'; 
    sprites.add(maincharacter); 
    sprites.add(secondCharacter); 
    window.webkitRequestAnimationFrame(animate); 
} 

그리고 :

void animate(num time){ 
    enemyCreator(time); 
    context.clearRect(0,0,400,400); 
    for(final sprite in sprites){ 
    if(!sprite.isPlayer()) { 
     sprite.move(5, 0); 
     // sprite.isOutside(0); 
     if(!(sprite.posx<0)){ 
     query('#text').text = " Posx: ${sprite.posx.toString()} Length: ${sprites.length}"; 
     sprite.draw(); 
     } else { 
     query('#text').text = "Destroyed"; 
     sprites.remove(sprite); 
     }  
    } else { 
     sprite.draw(); 
     query('#text').text = " Time: $counter Length: ${sprites.length}"; 
    } 
    } 
    window.webkitRequestAnimationFrame(animate); 
} 

이것은 예외를 throw하는 javascript 행입니다.

$.window().webkitRequestAnimationFrame$1($.animate) 

아이디어가 있으십니까?

+1

requestAnimationFrame을 호출하는 곳에서 다트 코드를 게시 할 수 있습니까? –

답변

4

방법은 다트에 requestAnimationFrame()하지 webkitRequestAnimationFrame()라고 : http://api.dartlang.org/docs/bleeding_edge/dart_html/LocalWindow.html#requestAnimationFrame

INT의 requestAnimationFrame (RequestAnimationFrameCallback 콜백)

존 시도, 말처럼

window.requestAnimationFrame(animate); 

을 당신은 아마 혼동 다트의를 "네이티브"DOM 메서드를 사용하는 메서드

Window.prototype.webkitRequestAnimationFrame 것은

다트에 해당 접두사를 지정하지 마십시오.

3

대신

window.requestAnimationFrame(animate); 

보십시오.