2
我有一个使用CreateJS js库制作的HTML5游戏。我想用Dart重写它,但我的大多数对象都继承自CreateJS对象(例如Container)。我能够保存这种继承吗?使用Dart与其他js库设计用于简化在画布上的绘制有什么好方法吗?从JS类继承Dart类?
我有一个使用CreateJS js库制作的HTML5游戏。我想用Dart重写它,但我的大多数对象都继承自CreateJS对象(例如Container)。我能够保存这种继承吗?使用Dart与其他js库设计用于简化在画布上的绘制有什么好方法吗?从JS类继承Dart类?
Dart类不能直接扩展一个Javascript类。但是,您可以通过设置将执行Dart代码的方法来自定义JavaScript对象。
例如,让我们假设你有一个扩展Container
类Child
Javascript类:
function Container(){}
Container.prototype.callSayHello = function(){ this.sayHello(); }
Container.prototype.sayHello = function(){ alert("hello from JS"); }
function Child(){}
Child.prototype = new Container();
在省道边,你可以创建一个Child
,并在其上覆盖sayHello
从Container
定义sayHello
方法:
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