MCPEのJavaScriptModでJavaを利用する

さて、タイトルからいきなりわけわかんない話が始まっちゃったのですこし解説します


MCPEのModでGUI使ってるModder、いますよね?

現在時刻とか端末の言語とか、バッテリー残量まで取得しちゃう、すごいModder、いますよね?ダウンロードまでこなせちゃいますよね?

(僕です僕←)


あれはJavaScriptではなく、Javaで出来てるんです


(あ、ちなみに、よくわからない箇所は読み飛ばしながら読んでいいんだよ?)


JSのModは、1度Javaに変換されてから実行されるから、その途中にJavaのコードを挟めば、そのまま変換されてJavaとして使える仕組みになってるんだね!


ここからJava触ったことある人向け

触ったことない人は下までスクロールしてね


Javaのimportしないと落ち着かない人のためにimportするコード


//試しにjava.io.Fileをimport

var File=java.io.File;


いやあ、簡単だね

このブログでは、new java.io.File();って明記するけど、事前にimportした場合はnew File();に読み替えて読んでもらって大丈夫です。


ちなみに、Javaでは使えるのにJSでは使えないコードとかもあるから気をつけよう


//viewのidを取得するコード

(TextView)findViewById(R.id.textview)


こういうコードは使えないので、エラーが出ます


ここまでJava触ったことある人向け

これ以降は普通に読めるよ


それでは、試しにJavaのコードを実装してみよう!


今回は現在時刻を取得するコード


//これはJavaのコードです。JSにしても動きません

import android.text.format.Time;//1


Time time = new Time("Asia/Tokyo");//2

time.setToNow();//3

String date = time.year + "年" + (time.month+1) + "月" + time.monthDay + "日 "

time.hour + "時" + time.minute + "分" + time.second +"秒";//4


現在時刻がdateにxx年xx月xx日xx時xx分xx秒と代入されるコードになります


これを一行ずつ変換していきましょう

//のあとの数字が行数だとします


まず、1行目…はおまじないなのでスルー

JSには記述しません(Java知ってる人向けの解説読んだ人はそれに従ってね)


2

これは、TimeクラスのtimeというObjectを生成してるんですけど…

これはつまり代入ということになります

=を見れば少しわかりますよね?

初めのTimeは、これから生成するのはTimeクラスの物体だよーっていう宣言になります

JSでは、この宣言は必要なくて、すべてvarを使用します

つまり、このコードの最初の方は、


//JS

var time=


と、置き換えられますね


続いて、new Time()です

これは、Timeクラスの物体を生成するコードです

ここでおまじないが発動されます

Timeは、android.text.format.Timeというアドレス(パッケージ名)が振られているんですが、Time、だけだとアドレスがわかりませんよね?

というわけで、こう書きます

(そういうもんなんだ、って理解で大丈夫です)


//JS

var time=new android.text.format.Time();


はい、これで2行目の変換完了です


3

これは現在時刻をtimeに代入するコードです

こういうコードは書き換えなくても使えます

だからコードは省略


4

これはdateに文字列を代入するだけですね

time.hourとかはそれぞれの数値を取得するコードなので、書き換えません

それでは、ここまでの内容を踏まえて書き換えましょう


//JS

var date=time.year+"年"+(time.month+1)+"月"+time.monthDay+"日 "time.hour+"時"+ time.minute+"分"+time.second+"秒";


できましたか?

Stringは、文字列ですよ!の宣言なのでvarに変換、ほかは変えなくて大丈夫でしたね!


最後にコードをまとめて終わりにしましょう


//JS

//現在時刻を取得するコード

var time=new android.text.format.Time();

time.setToNow();

var date=time.year+"年"+(time.month+1)+"月"+time.monthDay+"日 "time.hour+"時"+ time.minute+"分"+time.second+"秒";


これで完成です


お疲れ様でした!

質問クレーム苦情文句等はどんどんコメントしていってね!

TwitterやGoogle+でもうけつけてるよ!

ついき

Android Developers をよめばJavaのコードがのってます

コメントをお書きください

コメント: 7
  • #1

    わんせた (水曜日, 30 9月 2015 08:07)

    コメントで、こういうコードはどう変換するのか、とか聞いてくれてもOKです

  • #2

    武田家 (水曜日, 30 9月 2015 16:59)

    マジイケメン

  • #3

    たけはる★(早苗) (金曜日, 02 10月 2015 23:42)

    ListViewってjsでどうやって使うんですか?

  • #4

    わんせた (土曜日, 03 10月 2015 07:06)

    >>1

  • #5

    わんせた (土曜日, 03 10月 2015)

    #1

  • #6

    プログラマーGenboo(Genbu Hase) (土曜日, 24 10月 2015 07:47)

    ってことは普通にJavaで書いていいのかい???

  • #7

    ダーパ局長 (火曜日, 27 10月 2015 12:17)

    お疲れチョン(´・ω・`)ノ