ゼロ以外の幅要素に対して 0 を返す場合、幅関数がすべての要素に実装される理由がわかりません。以下は0を返します。
Shoes.app do
p = para "My width is: "
para p.width
end
何故ですか?(app.width は 0 を返しません)
問題は、描画時に para オブジェクトのサイズが動的に決定されることです。2 番目のパラを作成した時点では、実際にはまだ何も配置されていないため、幅は設定されていません。描画後の幅へのアクセスが期待どおりに機能することがわかります。
Shoes.app do
p = para "My width is: "
@para = para p.width
button 'Get Width' do
@para.text = p.width
end
end
これを回避する方法は、含まれるスロットが初めて描画されるときに呼び出される start メソッドを使用することです。
Shoes.app do
p = para "My width is: "
width = para p.width
start do
width.text = p.width
end
end