CreateJSjsライブラリを使用して作成されたHTML5ゲームがあります。Dartを使用して書き直したいのですが、ほとんどのオブジェクトはCreateJSオブジェクト(Containerなど)から継承しています。そのような継承を保存することはできますか?キャンバスへの描画を簡素化するように設計された他のjsライブラリでDartを使用する良い方法はありますか?
質問する
360 次
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
するメソッドを作成して定義できます。sayHello
sayHello
Container
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 に答える