メイン コーダーズルーム【スクリプト系】 MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? | 投稿するにはまず登録を |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | 下へ |
投稿者 | スレッド |
---|---|
testatoo | Åê¹ÆNo.42143 投稿日時: 2009-4-19 0:11 |
新米 居住地: 投稿: 8
使用環境:
|
MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? いつもお世話になっております。
表題の通り質問させていただきます。 下記のようなコードを書いているのですが、 コンストラクタではwidth,heightは初期化できないのでしょうか ? public class HogeClass extends MovieClip { public function HogeClass(w_:Number,h_:Number) { this.width = w_; this.height = h_; } } var hoge:HogeClass = new HogeClass(100,100); trace(hoge.width) ; //0 trace(hoge.height); //0 といった具合です。 コンストラクタ内で w_ 、h_ をtraceでみてみると、引数どおり 100、100となっていますが、それを設定した直後のwidth,heightが 0、0 となってしまいます。 どなたかわかるかた、もしくは、コンストラク内で初期化ができないプロパティーなんだよ。ということがわかればすっきりです。 ちなみに、new したあとに hoge.width = 100 とかでは問題なく設定できます。 |
永井勝則 | Åê¹ÆNo.42144 投稿日時: 2009-4-19 11:31 |
職人 居住地: 白馬村 投稿: 796
使用環境:
Windows 7 :Flash CS4: 10.6.8 :Flash CS5.5 |
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? オンラインヘルプのDisplayObjectのたとえばwidthの項には、
引用: 表示オブジェクトの幅を示します(ピクセル単位)。この幅は、表示オブジェクトのコンテンツの境界に基づいて計算されます。...(中略)TextField と Video オブジェクトを除いて、width を別の値に設定しようとしても、コンテンツのない表示オブジェクト(例えば、空のスプラインなど)の幅は 0 になります。 とあります。この「空のスプライン」とは何なのか不明ではありますが。 なので、作成するムービークリップに”実体”を持たせることになるのではないでしょうか。 たとえば具体的なムービークリップシンボルにリンケージさせたクラスや、 クラスファイルのコンストラクタで、widthやheightの前に、 具体的なShapeインスタンスを作成して追加すると、 数値が出力されます。 いまいち日本語になっていませんが。
|
野中文雄 | Åê¹ÆNo.42148 投稿日時: 2009-4-19 21:56 |
ちょんまげら 居住地: 東京 投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1) |
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? 「初期化」はできます。ただし、MovieClipインスタンスのサイズは、現行コンテンツによって決まります。DisplayObject.width/DisplayObject.heightプロパティの設定は、現行コンテンツの大きさをもとに、拡大・縮小の結果をもたらします。コンテンツがない場合、両プロパティの値は0以外には設定できません。
引用: testatooさんは書きました: 私の環境では、インスタンスの生成後であっても、コンテンツのないインスタンスのDisplayObject.widthプロパティの値は0にしかなりません。 引用: ちなみに、new したあとに hoge.width = 100 とかでは問題なく設定できます。 「空のスプライト」の誤りですね。 引用: knagaiさんは書きました: なお、「Class名に応じて処理を分岐させたい」の回答はご覧になりましたか? |
testatoo | Åê¹ÆNo.42149 投稿日時: 2009-4-19 22:41 |
新米 居住地: 投稿: 8
使用環境:
|
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? 返信ありがとうございます。
引用:
納得しました。DisplayObjectクラスのインスタンスは子に描画された子のオブジェクトのWidthやHeightから自身のWidthとHeightを自動的に計算するという仕様なんですね。すっきりしました。ありがとうございました。 |
testatoo | Åê¹ÆNo.42150 投稿日時: 2009-4-19 22:50 |
新米 居住地: 投稿: 8
使用環境:
|
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか? 引用:
すいません、当方の勘違いでした。 今回の件のコード検証中コンストラクタに graphics.lineTo(100,100); というコードを書いていたため、new した後は外側から値を設定できていたようです。状況を正確にお伝えできず申し訳ありませんでした。 引用:
確認し返信させていただきました。 すばやいレスポンスがあり心強い限りです。 これからも宜しくお願いいたします。 |
スレッド表示 | 新しいものから | 前のトピック | 次のトピック | トップ |
投稿するにはまず登録を | |