6

私は AthensTutorial をやっていて、最初のステップを理解しました

surface := AthensCairoSurface extent: self extent asIntegerPoint.

そして、ステップ2は

surface drawDuring: [:canvas |

"First, we clear the surface"
surface clear. 

"we can use 

surface clear: Color black.  

as well. A #clear is equivalent to: (surface clear: Color transparent).   "

"Let''s draw a simple green rectangle"
canvas setPaint: Color green.
canvas setShape: (40@40 corner: 100@100).
canvas draw.

]

キャンバスはどこから来ますか? はどこで定義されていますか? その部分だけはわかりません。

4

1 に答える 1

7

これは、さまざまな Smalltalk フレームワークで見られるトリックです。「canvas」は、#drawDuring: に渡すブロックへのパラメーターです。好きなように名前を付けることができます。それは完全にあなた次第です。メソッド #drawDuring: はキャンバス インスタンスを作成し、BlockClosure>>value: メソッドを呼び出してブロックに渡します。

于 2013-04-16T12:16:54.660 に答える