2012-12-22 2 views
2

CreateJS js 라이브러리를 사용하여 HTML5 게임을 만들었습니다. Dart를 사용하여 다시 작성하고 싶지만 대부분의 객체는 CreateJS 객체 (예 : 컨테이너)를 상속합니다. 그런 상속을 구할 수 있습니까? 캔버스에서 그리기를 단순화하도록 디자인 된 다른 js 라이브러리와 함께 다트를 사용하는 좋은 방법이 있습니까?JS 클래스에서 다트 클래스를 상속합니까?

답변

2

Dart 클래스는 Javascript 클래스를 직접 확장 할 수 없습니다. 그러나 다트 코드를 실행할 메소드를 설정하여 Javascript 객체를 사용자 정의 할 수 있습니다.

function Container(){} 
Container.prototype.callSayHello = function(){ this.sayHello(); } 
Container.prototype.sayHello = function(){ alert("hello from JS"); } 

function Child(){} 
Child.prototype = new Container(); 

다트에 당신이 Child을 만들 수 있습니다 그것은 Container에서 sayHello를 오버라이드 (override)에 sayHello 방법을 정의합니다 :

예를 들어, 당신은 Container 클래스를 확장하는 Child 자바 스크립트 클래스가 있다고 가정하자

import 'dart:html'; 
import 'package:js/js.dart' as js; 

main(){ 
    // with sayHello overriding 
    js.scoped((){ 
    final child = new js.Proxy(js.context.Child); 
    child.sayHello = new js.Callback.many(() { 
     window.alert("hello from Dart"); 
    }); 
    child.callSayHello(); // displays "hello from Dart" 
    }); 

    // without sayHello overriding 
    js.scoped((){ 
    final child = new js.Proxy(js.context.Child); 
    child.callSayHello(); // displays "hello from JS" 
    }); 
} 
+0

감사합니다. 아마도 도움이 될 것입니다. – soin08

관련 문제