像我在一个类中得到CanvasRenderingContext2D和CanvasElement,但是如何在其他类中使用我的CanvasRenderingContext2D?
class Unnamed {
CanvasElement c;
CanvasRenderingContext ctx;
Unnamed() {
this.c = query('#canvas');
this.ctx = this.c.getContext('2d');
}
}
如何在其他类中使用来自Unnamed类的ctx?类似的东西:
class Box {
num x,
y;
Box() {
this.x = x;
this.y = y;
}
void draw() {
myCtxFromUnnamedClass.fillRect(this.x, this.y, 64, 64);
}
}
抱歉我的英语不好。
答案 0 :(得分:1)
最好的方法是将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);
}
}
答案 1 :(得分:0)
首先,你的Box()不会编译,因为没有x
和y
被提供给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);
}
}