2

CreateJSjsライブラリを使用して作成されたHTML5ゲームがあります。Dartを使用して書き直したいのですが、ほとんどのオブジェクトはCreateJSオブジェクト(Containerなど)から継承しています。そのような継承を保存することはできますか?キャンバスへの描画を簡素化するように設計された他のjsライブラリでDartを使用する良い方法はありますか?

4

1 に答える 1

3

Dartクラスは、Javascriptクラスを直接拡張することはできません。ただし、Dartコードを実行するメソッドを設定することで、Javascriptオブジェクトをカスタマイズできます。

たとえば、Childクラスを拡張するJavascriptクラスがあるとしますContainer

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

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

Dart側では、からオーバーライドChildするメソッドを作成して定義できます。sayHellosayHelloContainer

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"
  });
}
于 2012-12-22T22:11:36.323 に答える