0

我正在制作一个 HTML5 游戏引擎DartRocket,它依赖于StageXL。StageXL 有一些类,其中充满了静态成员,我的游戏中需要其中一些。

我的问题是我可以在我的库(DartRocket)中使用这些静态成员,但我无法从使用我的库的游戏中访问它们。基本上,因为我无法从我的游戏中看到我的库的依赖关系。当我说游戏时,我指的是我图书馆中的一个例子。

我的问题是:我应该如何访问这些静态成员?

我想到了一些解决方案:

  1. 让用户导入 StageXL,以便他可以访问它们
  2. 将整个班级复制粘贴到我的图书馆中
  3. 使用镜像 API

我发现第一个解决方案很愚蠢,因为用户必须导入 StageXL 并且我的库已经依赖于它。

我使用第二个,因为我觉得它很容易并且我想对类进行更改,但这也不理想,因为如果库的依赖项发生更改,我必须自己更新它。

我还没有尝试过第三种解决方案,因为我不太喜欢使用镜像,因为它增加了代码的复杂性,并且使用变得基于成员的名称(字符串)。

一些不起作用的“解决方案”:

  1. 制作一个类的实例(希望它能起作用是令人尴尬和愚蠢的:D)
  2. 扩展类(不起作用,因为不继承静态成员)

你们有什么感想?

4

1 回答 1

2

如果你在 dart 中有一个库,你可以重新导出其他库。

例如:

StageXL 库:

library stagexl;

// parts
// definitions
// ...

还有你的图书馆:

library dartrocket;

export 'stagexl.dart';

之后您可以使用:

import 'dartrocket.dart';

SomeStageXLClass.method();

这样,用户可以使用您的库,也可以使用 stagexl 库中的方法和类。通过使用show关键字,您还可以定义要导出的类。

问候罗伯特

于 2014-06-01T19:04:36.227 回答