プロが教えるわが家の防犯対策術!

FlashMXでバナーを作成する際、オブジェクトアクションの指定があり、ヘルプを読んで設定しましたが、初心者なものでわからない点が多々ありました。初歩的な質問ばかりですみませんが・・・わかる方教えてください。

Q1.オブジェクトアクションは、インスタンスごとに設定するとあったので下記のように行ったのですが・・・

(1)シンボルを配置したフレームをクリックして、
(2)インスタンスをクリックして、
(3)プロパティでグラフィック(作成したのはすべてグラフィックシンボルでした)をボタンに変更して、
(4)アクションパネルにスクリプトを記入する。

これを全フレーム内のインスタンスすべてに
繰り返す、というのでよかったのでしょうか?
長いフラッシュだと大変な作業ですし、もしかしたら間違っているのではと思っています。。

Q2.グラフィックシンボルなのに、ボタンに変更しないとスクリプトが書き込めないのはなぜですか。

Q3.ボタンにはインスタンス名を書き込む欄が出てきますが、これはどんな役割があるのでしょうか。

Q4.スクリプトは、
on (release) {
getURL(_root.clickTAG, _root.targetTAG);}
という内容ですが、これの正確な意味を教えてください。

A 回答 (1件)

A1.


バナーは、再生されている間、ムービーのどの部分がクリックされても反応するように作らなければなりません。それで、ムービー内のオブジェクト全てに getURL (ページを表示するスクリプト)を設定しなければならないのだろうか、との疑問が出てくるのだと思います。

バナー制作の常套手段として、透明なボタンをムービー全体に重ねておき、このボタンが押された時にリンク先を表示する、という方法があります。
ムービーと同じサイズの四角いボタンを1つ作り、透明にして1番上に配置します。あとはこのボタンに getURL を設定するだけで、ムービーのどの部分がクリックされてもリンク先を表示することができます。
作り方・操作方法の詳細は、以前、別の質問で紹介しましたので、よろしければそちらをご参照ください。Q4.にも出ている、on(release) と getURL の意味についても説明しております。

 ・リンクのはり方
  http://okweb.jp/kotaeru.php3?q=1058449


A2.
シンボルにはいくつかのタイプがあります。
読み込んだビットマップ系画像( JPEG ・ PNG ・ GIF など)は、グラフィックシンボルというタイプのシンボルになります。
Flash の仕様上、グラフィックシンボルは ActionScript で制御できないことになっています。ですから、グラフィックシンボルのインスタンス(ステージに配置した時にできる、シンボルの分身)には、スクリプトを一切設定できません。グラフィックシンボルは1枚の絵画のようなもので、まさしく”観賞することしかできないもの”です。
しかし、画像をクリックした時にページを表示するなど、単に絵として見るだけではない用途に利用したい場合もあります。
シンボルを作る時に、他のシンボルのインスタンスを内部に配置して、入れ子にすることもできます。
この点を利用して、”グラフィックシンボルのインスタンスが内部に配置された、ボタンシンボル”にすれば、見た目は画像(グラフィックシンボル)でも、Flash の内部ではボタンシンボルになります。
ボタンシンボルなら ActionScript が使えますので、クリックの検出等も可能です。

余談になりますが。
「プロパティ」パネルでグラフィックシンボルのインスタンスをボタンに変更すると、クリックの検出ができるようになるなど、ボタンに似た機能が使えるインスタンスに変わりますが、ボタンシンボルは作成されません。
ボタンシンボルは独特のフレームを持っています。それぞれのフレームを作っておくと、マウスの操作によって、自動的にフレームを切り替えてくれる機能があります。
しかし、「プロパティ」パネルで「ボタン」に変えただけのインスタンスでは、属性はボタンであっても、これらの恩恵を受けることができません。
マウスカーソルが重なった時やクリックされた時に絵が変わるボタンは、最初からボタンシンボルとして作ると簡単にできます。


A3.
ActionScript はオブジェクト指向の言語、と言われます。オブジェクト指向のイメージとしては、いろいろな技能を持った人を必要なだけ連れてきて、その技能を使って仕事をする、といったところです。
技能を持った人を連れてくるには、様々な方法があります。ボタンやムービークリップは、シンボルを作ってその分身をステージに配置するだけで、ボタンやムービークリップが持っている様々な技能を利用できるようになります。
ヘルプの「 ActionScript 辞書」を開き、「B」の Button オブジェクト、「M」の MovieClip オブジェクトの項目を覗いてみてください。ボタンやムービークリップを配置すると、それだけで、これらの項目の ActionScript 全てが利用できるようになります。

会社などで人に仕事を依頼する時、誰にどんな仕事を頼むかをはっきりしなければなりません。同じ部署の人は同じ仕事をする仲間同士ですから、その中の誰に何を頼むかの指示は大切です。
ActionScript でもこれと同じことです。
ボタンやムービークリップが複数ある場合は特に、どのボタンまたはムービークリップも、それぞれ同じ名前の技能を持っていますので、どのボタン/ムービークリップの技能を使いたいのかを指定する方法が必要になります。
インスタンスには名前を付けることができます。この名前を使って、

 インスタンス名.使いたい技能の名前

このようにして、特定のインスタンスの持つ技能を使い、細かく操作することができます。

インスタンス名を付けなかった場合は、Flash の内部では仮の名前で管理されます。
この仮の名前は、デバッガという機能を使うと分かりますが、普段は見ることができません。
複数のインスタンスがあって、その1つ1つを細かく制御する場合は、自分で分かりやすい名前を付けておいた方が管理しやすいです。
ちなみに、例えばムービークリップが5個ある場合、” clip1 ”” clip2 ”というように通し番号を使った名前を付けると、多数のムービークリップをスクリプトで制御する時に

 for( i = 1 ; i <= 5 ; i++ )
 {
  this[ "clip" + i ].・・・
 }

このように、ループを使ってスッキリと指示を出すスクリプトも書けます。
インスタンスや変数・関数の命名術もテクニックの1つです。このインスタンスや変数が何であるか、何を操作しているのかなどが、スクリプトの中に出てきた時に推測しやすい名前にすることも大切です。
最初のうちはAやBなどと適当に付けてしまいがちですけれど、複雑なムービーを作る時は特に、名前の付け方も工夫してみてください。


A4.
リンク先を開く時の getURL の書式は、

 getURL( "ページのURL" , "表示するウィンドウまたはフレームの名前" );

となっています。
同じことを、URL やウィンドウ・フレームの名前を変数という別の入れ物に入れておいて、

 getURL( 変数名 , 変数名 );

このように、入れ物の名前を渡して指定することもできます。

ご質問文にあるスクリプトは、後者の、変数を使った指定方法です。
_root.clickTAG と _root.targetTAG が、変数を使って指定している部分です。変数の名前が clickTAG と targetTAG で、その前に付いている” _root. ”とは、この変数の持ち主のようなものだと考えてください。
先ほどのA3.で、インスタンス名を指定して、そのインスタンスが持っている技能を使う方法をご紹介しました。
変数も同じです。自分の持っている以外の変数を利用する場合は、どのインスタンスが持っている変数を使わせてもらうのか、その持ち主の指定が必要です。

では、この変数の持ち主である _root は何者かと言いますと。
Flash では、ムービー自体も1つのムービークリップとして扱います。基本的には、_root とはムービー自身を指します。
ムービーのタイムラインを見てみてください。フレームに a のマークがある箇所は、フレームにスクリプトが設定されています。
その中に、clickTag = "・・・"; や、targetTAG = "・・・"; といった記述がありませんでしょうか。

この記述がない場合は、少々難しい話になりますが。
Flash では、外部のテキストファイルや HTML ファイルから変数を受け取ることもできます。
素材サイト等で配布している Flash の素材では、使う人ごとにリンク先等を変えられるようにと、ムービーと一緒に設定用のテキストファイルを配布している場合が殆どです。
このテキストファイルの中に、

 clickTAG=*** & targetTAG=***

このような形で変数を書いておき、Flash で読み込むと、Flash の中で何も変数を作っておかなくても、_root.clickTAG = ・・・として、clickTAG や targetTAG という名前の変数を利用できるようになります。
テキストファイルではなく HTML から変数を受け取る方法もありますが、この話はややこしいので、今回は割愛させていただきます。

いずれにしても、ムービーの中に変数を定義している箇所が見当たらないのであれば、ムービー以外のところで変数の内容を設定し、その内容だけをムービーで利用しているものと思われます。
変数を使っていても、getURL に渡す内容は、開くページの URL と、それを表示するウィンドウまたはフレームの名前であることに変わりはありません。
つまり、

 on (release) {
getURL(_root.clickTAG, _root.targetTAG);}

とは、「ボタンがクリックされた時、clickTAG 変数で指定されたページを、targetTAG 変数に入っている名前のウィンドウ(またはフレーム)に表示する」という意味になります。


長くなってすみませんでした。
不明な点がありましたら、補足してください。
    • good
    • 0
この回答へのお礼

DPEさんの説明、授業を聞いているみたいに頭に入り、
大変ありがたかったです。リンクの貼り方のほうも、
そのまま役にたち、提出することができました。
(知らないまま仕事をしている自分が恐い・・)
アクションスクリプトは苦手なのでまたお願いします。

お礼日時:2005/02/04 18:32

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!