2012-12-22 137 views
2

我有一个使用CreateJS js库制作的HTML5游戏。我想用Dart重写它,但我的大多数对象都继承自CreateJS对象(例如Container)。我能够保存这种继承吗?使用Dart与其他js库设计用于简化在画布上的绘制有什么好方法吗?从JS类继承Dart类?

回答

2

Dart类不能直接扩展一个Javascript类。但是,您可以通过设置将执行Dart代码的方法来自定义JavaScript对象。

例如,让我们假设你有一个扩展ContainerChild Javascript类:

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

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

在省道边,你可以创建一个Child,并在其上覆盖sayHelloContainer定义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" 
    }); 
} 
+0

谢谢,它可能会帮助我。 – soin08