1

あるクラスで CanvasRenderingContext2D と CanvasElement を取得しているようなものですが、他のクラスで CanvasRenderingContext2D を使用するにはどうすればよいですか?

class Unnamed {
    CanvasElement c;
    CanvasRenderingContext ctx;

    Unnamed() {
        this.c = query('#canvas');
        this.ctx = this.c.getContext('2d');
    }
}

無名クラスの ctx を他のクラスで使用するにはどうすればよいですか? 何かのようなもの:

class Box {
    num x,
        y;

    Box() {
        this.x = x;
        this.y = y;
    }

    void draw() {
        myCtxFromUnnamedClass.fillRect(this.x, this.y, 64, 64);
    }
}

私の悪い英語で申し訳ありません。

4

2 に答える 2

1

最良の方法は、メソッド draw のパラメーターとして CanvasRenderingContext2D を渡すことです。

class Box {
    num x, y;

    Box() {
        this.x = x;
        this.y = y;
    }

    void draw(CanvasRenderingContext ctx) {
        ctx.fillRect(this.x, this.y, 64, 64);
    }
}
于 2012-07-23T17:16:17.860 に答える
0

まず、 Box() は no としてコンパイルされず、コンストラクターxy提供されます。Box()

 void draw(CanvasRenderingContext ctx) {
        ctx.fillRect(this.x, this.y, 64, 64);
    }

' コンストラクタ パラメータctxとして渡しても意味がありません。Boxしかし、あなたの質問に答えるには:

void main() { 
  Unnamed unnamed = new Unnamed();
  Box box = new Box(unnamed.ctx, 0, 0);
  box.draw();
}

class Unnamed {
  CanvasElement c;
  CanvasRenderingContext ctx;

  Unnamed() : c = query('#canvas') { // variable initialization should be done this way
    this.ctx = c.getContext('2d');
  }
}

class Box {
  num x, y;
  CanvasRenderingContext myCtxFromUnnamedClass;

  Box(this.myCtxFromUnnamedClass, this.x, this.y); // this is an idiomatic Dart constructor

  void draw() {
    myCtxFromUnnamedClass.fillRect(this.x, this.y, 64, 64);
  }
}
于 2012-07-23T21:19:51.033 に答える