1

ゼロ以外の幅要素に対して 0 を返す場合、幅関数がすべての要素に実装される理由がわかりません。以下は0を返します。

Shoes.app do
  p = para "My width is: "
  para p.width
end

何故ですか?(app.width は 0 を返しません)

4

1 に答える 1

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
于 2009-08-18T13:16:08.017 に答える