Hi Im делает андроид родное расширения в Gamemaker: Студию и когда я запускаю игру и попытаться использовать расширение я получить этот код ошибки в командном окне бегуна:Не удается найти метод на классе расширения:
Невозможно найти метод в классе расширения: folderLoader [double, double]
Это не сбой игры или выброс любых других ошибок, она просто не может найти мой метод в java-файле. это то, как я его настроить:
редактировать свойства-общие пакеты расширения TAB-
name- DirectoryPicker
андроида флажок галочкой
инъекционные к manifest-
<activity
android:name="${YYAndroidPackageName}.DirectoryPicker"
android:label="DirectoryPicker" />
вводят в градиент (для активации моих стилей.xml) -
compile 'com.android.support:appcompat-v7:+'
редактировать свойства-андроид пакет расширения TAB-
Класс name- DirectoryPicker
Permissions- android.permission.WRITE_EXTERNAL_STORAGE
свойств файла редактировать расширение box-
name- DirectoryPicker.extension .gmx
функция init- установить в папкуLoader
Копирует TO- галочкой андроид и андроид коробки YYC только
редактировать расширение функций box-
name- Загрузчик папок
внешний name- Загрузчик папок
help- Загрузчик папок (двойной FolderOnly, двойной ShowHidden)
тип возвращенного типа- выбранный двойной
ключа и значение box- аргумент 0 двойного argument1 двойного
код вызова для левой кнопкой мыши прессованного события объекта:
folderLoader(1.0, 0.0);
события асинхронного в одном объекте (набор для социального события):
var type2 = string(async_load[? "type2"])
var data2 = string(async_load[? "folder"])
if type2 == "folderFound"
{
var text = data2;
}
Java-Файл- имени DirectoryPicker.java
package ${YYAndroidPackageName};
import ${YYAndroidPackageName}.R;
import ${YYAndroidPackageName}.RunnerActivity;
import com.yoyogames.runner.RunnerJNILib;
import java.io.File;
import java.util.ArrayList;
import java.util.Collections;
import android.app.ListActivity;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.os.Environment;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;
public class DirectoryPicker extends ListActivity {
private static final int EVENT_OTHER_SOCIAL = 70;
public static final String ONLY_DIRS = "onlyDirs";
public static final String SHOW_HIDDEN = "showHidden";
public static final String CHOSEN_DIRECTORY = "chosenDir";
public static final int PICK_DIRECTORY = 43522432;
private File dir;
private boolean onlyDirs = true;
private boolean showHidden = false;
public void folderLoader(double yesOrNo,double noOrYes)
{
if(yesOrNo == 0.0) onlyDirs = false;
if(yesOrNo == 1.0) onlyDirs = true;
if(noOrYes == 0.0) showHidden = false;
if(noOrYes == 1.0) showHidden = true;
findFolders();
}
public void findFolders() {
Bundle extras = getIntent().getExtras();
String state = Environment.getExternalStorageState();
if (Environment.MEDIA_MOUNTED.equals(state)) {
File Root = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
dir = new File(Root.getAbsolutePath());
}
if (extras != null) {
showHidden = extras.getBoolean(SHOW_HIDDEN, false);
onlyDirs = extras.getBoolean(ONLY_DIRS, true);
}
setContentView(R.layout.chooser_list);
setTitle(dir.getAbsolutePath());
Button btnChoose = (Button) findViewById(R.id.btnChoose);
String name = dir.getName();
if(name.length() == 0)
name = "No folders found";
btnChoose.setText(name);
btnChoose.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
returnDir(dir.getAbsolutePath());
}
});
ListView lv = getListView();
lv.setTextFilterEnabled(true);
if(!dir.canRead()) {
Context context = getApplicationContext();
String msg = "Could not read folders.";
Toast toast = Toast.makeText(context, msg, Toast.LENGTH_LONG);
toast.show();
return;
}
final ArrayList<File> files = filter(dir.listFiles(), onlyDirs, showHidden);
String[] names = names(files);
setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, names));
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
if(!files.get(position).isDirectory())
return;
String path = files.get(position).getAbsolutePath();
Intent intent = new Intent((RunnerActivity.CurrentActivity), DirectoryPicker.class);
intent.putExtra(DirectoryPicker.SHOW_HIDDEN, showHidden);
intent.putExtra(DirectoryPicker.ONLY_DIRS, onlyDirs);
(RunnerActivity.CurrentActivity).startActivityForResult(intent, PICK_DIRECTORY);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == PICK_DIRECTORY && resultCode == RESULT_OK) {
Bundle extras = data.getExtras();
String path = (String) extras.get(DirectoryPicker.CHOSEN_DIRECTORY);
returnDir(path);
int dsMapIndex = RunnerJNILib.jCreateDsMap(null, null, null);
RunnerJNILib.DsMapAddString(dsMapIndex, "type2", "folderFound");
RunnerJNILib.DsMapAddString(dsMapIndex, "folder", path);
RunnerJNILib.CreateAsynEventWithDSMap(dsMapIndex, EVENT_OTHER_SOCIAL);
}
}
private void returnDir(String path) {
Intent result = new Intent();
result.putExtra(CHOSEN_DIRECTORY, path);
setResult(RESULT_OK, result);
finish();
}
public ArrayList<File> filter(File[] file_list, boolean onlyDirs, boolean showHidden) {
ArrayList<File> files = new ArrayList<File>();
for(File file: file_list) {
if(onlyDirs && !file.isDirectory())
continue;
if(!showHidden && file.isHidden())
continue;
files.add(file);
}
Collections.sort(files);
return files;
}
public String[] names(ArrayList<File> files) {
String[] names = new String[files.size()];
int i = 0;
for(File file: files) {
names[i] = file.getName();
i++;
}
return names;
}
}
Есть два связанных файла xml, которые я поместил в папку макета, которую я установил в папку res, которая находится в папке AndroidSource. Я также загрузил некоторые расширения, чтобы посмотреть, как они их сделали, и все они имеют файл в исходной папке Android с именем yymanifest.xml, который генерируется gamemaker, этот файл никогда не создается в моем проекте расширения, я пробовал сохранять, экспортировать расширение и повторно импортировать его, но файл никогда не существует, и это не файл, который вы можете сделать самим, gamemaker должен произвести его, когда он делает расширение, но как я могу заставить его сделать это ???
Любые идеи или помощь будет высоко оценена
Вы пытались очистить кеш перед компиляцией. Также можно удвоить десятичные значения? – user2899094