![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?8acaa2e)
以前、No.974758,989128,1002130,1019966で質問させて頂いた「ムービークリップ」に関する質問です。
以前は、外部のJPEGを複数ダイナミックに読込んでマスクレイヤー内に表示し、選択されたら別の場所に拡大画像を表示するというものでした。
今回、同様の仕様なのですが表示するJPEGは決まっているので先にライブラリに格納しておきたいのですが、選択されたら拡大表示するロジックをそのまま適用したく、外部から読込むロジックを内部のライブライにしたいのですが、どのようにしたら良いのでしょうか?。
どうぞ宜しく御願い致します。
No.1ベストアンサー
- 回答日時:
ライブラリに読み込んだ画像は、グラフィックというタイプのシンボルになっています。
この状態では ActionScript で制御できません。まずは、ムービークリップの属性を持つように加工しましょう。
グラフィックシンボルのインスタンスを一旦ステージに置き、これをムービークリップに変換すると、内部にグラフィックインスタンスを持つムービークリップシンボルになります。または、空のムービークリップシンボルを新規に作り、その中にグラフィックインスタンスを配置しても作れます。
読み込む画像がライブラリの中にあるのですから、最初から画像ムービークリップを配置した、サムネイル画面のムービークリップを作った方が簡単ですが、ActionScript で作成する方法もあります。もっとも、ActionScript で作れば、万が一画像が増えるようなことがあっても、簡単な変更で対応できるという利点はあります。
今回は読み込み終了を待つ処理は必要ありません。以前は7フレームも使って作っていたサムネイル画面のムービークリップも、なんと1フレームだけで済んでしまいます。
ロジックは次のように考えます。
ActionScript で空のムービークリップを1つ作り、そこにライブラリにある画像を挿入します。
つまり、前回はシンボルとして作っていた sheet ムービークリップを、今回は何もない状態からスクリプトだけで作り出します。
あとは、配置した画像をボタンにし、更にスクロールバーで動かせるようにして、出来上がりです。
画像を外部から読み込む時は、受け皿となるムービークリップが必要でした。前回はムービークリップをコピーして受け皿を作成するため、そのコピー元になるムービークリップを1つだけ配置した、sheet というムービークリップシンボルを作り、ステージに配置していました。
画像を読み込まないのであれば、受け皿としてのムービークリップは必要ありません。従って、sheet に最初から配置しておかなければならないムービークリップは何もなく、sheet 自体も最初は空っぽでいいということです。
そこで、今回は sheet のシンボルを作らず、ActionScript で空のムービークリップとして動的に生成することにします。
空のムービークリップは、MovieClip クラスの createEmptyMovieClip メソッドで作成できます。
ライブラリにあるムービークリップを動的に挿入するには、attachMovie メソッドを使います。このメソッドで、sheet に画像のムービークリップを挿入していきます。
attachMovie では、リンケージという名前が必要です。
リンケージとは、ActionScript で識別するためのシンボル名のようなものです。
ライブラリで画像のムービークリップシンボルを選んで、右クリックでメニューを出し、「リンケージ...」を選択してください。「リンケージプロパティ」のダイアログが開きますから、「 ActionScript に書き出し」と「最初のフレームに書き出し」にチェックを入れ、「識別子」に名前を入力します。
ループで処理できるように、「識別子」は固有の名前+通し番号で付けるといいでしょう。ここでは仮に、pic +番号とします。
attachMovie で追加したものでも普通のインスタンスと同じで、リンケージとは別にインスタンス名も必要です。下記のスクリプトでは、clip +番号というインスタンス名を付けています。
マスクは ActionScript でも制御できます。
マスクレイヤーに配置したオブジェクトでは制御できないのですが、普通のレイヤーに配置したムービークリップであれば、setMask というメソッドで、ムービークリップをマスクとして使えるようになります。
マスクとして定義されても、それは普通のムービークリップであって ActionScript でも制御できるため、スクリプトで動いたり変形したりするなどの複雑なマスクも作成できます。
sheet は最初はステージに存在していないので、マスクレイヤーを使ってのマスキングができません。今回は setMask を利用してマスクをかけます。
マスク画像をムービークリップに変換し、インスタンス名を付けます。ここでは mask_clip とします。
それから、「マスク」のレイヤーを普通のレイヤーに戻します。レイヤーを選んで右クリックでメニューを出し、「マスク」のチェックを外してください。
sheet を置いていたレイヤーは不要になります。削除しても構いません。
サムネイルシンボルのレイヤー構成をまとめますと。
アクション :スクリプトを書きます。
マスク :マスクを配置しますが、タイプは普通のレイヤーです。
スクロールバー:スクロールバー(インスタンス名: sc_bar )を配置します。
スクリプトは、大体、次のようになります。
スクロールバーの考え方・クリックされた時の処理の考え方は、以前のものと全く同じです。一部は省略しますので、今までの作例をもとに適宜追加してください。
(以下のスクリプトでは、画像の幅を 100px としています)
//画像の枚数
image_max = 5;
// sheet を空のムービークリップとして作成し、原点に配置する
this.createEmptyMovieClip( "sheet" , 0 );
sheet._x = 0;
sheet._y = 0;
// sheet をマスク画像でマスキング
sheet.setMask( mask_clip );
// sheet に画像を配置
for( i = 1 ; i <= image_max ; i++ )
{
//ライブラリからムービークリップを挿入
sheet.attachMovie( "pic"+ i , "clip" + i , i );
//位置を決め、30%に縮小して表示
with( sheet[ "clip" + i ] )
{
_x = 100 * ( i - 1 );
_y = 0;
_xscale = 30;
_yscale = 30;
}
//管理番号とクリックされた時の処理を定義
sheet[ "clip" + i ][ "image_no" ] = i;
sheet[ "clip" + i ].onPress = function ()
{
/*ここにクリックされた時の処理を書く*/
};
}
//スクロールバーの設定
sc_bar.setScrollProperties( 0 , 0 , 100 * image_max - mask_clip._width );
ライブラリに画像を多数格納するとムービーの容量が大きくなり、ムービー全体の Now Loading 画面を付けるなどの配慮が必要になります。
この作り方はこのサイトでも何度か質問で出ていますし、様々な解説サイトで取り上げられていることも多いほどポピュラーな技法ですから、そちらを参考になさってください。
ライブラリにあるシンボルを使うのであれば、ムービー中で何度使ってもムービーの容量は増えません。例えば、サムネイルはオリジナルを縮小して表示し、クリックされたら原寸のままで表示しても、ムービーに書き出されるのはオリジナルの画像の分だけです。
ただ、オリジナル画像が容量が大きかったり、枚数が多い場合、これをライブラリに格納するとなると、ムービー自体が肥大してしまいます。その場合は、ライブラリにはサムネイル用の小さな画像を格納し、拡大表示の時だけ loadMovie などで読み込むようにするといいでしょう。
連絡が遅くなって申し訳ありません。
ちょっと他に問題があって、そちらに手を取られています。
お教え頂いた内容でトライしてみます。
これからもどうぞ宜しく御願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- iCloud 【iTunes】CDをiPhoneに取り込めません 2 2022/09/19 09:59
- 写真・ビデオ iPhoneのプライバシーとセキュリティの写真の項目について 2 2023/06/24 23:11
- iPhone(アイフォーン) iPhoneのプライバシーとセキュリティの写真の項目について 1 2023/06/24 20:25
- Excel(エクセル) Excelで質問です。 詳細(写真) ①黄色の部分を全てプルダウンを設定する。 ②リストはG列 ③リ 1 2023/06/16 21:54
- JavaScript 読み込んだQRコードをフォームに受け渡したい 1 2023/05/18 11:18
- Windows 10 この現象も、Microsoft Explorer のお粗末な仕様のためか? 2 2023/06/09 15:06
- USBメモリー・SDカード・フラッシュメモリー メディアプレーヤーの字幕データ読み込みについて。 3 2023/08/16 13:14
- WordPress(ワードプレス) WordpressでYouTubeの埋め込みができない。 1 2022/10/26 01:08
- Web・クリエイティブ 【 3DCGソフト⠀MAYAについての質問 】 MAYAでビューからイメージプレーンを読み込むと、ビ 1 2023/07/09 02:50
- Excel(エクセル) VBA : スクレイピングできない 4 2023/05/12 22:26
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
シンボル化解除の方法
-
ActionScriptでプルダウンメニュー
-
【ExcelVBA】ファイル名をセル...
-
合致するシンボル情報は見つか...
-
static関数がmapファイルに載ら...
-
FLASHでバナーを作成するには・...
-
共有ライブラリから読み込んで...
-
Access2000 実行時エラー '3061':
-
photoshopで書いた四角の枠の中...
-
変数に256文字以上のテキストを...
-
VBAで改行の入ったデータの正規...
-
VBScriptでMsgBoxのYesNoボック...
-
else if文の順序を変えることに...
-
【VB.NET】別Formのボタンが押...
-
python ボタンを押すと複数の関...
-
多言語を混在できるか。
-
マスクをとるとオーバーフロー...
-
C言語でネットワーク範囲のIPア...
-
テキストボックスの中身をリセ...
-
VBAユーザーホームテキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
五芒星は、悪魔崇拝とどういう...
-
【ExcelVBA】ファイル名をセル...
-
static関数がmapファイルに載ら...
-
シンボル化解除の方法
-
ムービークリップの基準点を途...
-
App store のマークってイルミ...
-
FlashMXで絵の反転を繰り返す動...
-
ブレーカーの電気シンボル
-
何故、画像がくっついてるんで...
-
マウスの動きに合わせて画面を...
-
FLASHの文字を変えるには?
-
シンボルの存在意義
-
Timeline_nの調べ方について(AS3)
-
iOSアプリ開発時の画像をFirewo...
-
ソースファイルを追加すると、...
-
外国の幸福のシンボル
-
不思議な水晶玉
-
PNG24を読み込むと色合いが薄く...
-
共有ライブラリから読み込んで...
-
グラフィックシンボルと普通の...
おすすめ情報