[AS]入れ子状態のDisplayObjectの幅/高さをあくまで内容物の大きさによる
あたりまえといっちゃあたりまえのことに躓いた。
var sp:Sprite = new Sprite(); sp.graphics.beginFill(0); sp.graphics.drawRect(0,0, 10, 100); var container:Sprite = new Sprite(); container.addChild(sp); sp.y = 300; this.addChild(container) container.addChild(sp) trace(container.height);//出力は400ではなく、100 //(containerはDisplayObjectContainerの機能しか果たしていないので)
ステージに手動でMCとか作ってるときには直感的に理解していたことだけど、ASで動的に作ってるときにはなぜか上記のようなときは400になるもんだと思ってた。
そんで高さを400にするためには以下のようにすればOK。
var sp:Sprite = new Sprite(); sp.graphics.beginFill(0); sp.graphics.drawRect(0,0, 10, 100); var container:Sprite = new Sprite(); container.graphics.drawRect(0,0,0,0);//大きさの無いものをdrawしておくだけでいいらしい container.addChild(sp); sp.y = 300; this.addChild(container) container.addChild(sp) trace(container.height);//出力:400
相対的な位置情報も含めて大きさを保持したい場合は単にアルファ0でのものを置こうかと思ったけど、大きさを指定しない状態でdrawするだけでいいようだ。
これは試してみてよかった。
Tweet