トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     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インスタンスを作成して追加すると、
数値が出力されます。

いまいち日本語になっていませんが。


----------------
永井勝則:
himco.jp :

野中文雄
Åê¹Æ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さんは書きました:
下記のようなコードを書いているのですが、
コンストラクタではwidth,heightは初期化できないのでしょうか

私の環境では、インスタンスの生成後であっても、コンテンツのないインスタンスのDisplayObject.widthプロパティの値は0にしかなりません。
引用:
ちなみに、new したあとに hoge.width = 100 とかでは問題なく設定できます。

「空のスプライ」の誤りですね。
引用:
knagaiさんは書きました:
とあります。この「空のスプライン」とは何なのか不明ではありますが。

なお、「Class名に応じて処理を分岐させたい」の回答はご覧になりましたか?


----------------
 

testatoo
Åê¹ÆNo.42149
投稿日時: 2009-4-19 22:41
新米
居住地:
投稿: 8
使用環境:
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか?
返信ありがとうございます。

引用:

knagaiさんは書きました:
たとえば具体的なムービークリップシンボルにリンケージさせたクラスや、
クラスファイルのコンストラクタで、widthやheightの前に、
具体的なShapeインスタンスを作成して追加すると、
数値が出力されます。



納得しました。DisplayObjectクラスのインスタンスは子に描画された子のオブジェクトのWidthやHeightから自身のWidthとHeightを自動的に計算するという仕様なんですね。すっきりしました。ありがとうございました。
testatoo
Åê¹ÆNo.42150
投稿日時: 2009-4-19 22:50
新米
居住地:
投稿: 8
使用環境:
Re: MovieClipを継承したクラスのコンストラクタでWidthやheightは初期化できないのでしょうか?
引用:

私の環境では、インスタンスの生成後であっても、コンテンツのないインスタンスのDisplayObject.widthプロパティの値は0にしかなりません。


すいません、当方の勘違いでした。
今回の件のコード検証中コンストラクタに
graphics.lineTo(100,100);
というコードを書いていたため、new した後は外側から値を設定できていたようです。状況を正確にお伝えできず申し訳ありませんでした。

引用:

なお、「Class名に応じて処理を分岐させたい」の回答はご覧になりましたか?


確認し返信させていただきました。
すばやいレスポンスがあり心強い限りです。
これからも宜しくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops