• ベストアンサー

ActionScript3.0について。

ActionScript3.0について。 最近AS3.0を勉強し始めました。 そこで分からない点が2点ありまして、 「null」 「void」 の2つの考え方が分かりません。 ネットで調べたり本を見たりしましたが、 いまいちピンときません。 どなたか簡単に分かるような説明をしてあるサイト、 もしくは簡単で分かりやすい理解の仕方がありましたら教えていただけませんか? 宜しくお願い致します。

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

  • ベストアンサー
  • DPE
  • ベストアンサー率85% (666/776)
回答No.1

コンピュータのプログラムやプログラムで使う値は、”メモリ”という場所に格納されます。 ActionScript でも同様に、スクリプト自体や数値・文字列といった値、ムービークリップなどの作品を構成する要素も全て、メモリのどこかに格納されています。 ActionScript で扱う値やムービークリップなどの部品の多くは、複数の情報でできています。 例えばムービークリップは、絵のデータや画面での位置・大きさ、gotoAndPlay などの機能といった、多くの情報で構成されています。 これらは1件ごとに整理し、いわばメモリの中に作られた1つの町に住む住民たちのような形で格納されます。 町が作られたメモリ上の場所で書くとスクリプトが分かりにくくなるので、実際の場所は明かされません。 代わりに、町の場所を知る者を置き、この者を介して用のある住民を訪ねて行ける仕組みになっています。 具体的な例で言いますと。 ステージにムービークリップを配置し、インスタンス名を” mc ”と付けたとします。 すると、このムービークリップを構成する様々な住民(=情報)が集まった町が、メモリのどこかに作られます。 できた町の場所は、インスタンス名である mc が知っています。 ムービークリップの表示位置を知りたい時や、フレームを切り替える gotoAndPlay などの職人に仕事を頼む時は、mc に案内を頼んで用のある住民を訪ねて行くわけです。 1件のデータに関する情報を持つ住民の集まる町のことを”オブジェクト”、この町の場所のことを”参照”といいます。 では、ムービークリップがステージにない時はどうでしょう。 この場合は、メモリのどこにも、このムービークリップの町は作られません。 スクリプトで mc という名前の案内役を作ったとしても、そもそも町が存在しないために、mc にはどの場所も記録されていません。 この状態が null です。 mc が場所を知らないのに、「あの町に住む○○に仕事を頼みたいから、案内してほしい」と言っても、話になりません。 これが、「 null オブジェクト参照のプロパティまたはメソッドにアクセスできない」というエラーです。 null とは、本来はメモリのどこかの場所を知っているはずのものがどの場所も知らない状態のことを指す、特殊な値です。 ここではムービークリップを例にしましたが、ムービークリップ以外のデータを扱う時も変数に null が入る場合があります。 null は値ですから、実は、明示的に変数に入れることもできます。 - - - - - void は関数に関係のある言葉です。 関数の詳細は、入門書や解説サイト等をご参考になさってください。 なお、関数から持ち帰ってくる値(戻り値)と void の意味は、以前、説明したことがありますので、よろしければご参照ください。  ・[return]の役割について   http://okwave.jp/qa4447665.html  ・actinscript3でvoidの意味   http://okwave.jp/qa4540185.html   (↑ void については#3で説明しております) ActionScript で扱うデータは全て、1件ごとの情報が集まる町(オブジェクト)の形でメモリに格納されています。 (中には、内部で便宜をはかってそのように見えないものもありますが、今回は触れません) 変数に値を入れると、メモリの中に町が作られてその場所(参照)が変数に入り、変数が持つ場所をもとに必要な情報を取り出します。 町には様々な種類があり、同種の町は似た構造をしています。 この種類のことを”データの型”といいます。 変数には、1度決めた町と同種の町の場所を入れなければならない決まりになっています。 例えば、ムービークリップの町の案内役と決めた mc に文字列の町の場所を覚えさせようとすると、エラーになってしまいます。 案内役の型を決め、案内を頼んでくる者が求める型と一致させることは、トラブルをなくすためにも大切なことです。 void はデータの型の1つです。 ただ、ムービークリップや数値とは違い、「何もないことを表す」という不思議な型です。 null はどの町の場所も指していないことを表す”値”で、入れようと思えば変数にも入れられるのに対し、void はメモリの中にできる町の種類の1つなので、変数に入れることはできません。 void は関数を定義する時に、関数から持ち帰ってくる値がないことを表すためだけに使われます。

yuyumamayaya
質問者

お礼

すごく分かりやすくて助かりました。 ご丁寧な回答ありがとうございました。

関連するQ&A