• ベストアンサー
  • すぐに回答を!

FLASHでコンパイルエラーが出てしまいます

  • 質問No.7587694
  • 閲覧数186
  • ありがとう数1
  • 回答数1

お礼率 100% (1/1)

FLASH(CS5)にてカウントダウンを作っています。
(作っていますといっても、ネットでいろいろ調べて引用したものです:引用したサイト様はFLASH8で作成したようです)

しかしながら、
以下のAS(2.0で作成)を記載してダイナミックテキストに表示させようとしてもコンパイルエラーが出てしまいます。

コンパイルエラー内容

シーン=シーン 1, layer=ao, frame=1、行 7シンタックスエラー
※該当箇所:var currentTime = today.getTime();

シーン=シーン 1, layer=ao, frame=1、行 6演算子 '=' は、オペランドの前に来る必要があります。
※該当箇所:var today:Date = new Date();

AS内容
this.onEnterFrame = function(){
/* ------------------------------------------------------------
    ●現在のローカル時間を取得
    ●1970年1月1日0時から現在時刻までのミリ秒を取得
------------------------------------------------------------ */
    var today:Date = new Date();
    var currentTime = today.getTime();
/* ------------------------------------------------------------
    ●カウントダウンの日付を指定
    ※この場合は「2012年7月14日 0時0分0秒」とする
------------------------------------------------------------ */
    var targetDate:Date = new Date(2012,6,14,0,0,0);
/* ------------------------------------------------------------
    ●1970年1月1日0時からカウントダウンの日付までのミリ秒を取得
------------------------------------------------------------ */
    var targetTime = targetDate.getTime();
/* ------------------------------------------------------------
    ●【カウント日時】-【現在日時】=【残り時間】
------------------------------------------------------------ */
    var timeLeft = targetTime - currentTime;
/* ------------------------------------------------------------
    ●残り時間をそれぞれ「秒、分、時、日」に変換
------------------------------------------------------------ */
    var sec = Math.floor(timeLeft/1000);
    var min = Math.floor(sec/60);
    var hrs = Math.floor(min/60);
    var days = Math.floor(hrs/24);
/* ------------------------------------------------------------
    ●カウントダウン開始
    ※残り時間が過ぎていれば(マイナスであれば)カウントダウン停止&数字を空にする
------------------------------------------------------------ */
    if(timeLeft <= 0){
        delete this.onEnterFrame;
        _root.time_days.text = _root.time_hrs.text = _root.time_mins.text = _root.time_secs.text = "";
        /* --------------------------------------------------------
        カウント終了後、動作させたい場合はココに追記してください
        ※ページ移動なら、getURL("http://www.google.co.jp/"); など
        -------------------------------------------------------- */
    } else {
        days = string(days);

        //秒が1桁なら2桁に変換
        sec = string(sec % 60);
        if(sec.length < 2){
            sec = "0" + sec;
        }

        //分が1桁なら2桁に変換
        min = string(min % 60);
        if(min.length < 2){
            min = "0" + min;
        }

        //時が1桁なら2桁に変換
        hrs = string(hrs % 24);
        if(hrs.length < 2){
            hrs = "0" + hrs;
        }

        var counter_days:String = days;
        var counter_hrs:String = hrs;
        var counter_mins:String = min;
        var counter_secs:String = sec;

        _root.time_days.text = counter_days;
        _root.time_hrs.text = counter_hrs;
        _root.time_mins.text = counter_mins;
        _root.time_secs.text = counter_secs;</span>
    }
}


作成している全体図は
タイムラインにAS用のレイヤーを作成してそこに上記のASを入れています。

その下のレイヤーにメインとなるレイヤーにダイナミックテキストを4つ(日、時、分、秒)
その下のレイヤーに、装飾画像をいれています。

ダイナミックテキストのインスタンス名とASの出力する名前は間違っておりません。

ネットで調べて、コピペでできるはずとおもったのですが、「コンパイルエラー」出てしまい、
修正できず壁に当たっております。

御手数ですが、どなたか、ご教授下さい。

よろしくお願いいたします

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

  • 回答No.1
  • ベストアンサー

ベストアンサー率 91% (1611/1754)

最後の行には妙なHTMLタグのようなものが入っていますよね。

_root.time_secs.text = counter_secs;</span>

この「</span>」さえ削除すれば問題ないと思いますが。



私がしてみたことですが。

Flash を起動させて,
ActionScript 2.0 設定の新規ドキュメントを作成し
フレーム1 のステージ上には
「time_days」「time_hrs」「time_mins」「time_secs」という
インスタンス名を付けた4つのダイナミックテキストフィールドを用意しました。

そして
書かれていらっしゃるスクリプトを
フレーム1 にそのままコピペし
「</span>」を削除しました。

これでパブリッシュやムービープレビューすれば
難無く動くカウントダウンするものができましたよ。



書かれていらっしゃるような

> シーン=シーン 1, layer=ao, frame=1、行 7シンタックスエラー
> ※該当箇所:var currentTime = today.getTime();

というエラーは出ませんでした。
エラーとして出るのは上にも書いた「</span>」についてのみです。

ココ(このサイトのこのページ)にコピペされたスクリプトと
実際に Flash のフレーム1に書き込んだスクリプトが違うのではないでしょうか?

例えばその 7 行目がありますが↓
var currentTime = today.getTime();
この var の前に全角スペースなど入れていたら
そのようなエラーが出ます。
(ココに書かれたスクリプトにはそのようなものは入っていないようです。)
お礼コメント
shin2012shin

お礼率 100% (1/1)

BlurFiltan様
ありがとうございました!!

私も、BlurFiltan様のように、「</span>」をとり、直接同じフレームにASを記載したところ、希望したようにカウントダウンが動きました!

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

FLASHに関しては、以前も、別の疑問で、BlurFiltan様の回答を参考にさせて頂いたことがありました。

これからも勉強させて頂きますのでよろしくお願いいたします。

この度はありがとうございました
投稿日時:2012/07/14 09:39
関連するQ&A
ページ先頭へ