2013.01.30
ActionScript3.0 ぷちクイズ 第1問:「Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」って言われたら?
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;」で定義した変数を関数内で上書いてしまっているのですね。
とっても基本的なところだけど、変数の範囲、忘れないように注意です。
WEBアプリケーション関連 人気連載リンク
基礎からPHPWEBアプリ解発を学ぶなら・・
PHP基礎 連載
より実践的なWEBアプリ開発講座!Bootstrap活用を学ぶなら・・
魁!小野の塾 連載