- ベストアンサー
javaのfor文
for文で下の1行目の真ん中の部分na1,na2...と続くものを一つにまとめようと思います。ActionScript2しか知らないので、、javaではどのようになるのでしょうか。ご教授願えませんでしょうか。 // function go_gsdf_na1(nx,ny) { map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; function go_gsdf_na2(nx,ny) { map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); };
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
No2です。 補足でコードが出てきたので、どういうことをしたいかがなんとなく見えてきた。 そして、自分が激しく勘違いをしていたことにも気づいた。ので、追記です。 突然ですが、質問で書いたコードって、ActionScriptのコードではないですよね? 恐らく「Javaのコード」として書いた部分だと思いますが、合ってますか? ※この2つの質問がYesだとして話を進めます。違ったらごめんなさい。 このコード、「Java」ではなく、「JavaScript」ではないですか? (最初、質問文のコードを見たとき、あまりに「Javaのコード」っぽくないので、 ActionScriptのコードで、それをこれからJavaに置き換えるものだと勘違いしてました) たぶん、コードを「.java」という拡張子で保存したり、コンパイルしたりということは やってないと思います。 HTMLファイルにそのまま書いたり、「.js」というファイルに保存してるような気がします。 ※ちなみにJavaとJavaScriptは全然違います。ワードとメモ帳くらい違います。 というわけで、JavaではなくJavaScriptということで話を進めます。 が、私はJavaScriptは素人以下で、あんまり詳しいことは言えないので悪しからず。 JavaScriptなら、ここよりJavaScriptカテの方がいいと思うので、 玄人さんの意見が欲しければ、JavaScriptカテに行って、も一回質問した方が良いかも。 JavaScriptの方は、 function go_gsdf_na(nx,ny) { map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; こういう関数が1個あれば十分な気がするのですが、どうでしょう。 ActionScript側では、JavaScriptの関数呼び出し部分を ExternalInterface.call("go_gsdf_na", plongitude, platitude); というようにしておけば良いと思われます。 どの座標を指定するかはActionScript側で (plongitude, platitudeという引数で)指定しているので、 JavaScript側は、「go_gsdf_na」という関数が準備されていて、 その関数で「指定された座標に移動する」ことができれば十分なはずです。 最初に気づけば良かった… GoogleAPI使ったことがあればすぐ気づいたかもしれなかった…
その他の回答 (3)
- PED02744
- ベストアンサー率40% (157/390)
>// >function go_gsdf_na1(nx,ny) { >map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); >}; >function go_gsdf_na2(nx,ny) { >map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); >}; >で、正しいです。 これで正しいのだとしたら、[function go_gsdf_na1]も[function go_gsdf_na2]も全く同じではないですか。 ANO.1さんもANo.2さんもおっしゃっているのは、 「なぜ、分ける必要があるのかがわからない」ってことなんですが、 なぜわけなくていいのかわからないってことですか? JAVAなら、各アイテムごとにメソッドを用意する必要がないので、 全体で一つでいいです。 public void go_gsdf_na(int nx, int ny) { MAP map = new MAP(); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; とでもして、毎回それぞれのインスタンスで変更があるたびにこれを呼んでください。 もし、JAVA側でインスタンスの名前がいるのなら、 public void go_gsdf_na(int nx, int ny, String inst) { MAP map = new MAP(); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; とでもして、インスタンス名も引数として渡すようにすればよいのではないでしょうか?
お礼
ありがとうございました。貴重な時間を割いておこたえを頂き感謝です。これも参考になります。今後ともよろしくお願い申し上げます。
- neko_noko
- ベストアンサー率45% (146/319)
もう一回補足要求します。 texjoyさんが言っているのは、「メソッドgo_gsdf_na1とgo_gsdf_na2の違いが分からない」と言うことだと思われます。 nxやnyの値(アクションスクリプトから送られた座標の値かな) が呼出しごとに異なる、というのとはちょっと違うかなと。 つまり、 map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); このコードが、go_gsdf_na1にもgo_gsdf_na2にも全く同じように書かれているので、 いまいちメソッドの中身の違いが分からないわけです。なので、 「どっち呼び出しても同じやがな!」とツッコミたくなるのです。
お礼
map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); 今、気がつきました。これは、2重になっていますね。 // function go_gsdf_na1(nx,ny) { map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; function go_gsdf_na2(nx,ny) { map.recenterOrPanToLatLng(new GPoint(nx, ny), 5); }; で、正しいです。こちらのプリントミスです。申し訳ありません。
補足
javaの方は全くの素人なので、説明不足になるかもしれませんが、flashのActionScript2側ではこんな送信をしています。参考までに。一応、意図どおりにこれで作動しています。gsdf_2d1,gsdf_2d2..というインスタンス名のムービクリックのボタンをクリックすると、個々に割り当てられている座標を送信して地図を表示します。butai_plongitudeは経度の配列。butai_platitudeは緯度の配列です。 // import flash.external.ExternalInterface; ExternalInterface.addCallback("asLocate", this, locate_pos); butai_plongitude = ["138.965485", "138.258734", "137.954121", "139.32415", "139.867308", "139.116161"]; butai_platitude = ["36.43487", "37.103983", "36.208529", "37.956109", "36.476101", "36.27213"]; for (var i = 1; i<=10; i++) { // 各ボタンの固有値 n を設定 this["gsdf_2d"+i].n = i; // 各ボタンの onRelease 動作定義 this["gsdf_2d"+i].onRelease = function() { //地図表示 butai_plongitude_disp = butai_plongitude[this.n-1]; butai_platitude_disp = butai_platitude[this.n-1]; var plongitude:Number = butai_plongitude_disp; var platitude:Number = butai_platitude_disp; ExternalInterface.call("go_gsdf_12d"+this.n, plongitude, platitude); }; }
メソッドの内容がまったく同じなのですが、別にする理由があるんですか?
補足
google mapのAPIのために、flashのアクションスクリプトで座標を送信し、javaがそれを受けてブラウザに指定された場所を表示する仕組みです。nx,nyにはその都度違う数値が送られています。
お礼
ありがとうございました。お恥ずかしい話、ご指摘の通りでした。そもそも関数であれば、個々のボタンに逐次対応させることはなかったようです。まぁ、技術習得のためには恥も厭わないということで、今後も色々と質問をしていきたいと思っています。今後ともよろしくお願い申し上げます。