2012-04-21 54 views
2

我写一个简单的应用程序来学习一些基本的飞镖节目,但我想不通的结构和夹杂物 - 我得到一个复制类Point重复类中达特

首先,我有我的主类我叫MouseTrack。它初始化列表并将有一个循环。

#import('dart:html'); 
#import('Eye.dart'); 

class MouseTrace { 
List<Eye> eyes; 
... 
} 

其次,我有一个名为类,这是应该持有的眼睛是圆的信息。这是很简单的:

#library('app:eye'); 

#import('dart:html'); // without this one, I get no error but I want to have it to use CanvasRenderingContext2D 

#import('Point.dart'); 

class Eye { 
    Point position; 
    num radius; 

    Eye() : 
     position = new Point() { 
    } 

    void draw(CanvasRenderingContext2D context) { 
    // draws a circle 
    } 
} 

最后

#library('app:point'); 

class Point { 
    num x, y; 

    Point(this.x, this.y); 
} 

我想实现的是3个独立的类 - 主要,这样我就可以有在实例(为简单起见&尼斯模型),并在在立场(用于存储位置)。至少我习惯于这样做。

P.S我知道我可以跳过的类型,但我想它那里,我想这是有夹杂物,而不是语言问题(要修复它,所以我知道如何正确地做到这一点)。 P.S.S. 我已经削减了一些代码,这样你就不用看了一切,但,如果你愿意,我会后这一切。

回答

4

问题在于app:eye库(在Eye.dart文件中)。您导入dart:htmlapp:point库,但他们两人的定义Point类。这种情况是无效的。您可以通过不进口dart:html在所有要么解决它,如果你不需要它,或前缀这些进口中的一个:

#import('dart:html', prefix: 'html'); 
#import('Point.dart'); 

在这种情况下,你将不得不指从dart:html至名使用html.前缀。在你的情况下,如果你想使用CanvasRenderingContext2D类,你将不得不编写html.CanvasRenderingContext2D

+1

太棒了!不知道这一点。我想我可以简单地使用dart:Point的Point接口;) – Pijusn 2012-04-22 04:54:14