Flash初心者のための時計のシーン移動ボタン作成エラー

このQ&Aのポイント
  • Flash初心者が時計のシーン移動ボタンを作成する際にエラーが発生しました。
  • エラーメッセージ「TypeError: Error #1009: Cannot access a property or method of a null object reference.」が表示されました。
  • 初心者であるため、エラーの原因がわからず困っています。解決策をご教示いただけると助かります。
回答を見る
  • ベストアンサー

Error#1009 時計のシーン移動ボタン

こんにちは、Flash初心者です。 アクションスクリプト3.0にて、時計を作っています。 時計は完成したものの、シーンを移動するボタンを作成したところ、 TypeError: Error #1009: Cannot access a property or method of a null object reference. at sushi_fla::MainTimeline/updateDate2()[sushi_fla.MainTimeline::frame4:13] このようなエラーメッセージが出てきました。 ■1フレーム目■ 1フレーム目のプログラムにTOPに戻るボタンのプログラムを記載しています。 top2nd_btn.addEventListener(MouseEvent.CLICK, fl_top22); function fl_top22(event:MouseEvent):void { gotoAndPlay(1,"TOP"); } ■2フレーム目■ プログラムソースは、下記の通りで、2フレーム目に記載しております。 //時計のプログラム addEventListener(Event.ENTER_FRAME, updateDate2); function updateDate2(event:Event):void { //Dateクラスの設定 var dateObj = new Date(); //時間 tanshin2_mc.rotation = dateObj.hours*360/12 + dateObj.minutes*360/12/60; //分 choshin2_mc.rotation = dateObj.minutes*360/60 + dateObj.seconds*360/60/60; //秒 secondhand2_mc.rotation = dateObj.seconds*360/60 + dateObj.milliseconds*360/60/1000; } //この画面でストップ stop(); このソースでタイムラインの秒針Byoshin・長針Choshin・短針Tanshinの3つを動かしております。 (Bisuやバックグランドは飾りです) アドビヘルプだと、Null にプロパティがないそうですが、時計は、永遠に回り続けるため、一つのフレームでアクションが完結することがありません。 その為、フレームを変えてもうまく行きませんでした。 初心者でどこが駄目なのかわからず、泣きそうです。 お分かりになる方がおりましたら、お知らせくださいませ。 どうぞ、よろしくお願いいたします。

  • Flash
  • 回答数1
  • ありがとう数2

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

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

別の "TOP" シーン にジャンプした後も, addEventListener(Event.ENTER_FRAME, updateDate2); が有効になり続けるため 各針への参照が切れてしまうのが原因ではないかと思います。 フレーム1 のスクリプトを 次のように変更すると(1行付け加えると) 無事にパブリッシュできるような気がします。 top2nd_btn.addEventListener(MouseEvent.CLICK, fl_top22); function fl_top22(event:MouseEvent):void { //1フレーム進む時間ごとに毎回 //updateDate2 を実行させるのを取り消す↓ removeEventListener(Event.ENTER_FRAME, updateDate2); gotoAndPlay(1,"TOP"); }

Yoshitaka2011
質問者

お礼

BlurFiltan 様 はじめまして。 早速のご回答ありがとうございます。 無事に、シーン移動が出来るようになりました。 本当にありがとうございます。 取り急ぎ、お礼まで。

関連するQ&A

  • flashcs4 as3.0のエラーについて

    TypeError: Error #1010: 条件は未定義であり、プロパティがありません。 at 2mouse_03_fla09_as3_fla::MainTimeline/mymouse() 以下のスクリプトを実行すると上記のエラーが発生してしまいます。 ネットで調べてもわかりませんでした。AS3.0を学習していることろです。 よろしくお願いいたします。 ---------------------------------------------------------- やっていることは、マウスをMC(mc)に変換して、mc1との当たり判定をしたいだけです。 実行すると、実行画面でマウスを動かすと同時に上記のエラー出てしまいます。 ----------------------------------------------------------- stop(); mc.visible=false; myb.stage.addEventListener(MouseEvent.CLICK, mystart); function mystart(event){ myb.visible=false; Mouse.hide(); mc.visible=true; mymouse(event); } mc.stage.addEventListener(MouseEvent.MOUSE_MOVE,mymouse); function mymouse(event):void{ mc.x = stage.mouseX; mc.y = stage.mouseY; mc.event.updateAfterEvent(); } mc.stage.addEventListener(Event.ENTER_FRAME,mymc); function mymc(event){ if(mc1.hitTestObject(mc)){ mc.stage.removeEventListener(Event.ENTER_FRAME,mymouse); mc.visible=false; } }

    • ベストアンサー
    • Flash
  • actionscript3.0 rotationについて

    actionscript3.0 rotationについて btnを押すごとにmcを時計回りに90度減速させながら回転させたいと思っています。 しかし2回ボタンを押して180度回転させるまではうまくいくのですが 3回目に270度になると、回転がとまりません。 分岐させて、-90度回そうと思うと(当たり前ですが)逆回転してしまいます。 どのように記述すればよいでしょうか? よろしくお願いします。 以下スクリプトです。 var i:int=0; function onEnter(event:Event):void{ mc.rotation += (i-mc.rotation)*0.1; } addEventListener(Event.ENTER_FRAME, onEnter); btn.addEventListener(MouseEvent.MOUSE_DOWN, MouseLDownFunc); function MouseLDownFunc(event:MouseEvent):void{ i+=90; };

    • ベストアンサー
    • Flash
  • ボタンをクリックして画面遷移させる方法について

    flash初心者です。 cs4でAS3.0を使っています。 ボタンをクリックするとgotoAndPlayでラベルの指定してあるフレームに飛ぶように設定したいのですが、クリックしても全く反応してくれません。 ボタンは「next」と「top」の2つを画像(ボタンシンボル)で作成しています。 アニメーション後にこの2つのボタンが出て、それぞれをクリックすると別のアニメーションに飛ぶという流れを考えています。 記述したAS3.0は下記です。 --------------------------- stop(); var topBtn01:SimpleButton = new SimpleButton(); var nextBtn01:SimpleButton = new SimpleButton(); topBtn01.addEventListener(MouseEvent.CLICK,top01Click); nextBtn01.addEventListener(MouseEvent.CLICK,next01Click); function top01Click(event:MouseEvent):void{ gotoAndPlay("top01"); } function next01Click(event:MouseEvent):void{ gotoAndPlay("next01"); } ----------------------------------- それぞれのボタンにインスタンス名を「topBtn01」「nextBtn01」とつけています。 ちなみに、エラーは何も出ていません。 ただ、変数を定義しているはじめの2~3行目を抜くと下記のエラーが出ていました。 --------------------------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at top_main_fla::MainTimeline/frame251() --------------------------- どうしたら良いか、どなたか教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Flash
  • AS3のボタンアクションについて

    FlashCS3 ActionScript3.0 ボタンアクションでつまづいています。 http://www.cucinadicasamia.fr/ 上記サイトのように、ボタンをクリックすれば、ダウンの状態を保持、 他のボタンをクリックでダウンの状態を解除。 のようにしたいのですが、上手くいきません。 下記のようにコードを書いたのですが。。。 A_mc.addEventListener(MouseEvent.CLICK,Click); A_mc.addEventListener(MouseEvent.ROLL_OVER,Over); A_mc.addEventListener(MouseEvent.ROLL_OUT,Out); B_mc.addEventListener(MouseEvent.CLICK,Click); B_mc.addEventListener(MouseEvent.ROLL_OVER,Over); B_mc.addEventListener(MouseEvent.ROLL_OUT,Out); function Over(event:MouseEvent):void{ event.target.gotoAndPlay("B"); } function Out(event:MouseEvent):void{ event.target.gotoAndPlay("A"); } function Click(event:MouseEvent):void{ trace("click"); event.target.gotoAndPlay("C"); } A_mc.buttonMode = true; B_mc.buttonMode = true; /////////////////////////////////////////////////////////////////////// function Clickとfunction Overが同時に発生しているので上手くいかないのでしょうか。。。 ご教授お願いいたします。

  • ボタンを押して

    下記のように記述して、ボタンを押すとフレーム2に飛ぶようにしました。 ____________________________________________________________________________________________________________________________ btn02_mc.addEventListener(MouseEvent.CLICK, fl_ClickToGoToAndPlayFromFrame_2); function fl_ClickToGoToAndPlayFromFrame_2(event:MouseEvent):void { gotoAndPlay(2); } ____________________________________________________________________________________________________________________________ しかし、もう一度同じボタンを押すと、フレーム2が開始されずにフレーム1が開始されます。 フレーム1になり、フレーム1中に再度、このボタンを押すとフレーム2が開始されます。 私がやりたいのは、このボタンを何度押してもこのボタンを押した際には、フレーム2が開始されるようにしたいです。 よろしくお願いします。

  • ボタンについて(CS4,AS3)

    HPのメニュー用に、クリックするとフレーム移動するボタンを作っています。 フレーム1以外のフレームには、フレーム1に設置してあるボタンで指定したフレームとは異なるフレームに 移動させたいので、新たにフレーム1のボタンとは別のボタンを設置しています。 プレビューでフレーム1のボタンをクリックすると正常に動くのですが、 フレームが移動した後に再度ボタンをクリックすると動かず、全てのボタンが反応しません。 ■フレーム1に設置してあるボタン test_a1.addEventListener(MouseEvent.CLICK , testA1); test_b1.addEventListener(MouseEvent.CLICK , testB1); test_c1.addEventListener(MouseEvent.CLICK , testC1); function testA1(event : MouseEvent) :void{ gotoAndPlay(1); } function testB1(event : MouseEvent) :void{ gotoAndPlay(51); } function testC1(event : MouseEvent) :void{ gotoAndPlay(101); } ※フレーム1、51、101にはstop();で停止するようにしています。 ■フレーム51に設置してあるボタン test_a2.addEventListener(MouseEvent.CLICK , testA2); test_b2.addEventListener(MouseEvent.CLICK , testB2); test_c2.addEventListener(MouseEvent.CLICK , testC2); function testA2(event : MouseEvent) :void{ gotoAndPlay(11); } function testB2(event : MouseEvent) :void{ gotoAndPlay(61); } function testC2(event : MouseEvent) :void{ gotoAndPlay(111); } コンパイルエラーは出ていません。 ネットで調べても何故、フレーム1以外のボタンが動かないのか分かりません。 どなた様か教えていただけると助かります。 使用しているソフトはAdobe Flash CS4で、スクリプトはActionScript3.0です。 よろしくお願いします。

  • flashcs4 as3.0のエラーについて

    フレーム1にボタンを配置して ボタン(myb)を押すと、ボタンが消えると同時にマウスがmc表示に変わり mcをドラッグしてmc1に当たると、フレーム2の画面が表示するようにしたいのですが ムービープレビューして試してみると、フレーム2の画面(TツールでCLEARを書いているだけ)は表示するのですが、次のエラーが表示されてしまいます。 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」 どのように回避したらよいのでしょうか。よろしくお願いいたします。 stop(); mc.visible=false; myb.stage.addEventListener(MouseEvent.CLICK, mystart); function mystart(event){ myb.visible=false; Mouse.hide(); mc.visible=true; mymouse(event); } mc.stage.addEventListener(MouseEvent.MOUSE_MOVE,mymouse); function mymouse(event):void{ mc.x = stage.mouseX; mc.y = stage.mouseY; event.updateAfterEvent(); } mc.stage.addEventListener(Event.ENTER_FRAME,mymc); function mymc(e:Event):void{    if(mc1.hitTestObject(mc)){ gotoAndStop(2); } }

    • ベストアンサー
    • Flash
  • Flash(ActionScript3.0)

    Flash(ActionScript3.0)でゲーム制作を行っています。 ActionScriptもFlashも最近初めて触れた初心者で、分からないことがたくさん湧いてきて困っています。 よろしければご回答お願い致します。 インスタンスをドラッグすることができる、という要素と、 インスタンスをクリックすると45度回転する、という要素を同時に入れたいのですが、 同時にプログラムを組むとドラッグだけをすることができず、 どうしてもドラッグ後に45度回転してしまいます。 (プログラムのソースはネットから拾ってきたものです)。 どうすればドラッグと回転を分けることができるのでしょうか。 プログラム自体は以下のように組みました。 ご回答いただければ嬉しいです。 よろしくお願い致します。 //インスタンスの回転プログラム mc1.addEventListener(MouseEvent.CLICK, kaiten); function kaiten(event:MouseEvent) { mc1.rotation += 45; } //インスタンスのドラッグプログラム //インスタンスの0点からのマウス座標用変数 var mc1X:int; var mc1Y:int; //マウスがインスタンスを押したらsec1開始 mc1.addEventListener(MouseEvent.MOUSE_DOWN,sec1); //sec1 マウスダウン座標確認、sec2開始 function sec1(event:MouseEvent):void { mc1X = event.localX; mc1Y = event.localY; addEventListener(MouseEvent.MOUSE_MOVE,sec2); } //sec2 インスタンス移動 function sec2(event):void { mc1.x = mouseX-mc1X; mc1.y = mouseY-mc1Y; //低FPSマウス移動スムーズ対応 event.updateAfterEvent(); } //マウスが離れたらsec3開始 stage.addEventListener(MouseEvent.MOUSE_UP,sec3); mc1.addEventListener(MouseEvent.MOUSE_OUT,sec3); //sec3 sec2停止 function sec3(event):void { removeEventListener(MouseEvent.MOUSE_MOVE,sec2); }

  • 出力するとエラーメッセージが出ます

    FLASHCS4でAS3.0を使ってます。 インスタンス名「_1mc」と言うオブジェクトを作成し、そのオブジェクトが浮遊するアニメーションを作成して、そのオブジェクトにマウスカーソルが触れるとマウスオーバーで「_1mc」の「61」へ移動し、マウスアウトで「1」に移動するように作りました。 そしてプレビューすると動作は特に問題なく作動しますが、出力には下記のようなメッセージが表示されます。このままでも問題ないのでしょうか?または別の記述方法を行う事で、このメッセージは回避出来るのでしょうか?その場合の記述方法を教えてください。 --------------------------------------------------------------- TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at takaragawa_fla::MainTimeline/xEnterFrame() --------------------------------------------------------------- 「_1mc」を設置してあるフレームには下記のスクリプトを記述しました var step1X:int=Math.floor(Math.random()*1)+5; var step1Y:int=Math.floor(Math.random()*1)+5; if (Math.random()<0.5) { step1X*=-1; } if (Math.random()<0.5) { step1Y*=-1; } _1mc.addEventListener(Event.ENTER_FRAME, x1EnterFrame); function x1EnterFrame(evt) { _1mc.x+=step1X; _1mc.y+=step1Y; if (_1mc.x>=800||_1mc.x<=0) { step1X*=-1; } if (_1mc.y>=550||_1mc.y<=0) { step1Y*=-1; } } //ロールオーバーの設定 _1mc.addEventListener(MouseEvent.ROLL_OVER,xOver); //ロールアウトの設定 _1mc.addEventListener(MouseEvent.ROLL_OUT,xOut); //ロールオーバーしたとき function xOver(evt:MouseEvent):void { _1mc.gotoAndPlay(61); } //ロールアウトしたとき function xOut(evt:MouseEvent):void { _1mc.gotoAndPlay(1); } -------------------------------------------------------------- 以上ですので、アドバイスをお願い致します。よろしくお願い致します。

  • actionscript3.0について教えてください。

    actionscript3.0について教えてください。 Flash CS4で、マウスオーバーすると画像が表示するものを制作しました。 (全レイヤー、1フレーム目のみで制作していました) そして最近その以前制作したものの直前に別のムービーを入れることになり、 画像のように1フレーム目から4フレーム目まであけました。 そしてもともとあったフレームをすべて5フレーム目に移動しました。 すると、エラーが出るようになりました。 5フレーム目に移動するとエラーが出るようになってしまったので、 試しに2フレーム目、3フレーム目など試しましたが同じくエラーが出ました。 エラーの内容は TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。 at test_fla::MainTimeline/frame5() です。 下記のスクリプトを上から二つ目のレイヤーに記述しています。 一番上のレイヤーには、stop();と記述しています。 超初心者のため説明不十分かもしれませんが、宜しくお願いいたします。 /*ボタン1 */ nav1txt_mc.visible = false; nav1_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover); function onMouseover(e:MouseEvent):void{ nav1txt_mc.visible = true; nav1txt_mc.gotoAndPlay("nav1txt_mc"); } nav1_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay); function nondisplay(e:MouseEvent):void{ nav1txt_mc.visible = false; } /*ボタン2*/ nav2txt_mc.visible = false; nav2_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover2); function onMouseover2(e:MouseEvent):void{ nav2txt_mc.visible = true; nav2txt_mc.gotoAndPlay("nav2txt_mc"); } nav2_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay2); function nondisplay2(e:MouseEvent):void{ nav2txt_mc.visible = false; } /*ボタン3*/ nav3txt_mc.visible = false; nav3_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover3); function onMouseover3(e:MouseEvent):void{ nav3txt_mc.visible = true; nav3txt_mc.gotoAndPlay("nav3txt_mc"); } nav3_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay3); function nondisplay3(e:MouseEvent):void{ nav3txt_mc.visible = false; } /*ボタン4*/ nav4txt_mc.visible = false; nav4_btn.addEventListener(MouseEvent.MOUSE_OVER,onMouseover4); function onMouseover4(e:MouseEvent):void{ nav4txt_mc.visible = true; nav4txt_mc.gotoAndPlay("nav4txt_mc"); } nav4_btn.addEventListener(MouseEvent.MOUSE_OUT,nondisplay4); function nondisplay4(e:MouseEvent):void{ nav4txt_mc.visible = false; } 宜しくお願いいたします。

    • ベストアンサー
    • Flash

専門家に質問してみよう