No.4ベストアンサー
- 回答日時:
#3 です。
まずは #2 で書いたスクリプトの(スクリプトのコメントの)訂正&お詫びをします。
1秒が1000ミリ秒ですから,1000ミリ秒が10秒というのは間違っていますね。すみません。
次のように訂正します。
-------------------------------------------
// このスクリプトを書いたフレームを停止
stop();
// 1000ミリ秒(1秒)後に実行
setTimeout(function () {
// このスクリプトを書いたフレームを再生
play();
}, 1000);
-------------------------------------------
で,#3 の 補足 に書いていらっしゃることへの回答です。
> この方法でタイムラインが半分以下になったにもかかわらず、
> ファイルサイズは同じ・・・と言う事は、フレームの長さはサイズに関係しないという> 事になるんですね?
動かすものがシンボル化されたインスタンスでしたら,
さほど変わらないでしょう。
スクリプトで動かすにしても,
モーショントゥイーンで動かすにしても,
どちらにしても結局,
「あるインスタンスをA地点でのAAという状態からB地点でのBBという状態に変化させろ」という命令を書いていることに違いはありませんから。
たとえば,
動かすインスタンスが1つのみで,
そのインスタンスが 100KB の JPEG 入りのグラフィックインスタンスやムービークリップインスタンスであったとします。
スクリプトで動かしてもモーショントゥイーンで動かしても,
結局そういうプログラム的なこと(インスタンスのプロパティを変化させるという命令)の容量はたいしたことありません。
せいぜい 数バイト~数キロバイト 程度でしょう。
100KB の JPEG の容量に比べれば全く無視できる大きさだということになります。
Flash(SWF) は動画ではありません。
インスタンスをなにがしかのデータやプログラムによって動かすものです。
したがってたいていは,
SWF の容量の大半は インスタンスの容量 ということになります。
シェイプトゥイーン を使った動きなどは,
フレームを使えば使うほど容量を食いますよ。
しかしちゃんとシンボル化されたインスタンスを動かしていれば,
そのインスタンスの容量が Flash(SWF) ファイルの大半になるのが普通です。
単純に言うなら,
「ActionScript を使用するのは容量を減らすためではない」
ということです。
度々ありがとうございます。
ご説明内容でよくわかりました。
また別の質問を近々する予定ですので機会がありましたらよろしくお願い致します。
本当にありがとうございました。
No.3
- 回答日時:
#2 です。
> まずタイムラインがaに来たときにストップ。
> 秒数(例えば10秒)が経過したらまたタイムラインが動く、
> bの画像のところにくる、ストップ・・・・繰り返し・・・
> の様な感じのイメージです。
それでしたら
setTimeout関数 を使うのが良いと思います。
[setTimeout ActionScript]でGoogle検索したら
最初に出てきたページです↓。
「FN0512001 - setTimeout()関数 - Flash テクニカルノート」
http://www.fumiononaka.com/TechNotes/Flash/FN051 …
他のFlash作成ソフトのための解説ページですが、
ActionScript は共通です↓。
「Suzuka 基礎・基本 セルフタイマー(setInterval setTimeout)」
http://suzupara.iinaa.net/kiso311.html
下の方のURLのスクリプトをちょっと改良して,
ストップ したいフレームをキーフレームにして,
次のスクリプトをそのキーフレームに書けば良いと思います。
--------------------------------
// このスクリプトを書いたフレームを停止
stop();
// 1000ミリ秒(10秒)後に実行
setTimeout(function () {
// このスクリプトを書いたフレームを再生
play();
}, 1000);
--------------------------------
その他の詳細説明は上記の 2ページ をご参考まで。
この回答への補足
回答ありがとうございます!
教えて頂いた最後のスクリプトをコピペでちゃんとできました!
おかげでタイムラインがすっきりして、扱いやすくなりました。
質問ついでにもう一つお伺いしたいのですが、
この方法でタイムラインが半分以下になったにもかかわらず、
ファイルサイズは同じ・・・と言う事は、フレームの長さはサイズに関係しないという事になるんですね?
もっと軽くなるかと思っていたので拍子抜けしています。
単純な画像の自動スライドショー的な作りをする時に、
ファイルサイズを軽く仕上げる方法とかありましたら、アドバイスいただきたいのですが・・・(^^;)
よろしくお願い致します。
No.2
- 回答日時:
> a.jpg→b.jpg→c.jpg
というのは,
Flash(FLAのシンボル)内に読み込んだ 「a.jpg」,「b.jpg」,「c.jpg」なのか,
SWFパブリッシュ後に,外部 「a.jpgファイル」,「b.jpgファイル」,「c.jpgファイル」をロードするのかよくわかりませんが,
もし,
JPEGがFlash(FLAのシンボル)内に読み込んだ ものであるとするなら,
必ずしも絶対に ActionScript が必要なわけではありませんよね。
「a.jpg」,「b.jpg」,「c.jpg」 をそれぞれのグラフィックシンボルやムービークリップなどにして,
そのインスタンスをステージ上でフェードイン&フェードアウトさせれば良いだけです。
もっとも ActionScript を使ってする方法も多数(無数に)ありますが,
使わなければ使わなくてもできます。
絶対に ActionScript が必要になる場合というのは,
SWFに 外部 「a.jpgファイル」,「b.jpgファイル」,「c.jpgファイル」をロードするときとなります。
したがって,
こちらの外部JPEGファイルをロードするしかたのご質問だと考えれば良いのでしょうか?
またフェードイン&フェードウトの方法(表示させ方)もたくさんありますが,
シンプルに
「a.jpg」がだんだん表示される
→ 「a.jpg」がだんだん消えて完全に見えなくなる
→ 「b.jpg」がだんだん表示される
→ 「b.jpg」がだんだん消えて完全に見えなくなる
→ 「c.jpg」がだんだん表示される
→ 「c.jpg」がだんだん消えて完全に見えなくなる
と考えて良いのでしょうか?
つまり,クロスフェードではない という意味です。
もし上記の場合であれば,
ムービークリップを1つ作成して,
そのムービークリップに外部JPEGをロードし,
その外部JPEGをロードしたムービークリップの
アルファを 0→100→0と変化させて
次のJPEGを同じムービークリップにロードする
という方法を使うのが普通です。
ActionScript でする場合もしない場合も,
どうするのかを "具体的に考えてから" でなければ,
作成もコーディングもできません。
これはActionScriptを使う使わないに限らず全く同じです。
この "具体的に考えること" ができなければ,何にしても全く作成できないということになります。
ついでに,
"具体的に考えたこと" の提示がなければまともな ActionScript の回答も当然できません。
上の例は勝手に 「私が考えた具体的な条件とその方法」 です。
その「私が考えた具体的な条件とその方法」で回答を続けます。
HTML と SWF と JPEG が任意のフォルダの直下に置いてあるものとします。
(これも私が勝手に考えた条件です)
任意のフォルダ
├ ○○.html (○○.swf を貼り付ける)
├ ○○.swf (a~c.jpg をロードする)
├ a.jpg
├ b.jpg
└ c.jpg
上記の 「○○.swf」 をパブリッシュする FLA ファイルのステージ上に,
小さな(または空の)ムービークリップを作成します。
そして例えば 「load_mc」 というインスタンス名を付けます。
その load_mc が存在するフレームのキーフレームに次のように書きます。
----------------------------------------------
// 配列 jpgArr にロードする JPEG のファイル名を登録
var jpgArr:Array = new Array();
jpgArr[0] = "a.jpg";
jpgArr[1] = "b.jpg";
jpgArr[2] = "c.jpg";
// 画像を切り替える時間を登録(単位:秒)
var timing = 7.5;
// ムービーのフレームレート を登録(単位:fps)
var fps:Number = 12;
// 1フレーム辺りにフェードインアウトする速さを登録
var spd:Number = 5;
// --- ↑以上が変更する設定 ↑------------
//
// ロード用のMC load_mc のアルファを 0 にする
load_mc._alpha = 0;
//
// 時間記録用の変数 time の宣言
var time:Number;
// JPEGカウント用の変数 cnt の初期化
var cnt:Number = 0;
//
// 切り替える時間-フェードアウトする時間 を算出
var timeLag:Number = 1000*timing-1000*100/spd/fps;
//
// ロードを監視するためのインスタンスを作成
var loadOBJ:Object = new Object();
// MovieClipLoaderクラスのインスタンスを作成
var loadMCL:MovieClipLoader = new MovieClipLoader();
//
// JPEGロード完了時の動作を定義
loadOBJ.onLoadInit = function(target:MovieClip):Void {
target._alpha = 0;
// 変数 time に時間を取得
time = getTimer();
// 1フレーム進む時間毎に随時実行
target.onEnterFrame = function():Void {
if (getTimer()-time<timeLag && this._alpha<100) {
this._alpha += spd;
} else if (getTimer()-time<timeLag) {
this._alpha = 100;
} else {
this._alpha -= spd;
if (this._alpha<0) {
if (cnt<jpgArr.length-1) {
cnt++;
} else {
cnt = 0;
}
loadMCL.loadClip(jpgArr[cnt], load_mc);
delete this.onEnterFrame;
}
}
};
};
// loadMCL のリスナーとして loadOBJ を登録
loadMCL.addListener(loadOBJ);
// 最初の JPEG を load_mc をターゲットにロード
loadMCL.loadClip(jpgArr[0], load_mc);
----------------------------------------------
この回答への補足
回答ありがとうございます。
なんか、一杯かいてもらってありがとうございます。m(_ _)m
えっと、僕の質問が悪かったですかね?
FLASH以外から読み込む方法があるなんて知らなかったので、結果的に説明不足となったようですね。重ね重ねスミマセン。
僕が求めているのは、「Flash(FLAのシンボル)内に読み込んだ「a.jpg」「b.jpg」「c.jpg」を、秒数で切り替えていく方法です。
この際、フェードインフェードアウトは置いといて、abc3つの画像があったとして、まずタイムラインがaに来たときにストップ。秒数(例えば10秒)が経過したらまたタイムラインが動く、bの画像のところにくる、ストップ・・・・繰り返し・・・
の様な感じのイメージです。
もちろんもうお分かりかと思いますが、それ以外の方法を知らないので、もっと簡単で格好いい方法があればそれを教えていただきたいのですが、現状、タイムライン0からアルファでフェードインして、aの画像を表示→10秒間タイムラインを増やして、フェードアウト、次の画像をフェードイン・・・というような方法で作成しているので(その方法しか知らない)、かなりタイムラインが長くなるのと、ファイルサイズが増えるのに悩んでいました。
なので、ちょっとでもファイルサイズが小さくなって、簡単にできれば言う事なしです。
私が言いたい事、求めている事、少しでもお分かりになりますでしょうか??(^^;)
ほんと、スミマセン。
No.1
- 回答日時:
http://iswebmag.hp.infoseek.co.jp/sample141.html
↑このあたりが参考になると思います。
スクリプトの記述も載ってますので、コピペで必要部分を書き換えてためしてみて下さい。
参考URL:http://iswebmag.hp.infoseek.co.jp/sample140.html,http://iswebmag.hp.infoseek.co.jp/sample141.html
この回答への補足
回答ありがとうございます。
・・・これはFLASHのことでしょうか?(^^;)
見る限りJavaScriptのように思えます。
ていうか、JavaScriptもFLASHも同じ??
すいません、そこらへんも良く分かってないので、よければ詳しく解説いただけると助かります。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCELのグラフを画像(JPG形式)で保存、通常実行がうまく行かない。ステップインはうまく行く 3 2022/08/30 12:06
- デジタルカメラ 画像のJPGファイルの「大きさ」と「サイズ」の意味の違いをお教えください。 8 2022/09/18 14:50
- Excel(エクセル) エクセル VBA For Next 繰り返しの書き方を教えてください 6 2022/09/01 14:11
- Visual Basic(VBA) 【VBA】写真の貼り付けコードがうまく機能しません。 5 2022/09/01 18:43
- JavaScript html5に変えるとスライドショーが消えてしまった。 3 2022/03/26 19:53
- Windows 10 Windows10にてjpg形式の画像が開けません 4 2022/08/24 14:37
- Windows 8 Route Generator の使い方 1 2023/05/03 00:36
- Illustrator(イラストレーター) ワードに貼った画像のキャンバスと画像本体のサイズの調整 2 2022/05/19 18:31
- Excel(エクセル) Excel 毎日手作業で時間がかかって、泣きたいです、、、VBAのプロの方、助けてください。。。 3 2022/10/25 04:26
- Illustrator(イラストレーター) 印刷プレビューに画像が表示されない 3 2022/09/06 14:34
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
外部テキストが読み込めません
-
as3 getChildByNameに変数を利...
-
【VB.NET】別Formのボタンが押...
-
Flash ActionScriptで変形点を...
-
unityの教科書を読んでいて出て...
-
Pythonを使ってせん断応力図、...
-
photoshopで書いた四角の枠の中...
-
DelphiのRichEditでカーソル位...
-
python ボタンを押すと複数の関...
-
四乗根を英語で言うと・・・
-
RPG(AS400)の本、サイトってあ...
-
VBScriptでMsgBoxのYesNoボック...
-
線と点の当り判定
-
ユーザーが更新できるFlashサイ...
-
autohotkeyかAutoITでGUiランチャ
-
左クリックを使わない新規テキ...
-
スクロールバーの自作の仕方
-
マウスオーバーで色が薄くなる...
-
FLASHのボタン操作について・・...
-
マウスホイールでムービークリ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【VB.NET】別Formのボタンが押...
-
DataTableの件数を取得したい
-
VB6.0で、フォームから、別のフ...
-
インスタンスとポインタ
-
フォームの生成と破棄
-
フェードイン-(待機)-フェー...
-
ハンドルからインスタンス?を取...
-
画像を一定時間ごとに切り替え...
-
「Me」を「Form1」にするとエラ...
-
VB6.0のHideのバグ?
-
CreateDialogについて
-
ウインドウハンドルとインスタ...
-
プログラミング、アーキテクチ...
-
GetModuleFileName(他のアプリ,...
-
カーソルを手に変更
-
BitmapをIDで指定したい
-
金曜日だけ表示されるボタン
-
flash MXのスクロールパネルに...
-
Flashの画面をJPEG画像にしてメ...
-
外部画像jpg又はswfの表示について
おすすめ情報