2
CreateJS js 라이브러리를 사용하여 HTML5 게임을 만들었습니다. Dart를 사용하여 다시 작성하고 싶지만 대부분의 객체는 CreateJS 객체 (예 : 컨테이너)를 상속합니다. 그런 상속을 구할 수 있습니까? 캔버스에서 그리기를 단순화하도록 디자인 된 다른 js 라이브러리와 함께 다트를 사용하는 좋은 방법이 있습니까?JS 클래스에서 다트 클래스를 상속합니까?
CreateJS js 라이브러리를 사용하여 HTML5 게임을 만들었습니다. Dart를 사용하여 다시 작성하고 싶지만 대부분의 객체는 CreateJS 객체 (예 : 컨테이너)를 상속합니다. 그런 상속을 구할 수 있습니까? 캔버스에서 그리기를 단순화하도록 디자인 된 다른 js 라이브러리와 함께 다트를 사용하는 좋은 방법이 있습니까?JS 클래스에서 다트 클래스를 상속합니까?
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"
});
}
감사합니다. 아마도 도움이 될 것입니다. – soin08