2

基本的なDartプログラミングを学ぶための簡単なアプリケーションを書いていますが、構造と包含を理解できません-重複したクラスポイントを取得します

まず、MouseTrackというメインクラスがあります。リストを初期化し、ループを作成します。

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

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

第二に、目の情報を円で保持することになっているEyeというクラスがあります。それは非常に簡単です:

#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つの別々のクラスです。したがって、メインアイのインスタンス(シンプルで素敵なモデル)とポイントのインスタンス(位置を保存するため)を含めることができます。少なくとも、それは私がやっていることに慣れている方法です。

PS私は型をスキップできることを知っていますが、そこにそれが欲しいのですが、言語ではなくインクルージョンの問題だと思います(そしてそれを修正したいので、正しく行う方法を知っています)。PSSすべてを読む必要がないように、いくつかのコードを切り取っていますが、必要に応じて、すべてを投稿します。

4

1 に答える 1

5

問題はapp:eyeライブラリ (Eye.dartファイル内) にあります。dart:htmlとライブラリをインポートしapp:pointますが、どちらもPointクラスを定義します。この状況は無効です。必要がない場合は、まったくインポートdart:htmlしないか、それらのインポートのいずれかにプレフィックスを付けることで解決できます。

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

この場合、プレフィックスdart:htmlを使用して名前を参照する必要があります。html.あなたの場合、CanvasRenderingContext2Dクラスを使用したい場合は、html.CanvasRenderingContext2D代わりに書く必要があります。

于 2012-04-21T21:59:35.490 に答える