プロが教える店舗&オフィスのセキュリティ対策術

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()
---------------------------


どうしたら良いか、どなたか教えてください。
よろしくお願いいたします。

A 回答 (2件)

作ったボタンになにもSpriteを入れてないし


addChildもしてないみたいですが
もし、ステージ上の既存のインスタンスを
ボタンにしようとしてるのならこれは
新しくボタンを作る記述になっているので
そもそもそこから間違いです

多分topBtn01とnextBtn01という
既存のボタンのインスタンスが
タイムラインに現れるフレームに
これを記述してるんだと憶測しますが
タイムラインに途中から現れたインスタンスは
一度ENTER_FRAMEを待たないとアクセスできません

ですからこのフレームに書きたいなら
ENTER_FRAMEイベントを一度まってから
addEventListenerをするか

あるいは1フレーム目でボタンを作っておいて
visible=falseにするなりremoveChildしておいて
このフレームにきたらvisible=trueか
addChildするなりするようにするかです

この回答への補足

回答ありがとうございました。
スクリプトの実行タイミングってあるのですね。

ボタンの現れ方はENTER_FRAMEを使っているのではなく、
キーフレームでアニメーションさせているので、
どうやらキーフレームを打ってからインスタンス名をつけ、
アクションスクリプトを書いたのが問題のようでした。

H240S18B73さんのヒントを元に試行錯誤したら解決できました。
ありがとうございました。

補足日時:2010/01/23 15:02
    • good
    • 0
この回答へのお礼

すいません、補足の文章にお礼を書いてしまいました。

今回は僕の質問が説明不足の部分もありましたね。
すみませんでした。
ただ、H240S18B73さんのヒントをきっかけに解決できました。

ありがとうございました。

お礼日時:2010/01/23 15:14

1行目にstop()があるので、それ以降のコードが実行されていないのではないですか?

この回答への補足

回答ありがとうございます。

stop()は流れているムービークリップインスタンスを止めるもので、
アクションスクリプトを止めるものじゃないですよね?

と、勝手に思ってたのですけどどうなのでしょう。

補足日時:2010/01/22 18:07
    • good
    • 0
この回答へのお礼

この度は回答していただいてありがとうございました。
また何かあればよろしくお願いいたします。

お礼日時:2010/01/23 15:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!