- ベストアンサー
続きから再生する方法
flash起動時に前回起動したタイムラインから再生することはできますか? 終了時に自動的にセーブし、起動時に自動的にロードというようなものです。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
#1の方の書かれている方法の具体的な一例です。 >> flash起動時に前回起動したタイムラインから再生 はて??? ここは, 「flash起動時に前回 "終了" したタイムラインから再生」 の書き間違いでしょうね,おそらく。 最初に起動するのは普通はフレーム1ですから, 次回来たときに表示させる,前回起動したタイムラインというのは,フレーム1。 何回来ても前回起動したタイムラインはフレーム1なので… つまり普通のFlashになってしまします。 以下は「flash起動時に前回 "終了" したタイムラインから再生」は についてですが…。 ActionScriptには, SharedObjectクラス と呼ばれる,JavaScriptでいうところの Cookie よのうなものがあって, この SharedObject を使って,ローカルPCにデータをセーブする方法があります。 >> 終了時に自動的にセーブし、起動時に自動的にロードというようなものです。 それは,良いのですが, もし,最終フレームで stop(); させるものでしたら, 最終フレームまで見てしまったときはどうするのですか? ご質問からはそこがわかりませんが, 最終フレームに stop(); は書いていない, ループ再生されるアニメーションと仮定して, 上のURLをもう少し書き直してみます。 また,フレーム1 と フレーム2 は,スクリプト実行のためのフレームとするので, そのフレームには本編アニメーションに関するものは置かないようにしてください。 本編アニメーションは フレーム3 から始まるものとします。 ----フレーム1 のスクリプト --------------- //---全フレームロード待ち処理-----// // とりあえずストップ this.stop(); // 1フレーム進む時間ごとの毎回実行 this.onEnterFrame = function() { // 全てのフレームがロードされたらスタート if (this._framesloaded>=this._totalframes) { this.play(); delete (this.onEnterFrame); } else { this.stop(); } }; ------------------------------------ ----フレーム2 のスクリプト --------------- //--- 再生されているフレーム数をSharedObjectに記録---// // SharedObject を作成 myObject = SharedObject.getLocal("solFrame"); // もし sol ファイルに myFrameという変数があったら if (myObject.data.myFrame != undefined) { //このMCの変数 myFrame にsol の myFrame の値を格納 myFrame = myObject.data.myFrame; //もし sol ファイルに myFrameという変数がなかったら } else { //変数myFrameに 3 を代入 myFrame = 3; } _root.gotoAndPlay(myFrame); //1フレーム進む時間毎に1回以下を実行 this.onEnterFrame = function() { //SharedObject の 変数 myFrame に今のフレーム数をセーブ myObject.data.myFrame = _root._currentframe; }; ------------------------------------- ----最終フレーム のスクリプト ------------- this.gotoAndPlay(3); ------------------------------------- データをセーブするとかしないとかいう問題ではなくて, Flashが表示されて,いきなり ロードされていないフレームに, gotoAndPlay(); はできません。 無いフレームには行けないので,ムービーが止まってしまいます。 ですから,フレーム1のスクリプトで全フレームのロード待ち処理をいれています。 フレーム1に何も置かない場合でなおかつSWFのファイルが重い場合, しばらく空白画面しか表示されないと思います。 空白画面が気になるようでしたら, フレーム1 のスクリプトを消して, よく見かける「Now Loading...」とか「読み込み中...」のような表示ができるものを使ってくださってもかまいません。 「ローディングムービー作成」 http://www.1art.jp/flash/le/lesson38/lesson38.htm 「Now Loadingのサンプル5個セット」 http://f-site.org/articles/2004/03/18005544.html その他, この辺↓からでも検索すれば,Now Loading 作り方やサンプルはたくさん出てきます。 http://www.google.com/search?hl=ja&q=Now+Loading+Fla&lr=lang_ja 最終フレームには何も書かないと, フレーム1 にもどってしまい,チラッと空白が見えるので, this.gotoAndPlay(3); で フレーム3 に戻るようにしています。 上記スクリプトは Flash MX 以降のバージョンで使用可能です。 Flash 5 以下では無理です。 もし,Flash 5 以下しかお持ちで無い場合は, それこそ,ActionScript ではなく JavaScript の Cookie を使うとか, CGI などサーバーサイドの言語と連携するようなことを考えるしかありません。
その他の回答 (3)
- chem_taro
- ベストアンサー率32% (33/101)
どのようなものを望んでおられるかがわからないのでなんとも言えませんが、タイムラインの要所要所にDVDのようなチャプターのようなラベルを設定し、ユーザーから「SKIP」のようにして、任意に前回見てもらった部分をスキップしてもらってはいかがでしょうか。
#2です。 携帯用のFlashの規格(バージョン)には, Flash Lite 1.0 ,Flash Lite 1.1 ,Flash Lite 2.0 という3つの規格(バージョン)があるのですが, Flash Lite 1.1 まで(今現在売られている物の主流?)では不可能です。 Flash Lite 2.0 規格の携帯ならおそらく可能だと思います。 Flash Lite 2.x ActionScript 入門 > サポートされていない、または一部のみサポートされているクラス > 「 SharedObject クラス」 http://livedocs.macromedia.com/flashlite/2_jp/main/00000125.html しかし, この Flash Lite 2.0 という規格はつい先日(?)の2006年1月頃発表になった規格で, Flash 8 の発売より後なので,Flash Professional 8 でも,デフォルト仕様では作成できないのでアップデートが必要です。 また,Flash Lite 2.0 対応機種(携帯端末)はすでに売られている物かどうなのかもよく知りません。 この辺↓を検索したり, http://www.google.co.jp/search?hl=ja&rls=GGLD%2CGGLD%3A2004-34%2CGGLD%3Aja&q=Flash+Lite+2.0+%E6%A9%9F%E7%A8%AE&lr= その他ニュースや宣伝や各メーカーのHPなどを,頻繁に調べていると, そういう対応機種情報もわかってくるかもしれません。 というわけで, 今(2006年6月3日)現在,携帯電話の待ち受けで,#2のスクリプトは使えないと考えるのが妥当だと思います。 しかし将来的(1~2年後?)には可能になるとは思います。 私は,携帯を持っていないのでよくわからないのですが, 待ち受け画面というのは,ダウンロード&保存して使うものなのですよね(違うかも…)? もしネット接続環境ではなく,完全にダウンロード&保存するものであれば,CGIも使えないと思います。 したがって, SharedObject以外の他の方法を使っても無理だと思います。 ということです。 非常にグレーな回答ですが,時代と共に変わる回答ですし, 個人の持っている携帯の機種やFlashのバージョンにも左右されますから, 上のようにしか答えざるを得ません。 今現在はおそらく不可能という結論です。 なお,携帯がFlashを読み込む場合は, PCのように随時読み込む端から表示するストリーミング再生ではなく, SWFが完全にロードされてから再生が始まるので, もし,将来的に#2のようなスクリプトを使う場合,フレーム1のロード待ち処理は不要です。 フレーム2 のスクリプトを フレーム1 にズラして使うような形になると思います。
- chem_taro
- ベストアンサー率32% (33/101)
バージョンにも寄りますが、MX以降であれば、SharedObjectを使えば、固有のデータをswfに持たせることができたと思います。 検索エンジンで検索してみるといいサイトが見つかるかも。よくゲームとかでハイスコアを保持しておくのに使うので解説しているサイトがたくさんあると思います。 とりあえず、参考URLに解説がわかりやすそうなところをかいておきました。
お礼
質問の補足までしていただき、ありがとうございます。 携帯の待ち受けflashにも同じことができるでしょうか? 大変参考になります。勉強してつくります。