Flash MXについて質問です。rootの最後のフレームに

「this.stop();」のアクションを追加しています。当方WinXPの環境では
問題なく、ループせずに最後のフレームで停止するのですが、
Mac環境のクライアントの方に「ループしてしまう」と言われました。
swfファイルは「player 6」のバージョンで書き出しています。
ループする原因の分かる方、よろしくお願いします。

回答の条件
  • URL必須
  • 1人2回まで
  • 登録:
  • 終了:--
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

回答4件)

id:yum_oyaji No.1

回答回数1ベストアンサー獲得回数0

ポイント25pt

thisは、オブジェクトに対して定義するものであり、フレーム制御するのであれば stop(); でことたるでしょう。オブジェクト指向で制御したほうが色々な問題は回避できると思います。

ただ、this.stop(); とMacクライアントは関係ありません。問題があるとすれば、Macクライアントのブラウザ種別/バージョン/プレーヤーのプラグイン/バージョンあたりでしょう。

id:nogucyan

thisの指定は気になっていたんですけどねぇ。

stop();もしくは、_root.stop();でしょうか。

2004/07/08 16:12:52
id:mken03 No.2

回答回数47ベストアンサー獲得回数0

ポイント25pt

フラッシュプレイヤー(プラグイン)のバージョンが

古いのではないでしょうか。再生側のバージョンが分かりませんが、そう仮定しての対処です。

古いバージョン(たしかver4以前)ではthisが解釈できないと思います。ので、

・thisをなくしてstop();にする

・Player4で書き出す

・最初にバージョンチェックを行う

などが必要かと思います。

id:nogucyan

なるほど、そうかもしれません。

Player4でやってみます。

もう少し、回答を待ってみます。

2004/07/15 19:20:21
id:HaoHao No.3

回答回数2ベストアンサー獲得回数0

ポイント25pt

当方MacOS9+FlashMX+Flash Player 7環境で作成しています。参考書として上野亨氏の「FLASH ActionScriptバイブル」を愛読しつつ、いまだに勉強中の身なので、まちがっていたら申し訳ないのですが、_rootの最後フレームにthis.stop();は頻繁に使用していますが、自分のMac上では、ご質問のような状況にはなったことはありません。

上記の参考書はFLASH5対応なのですが、それによりますと、『現バージョンのActionScriptには、旧バージョンとの互換性を保つために、MovieClipオブジェクトのメソッドと同じ名前を持つ「単独のアクション」が残されて』いて、『thisを省略した場合は、それがメソッドなのか、単独のアクションなのか、判断できなくなってしま』い、エラーになってしまうことがあるそうです。

しかし、play()やstop()であれば『たまたま、メソッドとアクションが、全く同じものであるから』どちらでも同じ動きになります。

また_rootという『大元のタイムラインもMovieClipオブジェクトの1つ』であるそうですから、オブジェクト指向の鉄則に乗っ取るならthis.stop()にしなければいけない…と私は頑に信じきっていました。(フレームアクションでonEnterFrameアクションを記述する時、thisがないとシンタックスエラーが出てしまいますよね?…関係ないかな?)

ただ、これがMX版のActionScriptになるとどうなっているのかは存じませんが、MX自身に内蔵されているリファレンスパネルで「this」を調べてみると、FlashPlayer5からの対応となっています。

ということで、上段の回答者の方たちが仰るように、クライアントさんのプレイヤーがver.4以下である可能性が高いのではないでしょうか。

と、長々と書いてしまいましたが、結局同じ答えとなりました。すみません。

私もクライアントに変な動きになると指摘されたこともありますが、たまたま先方が復数台パソコンを所持していたので、プレイヤーのバージョンによって動きが違うということがわかり、プレイヤーを新しいものにアップデートしてもらい、解決しました。

id:nogucyan

私も例のver5時代のバイブルを愛読してました。(^-^*)

HaoHaoさんの体験談から考えて、Mac環境の方すべてがループする、というわけではなさそうなので、安心しました。

2004/07/15 19:34:14
id:mken03 No.4

回答回数47ベストアンサー獲得回数0

ポイント25pt

2度目すみません。若干、話がそれるかもしれません。

パブリッシュなど使用しておりましたら、HTMLのループをオフにしたりするのも良いかもしれません。

また、最後から数フレーム手前にラベル作って最後のフレームに

gotoAndPlay(”ラベル”);

で、「止める」のではなくループさせてしまうのも手ですね。これならプレイヤーバージョンは関係しません。問題の切り分けとして試すのもよいかもしれません。

id:nogucyan

後から調べるうちに、書き出したHTMLのループ設定の存在にも気がついたんです。でもって、それが原因かなあ、と。でも、(少なくとも当方のWin環境では)swfのアクションで停止させるようにしていると、HTML側の設定に関わらず、ループしませんでした(うーん、どういうときに使うのだろう?)。最後のアイデアも、最後の切り札として参考になりました。

とりあえず、現行バージョンでは問題なさそうなので、安心しました。

2004/07/15 19:48:39

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません