0

Flash CS5 を使用していて、今日、奇妙なことに遭遇しました。

UIScrollBar コンポーネントの固定幅は 15px です。スプライトなどのコンテナーに追加すると、スプライトの幅が 15 を返すと予想されますが、代わりに 100 が返されます。

コード例を次に示します。

import flash.display.Sprite;
import fl.controls.UIScrollBar;

var spr:Sprite = new Sprite();
addChild(spr);
trace('spr.width:',spr.width);

var bar:UIScrollBar = new UIScrollBar();
spr.addChild(bar);
trace('bar.width',bar.width);
trace('spr.width:',spr.width);

興味深いことに、出力は

スプリング幅: 0
バー幅 15
スプリング幅: 100

そこで何が起こっているか知っている人はいますか?これはバグですか?

4

1 に答える 1

0

バグの一種であることがわかりました。何が起こるかというと、ステージ上でコンポーネントを描画/レンダリングするのに時間がかかるため、描画後にのみそのサイズにアクセスできるようになります。記録のために、私のコンピューターでは1ミリ秒かかります。期待値を返すまで。

もう 1 つの驚くべき問題は、コンテナ スプライトが 16px を返すのに対し、UIScrollBar は幅として 15px を返すことです。理由を探している人にとっては、おそらく と で描かれたバーの輪郭に関連していthickness=1ますscaleMode=LineScaleMode.NONE。私が作成したクラスでまったく同じ問題が発生しました。各スーパー メソッドの戻り値に 1 を追加して、幅と高さのゲッターをオーバーライドする必要がありました。

于 2012-12-22T03:15:30.157 に答える