• ベストアンサー
  • 困ってます

._widthと.widthの違い

  • 質問No.4629653
  • 閲覧数275
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0
AS2.0で次のように空のムービークリップを作成して、そのサイズをフレームごとに変えたいと思っています。

_root.createEmptyMovieClip("mc", 1);
_root.mc.width = 50;
_root.mc.height = 50;

_root.onEnterFrame = function(){
_root.mc._width += 10;
_root.mc._height += 10;
};

しかしこのようにすると、._widthと.widthを両方使ってしまいます。
そもそも、この二つの違いは何なのでしょうか?

質問者が選んだベストアンサー

  • 回答No.2
  • ベストアンサー

ベストアンサー率 91% (1611/1754)

#1 です。

> このようにしないとうまくいかないのですが……。

「うまく行く行かない」は状況の説明ではなく,「好き・嫌い」と同じ単なる主観です。
つまり「どうなった」のかはわかりません。
さらにまた,
「どうしてみた」ということを具体的に書かれていらっしゃらないため,
何が悪いとも言えませんよ。



新規ドキュメントを作成して,
次の4例を _root のフレーム1にコピペして,
それぞれの例について 「制御」→「ムービープレビュー」 してみてください。

【例1】
------------------------------------
_root.createEmptyMovieClip("mc", 1);

// 基準点左上で1辺5pxの赤い■を描く
_root.mc.beginFill(0xFF0000);
_root.mc.moveTo(0, 0);
_root.mc.lineTo(5, 0);
_root.mc.lineTo(5, 5);
_root.mc.lineTo(0, 5);
_root.mc.endFill();

// ↓アンダースコア無しでは
_root.mc.width = 50;
_root.mc.height = 50;
// ↑※結果:5×5px のまま
------------------------------------


【例2】
------------------------------------
_root.createEmptyMovieClip("mc", 1);

// 基準点左上で1辺5pxの赤い■を描く
_root.mc.beginFill(0xFF0000);
_root.mc.moveTo(0, 0);
_root.mc.lineTo(5, 0);
_root.mc.lineTo(5, 5);
_root.mc.lineTo(0, 5);
_root.mc.endFill();

// ↓アンダースコア有りでは
_root.mc._width = 50;
_root.mc._height = 50;
// ↑※結果:50×50px になる
------------------------------------


【例3】
------------------------------------
_root.createEmptyMovieClip("mc", 1);

// 基準点左上で1辺5pxの赤い■を描く
_root.mc.beginFill(0xFF0000);
_root.mc.moveTo(0, 0);
_root.mc.lineTo(5, 0);
_root.mc.lineTo(5, 5);
_root.mc.lineTo(0, 5);
_root.mc.endFill();

// ↓アンダースコア無しでは
_root.mc.width = 50;
_root.mc.height = 50;

_root.onEnterFrame = function() {
_root.mc._width += 10;
_root.mc._height += 10;
};
// ↑※結果:5×5px から大きくなる
------------------------------------


【例4】
------------------------------------
_root.createEmptyMovieClip("mc", 1);

// 基準点左上で1辺5pxの赤い■を描く
_root.mc.beginFill(0xFF0000);
_root.mc.moveTo(0, 0);
_root.mc.lineTo(5, 0);
_root.mc.lineTo(5, 5);
_root.mc.lineTo(0, 5);
_root.mc.endFill();

// ↓アンダースコア有りでは
_root.mc._width = 50;
_root.mc._height = 50;

_root.onEnterFrame = function() {
_root.mc._width += 10;
_root.mc._height += 10;
};
// ↑※結果:50×50px から大きくなる
------------------------------------


【例4】 では 「結果:50×50px から大きくなる」 になります。
これを kisori さんの主観では「うまく行かなかった」というのでしょうか?
それとも「うまく行った」というのでしょうか?

また,
【例1】の結果と【例2】の結果もしっかりと見くらべてください。



【例1】をあえて間違いではないものとして,
width や height に関する意味書くとするなら,

// _root.mc内の 変数 width に 50 を代入
_root.mc.width = 50;
// _root.mc内の 変数 height に 50 を代入
_root.mc.height = 50;

という意味になります。
変数に値を代入しただけで,幅や高さのプロパティは一切指示していません。

_root.mc内の 変数 width や height に 50 が代入されることを「うまく行った」とするなら,
それはそれで良いのではないでしょうか?


野中文雄さんの
「番外編 - 質問NGワード集 - テクニカルノート」 より
【うまくいきません】
http://www.fumiononaka.com/TechNotes/NGWords.html#U

その他の回答 (全1件)

  • 回答No.1

ベストアンサー率 91% (1611/1754)

> そもそも、この二つの違いは何なのでしょうか?

片方は間違った使い方(勝手なルールを決めたスクリプト)
片方は正解の使い方(ルールに従ったススクリプト)
の違いだと思います。

日本語に喩えると,
「富士山を大きい」と「富士山は大きい」の違いは何か?
と問われているような気がします。


> _root.mc.width = 50;
> _root.mc.height = 50;

ActionScript 2.0 において,
ムービークリップには,
width というプロパティも,
height というプロパティも存在しないと思いますよ。

Stageには width というプロパティも,
height というプロパティも存在しますが。
補足コメント
noname#88787
このようにしないとうまくいかないのですが……。
投稿日時:2009/01/15 15:18
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ