• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Flashパブリッシュエラー)

Flashパブリッシュエラー、ソースの記述が間違っているのか別の原因か

このQ&Aのポイント
  • Flash初心者が記事を参考に写真ギャラリーを作成する際に、パブリッシュするとエラーが発生。
  • イベントのロードエラーが発生しており、function scroll (event:Event) :Void { の記述が間違っている可能性がある。
  • ソースの記述を確認し、スクロール値が動的に変化するif文も追加する必要がある。

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

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

Flash 作成において最も重要な「バージョン」の記述が抜けていますよ。 いったいどのような状況でそのようなエラーが出たのでしょうか? つまり 「その状況」 に問題があると思います。 書かれていらっしゃるスクリプトは, どう見ても ActionScript 3.0 (の少し間違い入り) です。 少なくとも ActionScript 3.0 を使用できる Flash のバージョンを持っている必要があります。 ActionScript 3.0 を使用できる Flash のバージョン とは, 現在 Flash CS3 と Flash CS4 です。 たとえば Flash 8 では ActionScript 3.0 は使えないので Flash 8 ActionScript 2.0 設定では ----------------------------- **エラー** シーン = シーン 1, レイヤー = レイヤー 1, フレーム = 1 :行 10:クラスまたはインターフェイス 'Event' をロードできませんでした。 function scroll (event:Event) :Void { ActionScript エラー数 :1 報告済みエラー :1 ----------------------------- というエラーが出ます(=当たり前です)。 Flash CS3 や Flash CS4 であっても, パブリッシュ設定で ActionScript のバージョンを ActionScript 2.0 や 1.0 にすると, ----------------------------- クラスまたはインターフェイス 'Event' をロードできませんでした。 function scroll (event:Event) :Void { ----------------------------- というエラーが出ます。 === === === === === === ちなみに, スクリプトで1箇所確実に間違っている部分があります。 //マウスのX座標によってスクロール値が動的に変化する function scroll (event:Event) :Void {    ↓訂正↓ //マウスのX座標によってスクロール値が動的に変化する function scroll(event:Event):void { ActionScript 3.0 では,Void ではなく void が正解です。 Flash CS3 または Flash CS4 をお持ちで, なおかつ パブリッシュ設定で Player のバージョンを Flash Player 9 または 10 にして, なおかつ パブリッシュ設定で ActionScript のバージョンを ActionScript 3.0 にして, なおかつ ステージ上に 「photos_mc」 というインスタンス名のムービークリップを用意して, なおかつ メインのタイムラインのフレームに次のようなスクリプトを書けばエラーは出ません。 ----------------------------------------- //ステージの幅の中心を求める変数を作成 var stageCenter:Number=stage.stageWidth/2; //スクロール終点のX座標を求める変数を作成 var scroolEnd:Number=stage.stageWidth-this.width; //イベントリスナーを登録 photos_mc.addEventListener(Event.ENTER_FRAME,scroll); //マウスのX座標によってスクロール値が動的に変化する function scroll(event:Event):void { var scrollValue:Number = (stageCenter-stage.mouseX) *0.05; this.x+=scrollValue; //この行に次の「手順3」のif文を記述する } ----------------------------------------- ただし, this.width や this.x の this とは何なのか。 このthisの示すものによってスクリプトを書く場所などを変える必要があるように思います。 つまり this が何を指すのかは作者でないとそれを使っている意図がわかりません。 メインのタイムラインのフレームに書くべきスクリプトかどうかは知りませんが, 仮に メインのタイムラインのフレームに上のスクリプトを書けば, エラーも出ませんし,なんとなくそれっぽい動きはします。 === === === === === === Flash は超高速に進化し続けているソフトです。 昔も今もできることや仕様が変わらないという死んだようなソフトではありません。 とにかく最も重要なのは「バージョン」です。 「void」 や 「this」 など細かいことはその後です。

usk99
質問者

お礼

返答が遅くなり失礼いたしました。 非常に丁寧に教えていただきありがとうございます。 結果、ご指示通りにしましたところ 問題なく動作しました。 原因はご指摘通りActionScript 2.0で パブリッシュしていたことによるものでした。 今までActionScript 3.0にふれたことがなかったので まったく気づきませんでした。 こういった質問にも慣れてなく、 次からは環境についても細かく書きたいと思います。 ありがとうございました。

関連するQ&A

専門家に質問してみよう