• ベストアンサー

as3でボタンにリンクをはる方法!

質問ばかりで申し訳ないですが、お世話になります。 flashCS4&Actionscript3を使っているものです。 「ボタンにリンクをはる方法を探しています。 (どうしても 1093のシンタックスエラーになってしまい、困っています。)」 現在作成しているものは、以下のような構造です。 ************************************************************* ステージ ↓ムービークリップ【インスタンス名(menu_mc)】 ________________________________________ ・ボタン【インスタンス名(btn1_btn)】 ・ボタン【インスタンス名(btn2_btn)】 ・ボタン【インスタンス名(btn3_btn)】 ________________________________________ *************************************************** menu_mcの中で、以下のように記述しました。 btn1_btn.addEventListener(MouseEvent.CLICK,gotowebpage1); function gotowebpage1(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn2_btn.addEventListener(MouseEvent.CLICK,gotowebpage2); function gotowebpage2(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } btn3_btn.addEventListener(MouseEvent.CLICK,gotowebpage3); function gotowebpage3(event : MouseEvent) :void { navigateToURL(new URLRequest("http://www.yahoo.co.jp")); } すると、1093のシンタックスエラーになってしまいます。 うまく動作させる為には、他にどんな作業を行ったらいいのでしょうか、 よろしくお願いします!!!

  • Flash
  • 回答数2
  • ありがとう数4

質問者が選んだベストアンサー

  • ベストアンサー
  • BlurFiltan
  • ベストアンサー率91% (1611/1754)
回答No.1

ご自身のご質問を見て答え(原因)がわかったのではないかと思います(笑)。 ココ(OKWave や 教えて!goo など)の自動リンクのいらぬオセッカイ機能が原因ですね。 ここでは, http://aaa とか www.yahoo.co.jp とか書くと 自動でリンクがかかってしまって, そこまではまだ良いとしても, 悪いことに目に見えない文字が混入するのです。 コピペするときはご注意を。 です。 次のものをコピペして, Hを h,W を w に手動で変更し直せば大丈夫だと思います。 -------------------------------------------------------------- btn1_btn.addEventListener(MouseEvent.CLICK,gotowebpage1); function gotowebpage1(event : MouseEvent):void { navigateToURL(new URLRequest("Http://Www.yahoo.co.jp")); } btn2_btn.addEventListener(MouseEvent.CLICK,gotowebpage2); function gotowebpage2(event : MouseEvent):void { navigateToURL(new URLRequest("Http://Www.yahoo.co.jp")); } btn3_btn.addEventListener(MouseEvent.CLICK,gotowebpage3); function gotowebpage3(event : MouseEvent):void { navigateToURL(new URLRequest("Http://Www.yahoo.co.jp")); } -------------------------------------------------------------- 私の回答は だいたい上のように H や W を全角大文字にしています。 ttp://ww.yahoo.co.jp のように 頭の h や w を取って回答されている回答者の方もいらっしゃいます。 どちらにしても,一筆注意書きが必要ですね。 逆にコピペする場合の私の対処法は, メモ帳などの(私の場合は秀丸)テキストエディタに一度スクリプトをコピペして, 適当な場所に適当な名前で保存します。 いったんそのファイルを閉じて, 再び開くと,目に見えない文字(&8203;)が 「?」という「目に見える文字」になりますから, その 「?」 を削除します。

ovo-n_n
質問者

お礼

補足にお礼をいってしまいました。 なおらない。。っておもっていたのでびっくりです!! ありがとうございます!!!

ovo-n_n
質問者

補足

アーーーーーーーーーーーーーーーーーー!!!!!! 本当だ!なおりました!!!!私はterapadつかってます!!!! ありがとうございます1!! すごい!

その他の回答 (1)

  • atse
  • ベストアンサー率83% (36/43)
回答No.2

その該当スクリプトは、このQ&Aサイトのどこからかにあった内容を コピーしてそのまま使用したりしていませんか? このサイトでは、URLを記述するとリンク部分前後に特殊文字が入ります。 質問部分にもある「​」がその部分です。 コピー内容をそのまま投稿すると、HTML用へと更に文字が置換され、見える形で現れます。(​ -> ​) 例として、一見普通の文字列に見えるfunction gotowebpage3をコピペしてみます↓ function gotowebpage3(event : MouseEvent) :void { navigateToURL(new URLRequest("​http://www.yahoo.co.jp"));​ } 要はこの見えない文字がゴミとなって邪魔しているだけです。 なので、navigateToURLの行を一旦消して、ご自分の手で打ってみてください。 そうすればエラーは回避されると思います。

ovo-n_n
質問者

お礼

ごめんなさい!!! 本当ですね!!回避されましたよー!!!! ありがとうございます!!!

ovo-n_n
質問者

補足

すみません、変なミスをおかしてしまって、、、 ”http://www.yahoo.co.jp”は、もともと私がつくっているサイトのURLがはいっていたんです。それを、ダミーでyahooに書き換えました。 下から書き換えたので、上2つが変な文字がはいってしまっているということです。 つまり、 それでは問題は解決できません。。。 1093エラーは、クラスを指定していないとでる問題みたいなんですが、、、、 (実際、menu_mcに、クラスを指定していないので、こちらとなにか関係あるのでしょうか。。)

関連するQ&A

  • actionscript 3.0 の外部リンク

    初めて質問させていただきます。 Flash CS3 のactionscript3.0にて、サイト内リンクのボタンを作成したのですが、 フラッシュを読み込んだ時点で、インスタンスthe URL4がポップアップで開いてきてしまいます。 そのような記述をしていないのでどうしたら良いか分からず… 何かお知恵をお貸しいただけると幸いです。 よろしくお願い致します。 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ↓実際に書いたacitonscriptです。URLはダミーです。 //theURL1という変数に代入し、URLRequestのインスタンスを生成 var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL1); navigateToURL(theURL2); navigateToURL(theURL3); navigateToURL(theURL4); // イベントリスナーの登録 A_btn.addEventListener(MouseEvent.CLICK,gotoURL1); B_btn.addEventListener(MouseEvent.CLICK,gotoURL2); C_btn.addEventListener(MouseEvent.CLICK,gotoURL3); D_btn.addEventListener(MouseEvent.CLICK,gotoURL4); // URL1へジャンプする function gotoURL1(event:MouseEvent):void { var theURL1:URLRequest = new URLRequest("http://www.111/A.html"); navigateToURL(theURL1,"_self"); } // URL2へジャンプする function gotoURL2(event:MouseEvent):void { var theURL2:URLRequest = new URLRequest("http://www.222/B.html"); navigateToURL(theURL2,"_self"); } // URL3へジャンプする function gotoURL3(event:MouseEvent):void { var theURL3:URLRequest = new URLRequest("http://www.333/C.html"); navigateToURL(theURL3,"_self"); } // URL4へジャンプする function gotoURL4(event:MouseEvent):void { var theURL4:URLRequest = new URLRequest("http://www.444/D.html"); navigateToURL(theURL4,"_self"); }

  • フラッシュのマウスイベント

    フラッシュのマウスイベントがうまくいかないので教えてください。 ボタンはい列(5個)をしてそれぞれにインスタンスを付けました。 ロールオーバーで背景画像の入れ替えクリックで特定のURLへ飛びたいのですが 飛ぶことはできてもロールオーバーの記述がうまくいきません どう書けばいいのか教えてください 素人で説明見ながらなのでイフ とかエルスの使い方もよくわかりません。 ちなみに下記はクリックしたら出てきた記述で思い通りに動いています。 できたら出てくる画像がフェードインにしたいです 同じタイムラインに画像を配置してそれぞれMC-1とか名前も付けましたが 記述を探しても全くわかりません よろしくお願いします URL1.addEventListener(MouseEvent.CLICK,fl_ClickToGoToWebPage_5); function fl_ClickToGoToWebPage_5(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL2.addEventListener(MouseEvent.CLICK,fl_ClickToGoToWebPage_6); function fl_ClickToGoToWebPage_6(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL3.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_7); function fl_ClickToGoToWebPage_7(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL4.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_8); function fl_ClickToGoToWebPage_8(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); } /* クリックして Web ページに移動 */ URL5.addEventListener(MouseEvent.CLICK, fl_ClickToGoToWebPage_9); function fl_ClickToGoToWebPage_9(event:MouseEvent):void { navigateToURL(new URLRequest("http://www.○○"), "_blank"); }

  • actionscriptでの複数リンク

    こんにちは、いまフラッシュでサイトのトップページをつくっています。 ボタンを複数表示して、それぞれ同窓でリンクするようにしたいです。 ボタンを押して複数表示するようにはなったのですが、なぜかどのボタンを押しても同じリンク先に飛んでしまいます。URLは変えましたが、超初心者で関数のことなどがよくわかっていないため、ご教授いただけたらと思います。 一つめのボタンのアクションへの記述 click_btn.addEventListener(MouseEvent.CLICK,onHomeClick) function onHomeClick(e:MouseEvent):void { trace(e.type) var url:String="http://サイト1"; var urlrequest:URLRequest=new URLRequest(url); navigateToURL(urlrequest, "_self"); } 二つ目のボタンへの記述 click_btn2.addEventListener(MouseEvent.CLICK,onHomeClick) function onHomeClick2(e:MouseEvent):void { trace(e.type) var url:String="http://サイト2"; var urlrequest:URLRequest=new URLRequest(url); navigateToURL(urlrequest, "_self"); } 調べてコピペしたものが主です。初歩的な質問で申し訳ないのですが、よろしく御願いいたします。

  • AS3 記述方法

    ボタンが複数存在し、それぞれのボタンの処理をまとめたい時に どうするか考えています。 たとえばステージに3つのボタンインスタンス 「btn1」「btn2」「btn3」があるとします。 クリックすると、それぞれに応じた値を得るために ------------------------------------------------------------- btn1.addEventListener(MouseEvent.CLICK,syori1); function syori1(eventObject:MouseEvent):void{ trace("あんぱん"); } btn2.addEventListener(MouseEvent.CLICK,syori2); function syori2(eventObject:MouseEvent):void{ trace("しょくぱん"); } btn3.addEventListener(MouseEvent.CLICK,syori3); function syori3(eventObject:MouseEvent):void{ trace("カレーぱん"); } ------------------------------------------------------------- としているのですが、 たとえばもしこれが100個のボタンがあれば 100回同じような事を記述しないといけないので あまりよろしくないな・・・と思い、 ------------------------------------------------------------- for(var i=1; i<=3 i++){ this["btn"+i].addEventListener(MouseEvent.CLICK,syori); } function syori(eventObject:MouseEvent):void{ trace("ジャム"); } ------------------------------------------------------------- としたのですが、これではどのボタンをクリックしても"ジャム"がトレースされます。(当然ですが・・・) このような時、まとめて記述するにはどうすればよいでしょうか?

  • flash as3でメーラーを起動して任意のメールアドレスを入力させた

    flash as3でメーラーを起動して任意のメールアドレスを入力させたいのですが、以下のようにしてもうまくいきません。どなたかご教授お願いします。 mc.addEventListener(MouseEvent.CLICK, gotoURL); function gotoURL(event:MouseEvent):void{ var theURL:URLRequest=new URLRequest("アドレス"); navigateToURL(theURL); }

    • ベストアンサー
    • Flash
  • as3、クリックでアクティブにしたものに命令したい

    画像下の理想のようにしたいのですが、どうすればいいでしょうか。 ステージ上には四角、星、丸のインスタンスが配置してあります。それらを一つクリックしてアクティブにしたものだけに命令を与える方法が知りたいです。 例えば、 丸をクリックしたあと、緑色の左移動ボタンで丸だけが10ピクセル左移動。 星をクリックしたあと、緑色の左移動ボタンで星だけが10ピクセル左移動。 と一つのボタンにまとめたいのです。 現状の左右反転のスクリプトです。 (この中では一番スクリプトが短いので左右反転を例に選びました) ・命令される方 maru 赤い丸のインスタンス名 shikaku 青い四角のインスタンス名 hoshi 黄色の星のインスタンス名 ・命令する方 sayuumaru_btn 丸を左右反転ボタン sayuushikaku_btn 四角をを左右反転ボタン sayuuhoshi_btn 星を左右反転ボタン sayuumaru_btn.addEventListener(MouseEvent.CLICK, sayuumaru); sayuushikaku.addEventListener(MouseEvent.CLICK, sayuushikaku); sayuuhoshi_btn.addEventListener(MouseEvent.CLICK, sayuuhoshi); function sayuumaru(event:MouseEvent):void{ maru.scaleX *= -1.0; } function sayuushikaku(event:MouseEvent):void{ shikaku.scaleX *= -1.0; } function sayuuhoshi(event:MouseEvent):void{ hoshi.scaleX *= -1.0; } どうすれば、理想画像のように、クリックしてアクティブになっているインスタンスのみに命令を与えられるのでしょうか。 flash、cs5、as3、外部as不使用です。 よろしくお願いします。

    • ベストアンサー
    • Flash
  • Flash as3.0版ソース  ボタンで内容遷移、うまくいかない…

    こんにちは。 Flash as3.0勉強始めてばかりです。 下記のソースのエラーはボタンを押したたびに、表示した内容はどんどん重ねています。たとえば、(1)ボタンを押した場合、(1)の内容を表示されまして。(2)ボタンを押したとき、画面には(1)+(2)の内容を表示されています。 いろいろ調べましたんですが、なかなかうまくいかないです。 ご解答をよろしくお願い致します。 詳細ソース ーーーーーーーーーーーーーーーーーーーーーー // イベントを設定 Button_tsr.addEventListener ( MouseEvent.CLICK , onClick1 ); Button_gaiyou.addEventListener ( MouseEvent.CLICK , onClick2 ); Button_message.addEventListener ( MouseEvent.CLICK , onClick3 ); Button_jigyou.addEventListener ( MouseEvent.CLICK , onClick4 ); Button_saiyou.addEventListener ( MouseEvent.CLICK , onClick5 ); Button_toiawase.addEventListener ( MouseEvent.CLICK , onClick6 ); // ローダーオブジェクトを作成し配置 var loader_obj : Loader = new Loader(); stage.addChild (loader_obj); loader_obj.x = 85; loader_obj.y =97; // 画面クリックをするとonClickが動作するイベント function onClick1 ( event:MouseEvent ) { // URLRequestを設定 var url0:URLRequest = new URLRequest( "Top.swf" ); // 実際にページに飛ぶ loader_obj.load ( url0 ); } function onClick2 ( event:MouseEvent ) { // URLRequestを設定 var url1:URLRequest = new URLRequest( "概要.swf" ); // 実際にページに飛ぶ loader_obj.load ( url1 ); } function onClick3 ( event:MouseEvent ) { // URLRequestを設定 var url2:URLRequest = new URLRequest( "Message.swf" ); // 実際にページに飛ぶ loader_obj.load ( url2); } function onClick4 ( event:MouseEvent ) { // URLRequestを設定 var url3:URLRequest = new URLRequest( "サービス.swf" ); // 実際にページに飛ぶ loader_obj.load ( url3); } function onClick5 ( event:MouseEvent ) { // URLRequestを設定 var url4:URLRequest = new URLRequest( "情報.swf" ); // 実際にページに飛ぶ loader_obj.load ( url4); } function onClick6 ( event:MouseEvent ) { // URLRequestを設定 var url5:URLRequest = new URLRequest( "問合せ.swf" ); // 実際にページに飛ぶ loader_obj.load ( url5); }

  • 【AS3】配列を使って複数のボタンに別々のリンク先を指定するスクリプト

    【AS3】配列を使って複数のボタンに別々のリンク先を指定するスクリプトを教えてください。 配列を使って、btn1、btn2、btn3というインスタンスに それぞれ別のリンク先を設定したいと思っています。 実際には15個以上のリンクボタンを設置したいので、 配列を使ってできるだけ短いスクリプトにしたいです。 ---------------------------------------------- for (var i:int = 1; i < 4; i++) { this["btn"+i].addEventListener( MouseEvent.CLICK , onClick ); } function onClick( event:MouseEvent ) { var url:Array = new Array(); url[1]="http://www.yahoo.co.jp"; url[2]="http://www.google.co.jp"; url[3]="http://www.goo.ne.jp"; for(var i:int = 1; i < 4; i++){ if (this ["btn"+i]) { var link:URLRequest=new URLRequest(url[i]); var target:String="_self"; navigateToURL(link,target); } } } ---------------------------------------------- 上のように記述してみたのですが、全てのボタンが 配列一番最後のリンク先(url3)になってしまいます。 traceで「i」を出力してみると 1 2 3 と出るので、 for(var i:int = 1; i < 4; i++){}で 全て繰り返してしまっているらしいことはわかりますが どこをどう修正すればいいのかわかりません; 初心者で恐れ入りますが、易しくご教示いただけると幸いです。

    • ベストアンサー
    • Flash
  • ボタンについて(CS4,AS3)

    HPのメニュー用に、クリックするとフレーム移動するボタンを作っています。 フレーム1以外のフレームには、フレーム1に設置してあるボタンで指定したフレームとは異なるフレームに 移動させたいので、新たにフレーム1のボタンとは別のボタンを設置しています。 プレビューでフレーム1のボタンをクリックすると正常に動くのですが、 フレームが移動した後に再度ボタンをクリックすると動かず、全てのボタンが反応しません。 ■フレーム1に設置してあるボタン test_a1.addEventListener(MouseEvent.CLICK , testA1); test_b1.addEventListener(MouseEvent.CLICK , testB1); test_c1.addEventListener(MouseEvent.CLICK , testC1); function testA1(event : MouseEvent) :void{ gotoAndPlay(1); } function testB1(event : MouseEvent) :void{ gotoAndPlay(51); } function testC1(event : MouseEvent) :void{ gotoAndPlay(101); } ※フレーム1、51、101にはstop();で停止するようにしています。 ■フレーム51に設置してあるボタン test_a2.addEventListener(MouseEvent.CLICK , testA2); test_b2.addEventListener(MouseEvent.CLICK , testB2); test_c2.addEventListener(MouseEvent.CLICK , testC2); function testA2(event : MouseEvent) :void{ gotoAndPlay(11); } function testB2(event : MouseEvent) :void{ gotoAndPlay(61); } function testC2(event : MouseEvent) :void{ gotoAndPlay(111); } コンパイルエラーは出ていません。 ネットで調べても何故、フレーム1以外のボタンが動かないのか分かりません。 どなた様か教えていただけると助かります。 使用しているソフトはAdobe Flash CS4で、スクリプトはActionScript3.0です。 よろしくお願いします。

  • ボタンとASが1フレーム目にないとエラーになるのは仕様ですか?

    CS4、AS3.0で作成しております。 クリックすると指定したシーンへ移動するスクリプトを作成しました。 ボタンが複数あるので、各ボタンにインスタンス名を入れてます。 //各ボタンが押されるのを監視 this.menu_btn.addEventListener(MouseEvent.CLICK,menu); this.shop_btn.addEventListener(MouseEvent.CLICK,shop); this.access_btn.addEventListener(MouseEvent.CLICK,access); //クリックされたとき、指定フレームまで移動 function menu(e:MouseEvent):void { this.gotoAndPlay(69); } function shop(e:MouseEvent):void { this.gotoAndPlay(75); } function access(e:MouseEvent):void { this.gotoAndPlay(78); } で、ボタンとASを1フレーム目に入れれば作動するのですが、両方とも2フレーム以降に持ってくるとエラーが出て作動しません。 「TypeError: Error #1009: null のオブジェクト参照のプロパティまたはメソッドにアクセスすることはできません。」と出ます。 ボタンの数を1つにしても同様でした。 プログレスバーを作るのに、2フレーム目に持ってきたいのですが、これはCS4の仕様かバグなのでしょうか? 回避する方法はありますでしょうか? よろしくお願い致します。

    • ベストアンサー
    • Flash

専門家に質問してみよう