1

Javaファイルと.xmlマニフェストを含むJava拡張機能を使用して、ゲームメーカースタジオでAndroidに移植した経験のある人はいますか? バージョン - Game Maker: Studio。また、拡張機能を作成するには、Java、XML、および GML (基本的には html と Visual Basic の組み合わせ) の 3 種類のコードが必要であることに注意してください。

Android 用に作成しているタイムカード アプリがあります。パンチインとパンチアウト、休憩を取ることができ、その情報をアプリの作業ディレクトリ内のテキスト ファイルに記録します。私の問題は、Note pad.exe (または同等のもの) を開いて、Game Maker: Studio でユーザーにテキストを表示する方法です。

私はsheldoという名前のJavaファイルを拡張機能に設定し、それをsupopntxtfと名付けました。そのプロパティページではandroidのみを選択し、関数のプロパティページでは名前と外部名の両方をshell_doとして設定しています。戻り値の型を double に設定し、引数 0 と引数 1 を文字列としてリストしました。ここに私がsheldo.javaファイルに入れたコードがあります:

     package ${YYAndroidPackageName};


    import android.content.Intent;
    import android.net.Uri;
    import java.io.File;
    import java.io.FileReader;
    import java.io.BufferedReader;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.lang.String;
    import ${YYAndroidPackageName}.R;
    import com.yoyogames.runner.RunnerJNILib;

    public class sheldo extends Activity {

        public void shell_do(String arg0, String arg1) {
            if (arg0 == "open") {
                Intent intent = new Intent(Intent.ACTION_EDIT);
                Uri uri = Uri.parse(arg1);
                intent.setDataAndType(uri, "text/plain");
                startActivity(intent);
            }
        }

       }

Androidマニフェストにxmlコードを追加しました(拡張機能名を右クリックしてAndroidタブに移動します)。入力したコードは次のとおりです。

<activity 
android:label="@string/app_name" 
android:name="${YYAndroidPackageName}" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>

そして私がそれに追加した権限:

android.permission.INTERNET
android.permission.BIND_CARRIER_SERVICE
android.permission.BIND_APP_WIDGET
android.permission.READ_EXTERNAL_STORAGE
android.permission.WRITE_EXTERNAL_STORAGE

わかりました、ゲーム自体で(GMLコード言語に戻りました)、ポインターという名前のオブジェクトがあり、その作成イベントでこれらの関連変数を宣言しました:

result1="open";result2="No records";result3="No records";

オブジェクトポインターのアラームイベントで、拡張機能をアクティブにするこのコードがあります:

result1="open";
result2=string_insert(string(global.fname[global.empnum]),string(" "),0);
result2=string_insert(string(result2),string(global.finfo[0]),0);
result2=string_insert(string(result2),string(" Week "),0);
result2=string_insert(string(result2),string(global.fiscalw),0);
result2=string_insert(string(result2),string(" "),0);
result2=string_insert(string(result2),string(global.yrs),0);
result2=string_insert(string(result2),string(".txt"),0);// result2 to this        point builds the file name.txt
result3=string_insert("file:///",working_directory,0;
result3=string_insert(result3,string("+"),0);
result2=string_insert(string(result3),string(result2),0);// this puts the     file path together
shell_do(result1,result2); // this calls the extension



   Explanation of the variables that I used to name the file with their values being all strings:
  global.fname[global.empnum] - employee name depending on the employee number
  global.finfo[0] - the company name
  global.fiscalw - the week
  global.fiscalyr - the year 

私は自分のゲームをコンパイルしました (ゲームが完全にコンパイルされていない限り、拡張機能は機能しないとマニュアルに書かれているため)、そこには問題はありませんが、拡張機能を使用しようとしても何も起こりませんが、ランナーログを振り返ってみると、このエラーが発生します拡張機能を使用しようとするたびにメッセージ:

shell_do でメソッド shell_do を呼び出そうとすると、例外がスローされました

xml と組み合わせた Java の詳細については、You Tube で役立つビデオをいくつか見ました

https://www.youtube.com/watch?v=tv2iClQ3G3s&list=PLRz47KuVF6Uos2m6ZQ5J7v9xNA-LN8m7L&index=14 Android Studio をダウンロードし、かなり簡単に動作するようになりましたが、このプロジェクトを Game Maker: studio で完了させたいと思っています。それにお金がかかりますし、アプリ全体を書き直したくありません。言語がまったく異なるからです。しかし、どこかで何か間違ったことをしているに違いないと思います。

4

0 に答える 0