ActionScript3.0 ぷちクイズ 第1問:「Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」って言われたら?

この記事は2013年1月30日に書かれたものです。内容が古い可能性がありますのでご注意ください。


Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。と言われたら?

タイトルのようなエラーに遭遇したら、「何かしらオブジェクトの定義が漏れているのかしら」と思わなければなりません。
でも、ちゃんと型指定して変数定義して、インスタンス生成しているのにやっぱりダメというときもあるかもしれません。
そこで問題です。

<問題>
下記のプログラムでも、そんなエラーが発生してしまいます。
エラーが出ないように修正してください。

public class fms extends MovieClip{
 private var nc:NetConnection;
 private var ns:NetStream;
 public function fms():void{
  nc = new NetConnection();
  nc.addEventListener( NetStatusEvent.NET_STATUS,netStatusHandler);
  function netStatusHandler(event:NetStatusEvent):void{
   if(event.info.code == "NetConnection.Connect.Success"){
    var ns = new NetStream(nc);
    trace("ns:"+ns); //☆1
   }
  }
  trace("ns:"+ns);  //☆2
 }
}

☆1ではnsには[object NetStream]が入ってくるのに、☆2ではnullになる・・・。
その結果、エラーが発生してしまうのです。どこを直せばよいでしょう?

答えは以下です。



<答え>
~~~~~
誤)var ns = new NetStream(nc);

正)ns = new NetStream(nc);
~~~~~
これでOK。
せっかく「private var ns:NetStream;」で定義した変数を関数内で上書いてしまっているのですね。

とっても基本的なところだけど、変数の範囲、忘れないように注意です。

  • このエントリーをはてなブックマークに追加

PAGE TOP