AS3.0設定でFlashファイル上に二つのリンクボタンを設定しました。(link_btn01/link_btn02)この1つに
function newWin(eventObject:Event):void{
var request:URLRequest=new URLRequest("http://www.villaangelica.to/next/index.html");
navigateToURL(request);
}
link_btn01.addEventListener(MouseEvent.CLICK, newWin);
と記述し、パブリッシュして確認すると問題なくリンクされます。ただ、link_btn02に同様のスクリプトを書き、link_btn01をlink_btn02に書き換えて確認すると、コンパイルエラーになってしまいます。複数のリンク設定は出来ないのでしょうか。
>異なるリンク先にしたい
関数を使いまわしつつ値だけ変数で渡してやればいいのですが、addEventListenerでは変数を基本渡せないのでこんな感じの動きができなかったと思います。
function newWin(data):void{ var request:URLRequest=new URLRequest(data); navigateToURL(request); } link_btn01.addEventListener(MouseEvent.CLICK, newWin("url1")); link_btn02.addEventListener(MouseEvent.CLICK, newWin("url2"));
こういった形にして変数を渡すのがいいと思います。
//URL設定 var objURL:Object = new Object(); objURL.link_btn01 = "url1"; objURL.link_btn02 = "url2"; function newWin(eventObject:Event):void{ var request:URLRequest=new URLRequest(objURL[event.currentTarget.name]); navigateToURL(request); } link_btn01.addEventListener(MouseEvent.CLICK, newWin); link_btn02.addEventListener(MouseEvent.CLICK, newWin);
currentTargetは便利なので良く使いますよ!
どのようなエラーメッセージが表示されるのですか?
同じ名前空間にlink_btn02が重複していませんか?
または、link_btn01を参照している部分があるのではありませんか?
ありがとうございます。
エラーメッセージは以下の様なものです。
1021:関数の定義が重複しています。 function newWin(eventObject:Event):void{
5000:クラス'fl.core.ComponentShin'は'flash.display_MovieClip'をサブクラスとする必要があります。同じ型のライブラリシンボルにリンクしているためです。
5000:クラス'fl.controls.UIScrollBar'は'flash.display_MovieClip'をサブクラスとする必要があります。同じ型のライブラリシンボルにリンクしているためです。
…というもので、並列に配置してあるテキストエリアのスクロールバーの表示もおかしくなっています。
「同じ名前空間」とありますが、この2つ(link_btn01とlink_btn02)はレイヤは別にしてあります。
よろしくお願いいたします。
コードの書く場所などに問題があるようですね。
関数の定義が重複している、というエラーは、function newWinが同じ階層に複数かかれていることを意味します。
root階層 function newWin~ ~ } link_btn01.addEventListener(MouseEvent.CLICK, newWin); function newWin~ ~ } link_btn02.addEventListener(MouseEvent.CLICK, newWin);
こんなふうに書いてませんか?この場合function newWinは二度書く必要はありません。
root階層 function newWin~ ~ } link_btn01.addEventListener(MouseEvent.CLICK, newWin); link_btn02.addEventListener(MouseEvent.CLICK, newWin);
>並列に配置してあるテキストエリアのスクロールバーの表示もおかしくなっています。
FLASHではスクリプトエラーがでると他のASもとまってしまいます。現在発生しているエラーが解消すれば動くようになると思います。
複数関数なんて書いてないよ!という場合は、関数をどの階層に書いているかを教えてください。(といってもlink_btn01.addEventListenerとしているのでボタン内に書いているとは思えませんけど)
ご回答ありがとうございます。
早速試してみましたところ、コンパイルエラーの表示は出なくなりました。
しかしながら、異なるリンク先にしたいと思いますので、その場合はどこへどのようにリンク先を設定すればよろしいでしょうか。(現状では同じリンク先になってしまいます function newWin~以下の記述が共通なので、当然といえばそうなのですが)
ご教示の程、よろしくお願いいたします。
>異なるリンク先にしたい
関数を使いまわしつつ値だけ変数で渡してやればいいのですが、addEventListenerでは変数を基本渡せないのでこんな感じの動きができなかったと思います。
function newWin(data):void{ var request:URLRequest=new URLRequest(data); navigateToURL(request); } link_btn01.addEventListener(MouseEvent.CLICK, newWin("url1")); link_btn02.addEventListener(MouseEvent.CLICK, newWin("url2"));
こういった形にして変数を渡すのがいいと思います。
//URL設定 var objURL:Object = new Object(); objURL.link_btn01 = "url1"; objURL.link_btn02 = "url2"; function newWin(eventObject:Event):void{ var request:URLRequest=new URLRequest(objURL[event.currentTarget.name]); navigateToURL(request); } link_btn01.addEventListener(MouseEvent.CLICK, newWin); link_btn02.addEventListener(MouseEvent.CLICK, newWin);
currentTargetは便利なので良く使いますよ!
ご回答ありがとうございます。
この通りにやってみて、後ほど結果を書き込みます。
ありがとうございました。
ご回答ありがとうございます。
この通りにやってみて、後ほど結果を書き込みます。
ありがとうございました。