お世話になります。
上記の件について、ご質問させて頂きます。
作成したムービーは以下の通りです。
aaa.swf←ムービー1
bbb.swf←ムービー2
main.swf←aaa.swfとbbb.swfを順番にロードして表示
今回、main.swf上でaaa.swf及びbbb.swfの再生状況(時間)を表示させ、先へ進んだり、前に戻ったり等を管理する
スライドバーを作成したいと思っています。
Flash初心者なので、やり方について調べてみてもわかりませんでした。。
教えてください。よろしくお願いします。
No.1ベストアンサー
- 回答日時:
シークバーですね
まずはmain.swfとかbbb.swfのことは忘れて
aaa.swfにシークバーをつけてみます。
_root上にseek_mc、box_mcというインスタンス名のmcを配置します。
図にすると
| ̄■■ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
■■ が seek_mc (■が2つありますが2つで一つのmcと見てください)
その周りにあるのが box_mc です。
seek_mc : シークバーのつまみの部分(以下シークバーと書きます)
シンボル化するときの基準点は
□■□
□□□
□□□ 真ん中の上
box_mc : シークバーの枠線
基準点は
■□□
□□□
□□□ 左上
//以下を_rootのフレームに記述-----------------------
//ドラッグしたときにシークバーの動く範囲
var left = this.box_mc._x+this.seek_mc._width/2;
var top = this.box_mc._y;
var right = left+this.box_mc._width-this.seek_mc._width;
var bottom = this.box_mc._y;
this.seek_mc._x = this.box_mc._x;
this.seek_mc._y = this.box_mc._y;
//シークバーを摘んだとき---------------------
this.seek_mc.onPress = function() {
// this は seek_mc を指す
_root.stop();
//割り当てた関数を削除する
delete _root.onEnterFrame;
this.startDrag(false, _root.left, _root.top, _root.right, _root.bottom);
//シークバーを移動させたとき
this.onMouseMove = MoveFrame;
};
//シークバーを離したとき---------------------
this.seek_mc.onRelease = function() {
this.stopDrag();
// 下でちょっと説明あり ---------------------------(1)
var p = (this._x-_root.box_mc._x)/(_root.box_mc._width-this._width);
_root.gotoAndPlay(Math.floor(_root._totalframes*p));
_root.onEnterFrame = _root.MoveSeek;
//割り当てた関数を削除する
delete this.onMouseMove;
};
//onMouseMove(マウスを動かしたとき)に実行する関数
// (シークバーをドラッグ中)
function MoveFrame() {
// this は seek_mc を指す
var p = (this._x-_root.box_mc._x)/(_root.box_mc._width-this._width);
_root.gotoAndStop(Math.floor(_root._totalframes*p));
}
//フレームが再生されているときに実行する関数
// (シークバーがドラッグされていないとき)
function MoveSeek() {
// this は _root を指す
p = _root._currentframe/_root._totalframes;
this.seek_mc._x = _root.left+(this.box_mc._width-this.seek_mc._width)*p;
}
//
_root.onEnterFrame = MoveSeek;
//--------------------------------------------------
まとめると、
・ムービーが再生されているときシークバーが動く
onEnterFrameで
現在のフレームを取得
全体のフレームの何%の位置にあるかを求める
シークバーのx座標をその%位置に移動させる
・シークバーを動かしたときにムービーの再生位置を移動させる
シークバーを動かすたびにx座標を取得
box_mc内の何%の位置にあるかを求める
フレーム位置をその%位置に移動させる
・シークバーを離したときにムービーの再生位置を移動させる
離したときにシークバーのx座標を取得
box_mc内の何%の位置にあるかを求める
フレーム位置をその%位置に移動させる
・seek_mc._x の値 (1)の補足説明
seek_mcの水平方向の基準点は中心なので中心位置のx座標が返ってきます。
なのでx座標の範囲は
|■■ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄■■|
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|←────────────→ | この範囲になる
ですのでシークバーの位置(%)は
[seek_mcのx座標 - box_mcのx座標 (左側の余白)]
/ box_mcの幅 - seek_mcの幅の半分 * 2
=(this._x-_root.box_mc._x)/(_root.box_mc._width-this._width/2 * 2)
=(this._x-_root.box_mc._x)/(_root.box_mc._width-this._width)
という具合で求めています。
main.swfに読み込んだaaa.swfやbbb.swfの操作
main.swfで読み込み用のmc(例えばload_mc)を用意してそこにaaa.swfを読み込みます。
読み込み後、aaa.swfの_rootはmain.swfから見ると_root.load_mcとなります。
シークバーの動作範囲がおかしいとき(枠線をはみ出したり)は
シンボルの基準点を確認してください。
もしも動かないときは以下の点を確認してください。
・インスタンス名をつけたかどうか
インスタンス名はシンボルをステージに配置したときに付ける名前です。
シンボル名(ライブラリに表示される)とは違います。
ステージにあるシンボルを選択してプロパティからつけてください。
・_rootのフレームが複数あるか
_rootにシークバーを配置したので_rootが1フレームしかないと
当然ですが動きません。
シークバーと言うのですね。
丁寧なご回答、感謝しています。
おかげで私にも作成することができました。
本当にありがとうございました!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) countifsについての質問 3 2023/03/08 13:45
- Visual Basic(VBA) select caseの入れ子 3 2023/03/08 18:48
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) プログラミング pythonの問題について 2 2022/04/19 00:41
- デスクトップパソコン デスクトップパソコンのオーディオを改善したいです。良い方法を教えて下さい。 7 2022/06/17 17:44
- Bluetooth・テザリング SONYワイヤレスイヤホンについて wf xb700を買ったのですが、ペアリングや音楽は聞けるのです 2 2022/03/24 18:42
- イヤホン・ヘッドホン・補聴器 有線無線イヤホンの音質 3 2023/01/04 09:01
- Visual Basic(VBA) VBAの繰り返し処理について教えてください。 3 2022/08/02 13:21
- C言語・C++・C# C#テキストボックスの文字を配列にいれてその後表示する 4 2022/07/17 04:47
- C言語・C++・C# 質問です 下記のコードを分かりやすく解説お願いします 初心者です #include ‹stdio.h 3 2022/05/26 22:03
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
縦横比率のを変えずに画像のサ...
-
テキストファイルから読み込ん...
-
四角形の端っこをドラッグした...
-
ラッコって?
-
看護師です。体温表のマクロを...
-
VBAで改行の入ったデータの正規...
-
VBScriptでMsgBoxのYesNoボック...
-
【VB.NET】別Formのボタンが押...
-
C# chart controlの透過について
-
static関数がmapファイルに載ら...
-
プログラミング、アーキテクチ...
-
ACCESSフォームで、入力から一...
-
Actionscriptでふわふわ感を再...
-
画面の範囲選択
-
アセンブリ言語のcasl2について...
-
'2465'指定した式で参照してい...
-
POIでのテキストボックス作成に...
-
C言語でのマウスを移動とマウス...
-
python ボタンを押すと複数の関...
-
photoshopで書いた四角の枠の中...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAで改行の入ったデータの正規...
-
VBAユーザーホームテキストボッ...
-
テキストファイルから読み込ん...
-
Flashで外部jpgファイルをmcに...
-
FlashでドラッグしたMCをリセッ...
-
AS3 mc0~5をまとめて処理する
-
upc 7915と mc7915ctは互換性有...
-
ラッコって?
-
縦横比率のを変えずに画像のサ...
-
テキスト入力
-
ステージの背景画像のみ拡大縮...
-
eval関数を利用して複数の処理...
-
ランダムに mcを連続attachM...
-
外部SWFファイルを再生バーでコ...
-
四角形の端っこをドラッグした...
-
看護師です。体温表のマクロを...
-
as3 addchildで生成したMCにリ...
-
Flashからリンクする際のconfir...
-
以下のActionScriptをスッキリ...
-
Suzukaで一行ニュースティッカ...
おすすめ情報