编辑尝试使用 OOP 在 js 中创建库

Edit trying to make a library in js with OOP

本文关键字:js 创建 OOP 编辑      更新时间:2023-09-26

编辑 - 更具体,我根据评论尝试了什么,但它没有达到我的目标

所以我正在尝试为 ModPE 脚本编写者创建一个 Gui 库。而不是他们全部输入,我希望它被预定义并在类中组织。所以我做了所有的思考和解决,他们可以更轻松地创建 GUI 模组。我修复并尝试了...

var ctx = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
function newLevel()
{
    ctx.runOnUiThread(new java.lang.Runnable() {
        run: function()
        {
            try
            {
                var PopupsAndLayouts = {
                    PopupWindow: new android.widget.PopupWindow(ctx),
                    LinearLayout: new android.widget.LinearLayout(ctx),
                                Button: new android.widget.Button(ctx);
                    wrapContect: android.widget.LinearLayout.LayoutParams.WRAP_CONTENT;
                    fillParent: android.widget.LinearLayout.LayoutParams.FILL_PARENT;
                    leftTopCorner: [ctx.getWindow().getDecorView(), android.view.Gravity.TOP | android.view.Gravity.LEFT, 0, 0]
                };
                var myWindow = PopupsAndLayouts.PopupWindow;
                var myLayout = PopupsAndLayouts.LinearLayout;
                var myButton = PopupsAndLayouts.Button;
                myLayout.addView(myButton);
                myWindow.setContentView(myLayout);
                myWindow.setHeight(wrapContent);
                myWindow.setWidth(wrapContent);
                myWindow.showAtLocation(leftTopCorner);
                //Then they add more widgets or set their script
            }
            catch (libError)
            {
                print(error);
            }
        }
    });
}

但它行不通。关键是有组织的类,所以而不是他们必须知道 var myButton = new android.widget.Button(ctx); 或 var myLayout = new android.widget.LinearLayout(ctx);

他们只是输入 var myLayout = Layouts.LinearLayout; 或 var myButton = Widgets.Buttons.Button;

我该怎么做?我迷路了,想建立这个图书馆有什么想法吗?

GridLayout呢?虽然只是一般的,但不是OOP明智。

对于 GridLayout,你可以这样做

var ctx = com.mojang.minecraftpe.MainActivity.currentMainActivity.get();
function newLevel()
{
    ctx.runOnUiThread(new java.lang.Runnable() {
        run: function()
        {
            try
            {
                var l = new android.widget.GridLayout(ctx);
                var b1 = new android.widget.Button(ctx);
                var b2 = new android.widget.Button(ctx);
                var b3 = new android.widget.Button(ctx);
                var ba = [b1, b2, b3];
                for (int i = 0; i < ba.length; i++)
                {
                    bl.addView(ba[i]);
                }
                var p = new android.widget.PopupWindow(l, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT, android.widget.LinearLayout.LayoutParams.WRAP_CONTENT);
                p.showAtLocation(ctx.getWindow().getDecorView(), android.view.Gravity.CENTER | android.view.Gravity.CENTER, 0, 0);
            }
            catch (defaultError)
            {
                print(defaultError);
        }
    });
}

for 循环提供了灵活性,但如果您不想这样做,那么您可以做的只是添加它们,例如......

l.addView(b1, b2, b3);

这个外观更像是javascript...但我不知道OOP,所以我不能说我有正确的答案。

var PopupsAndLayouts = {
   PopupWindow: new android.widget.PopupWindow(ctx),
   LinearLayout: new android.widget.LinearLayout(ctx),
   Button: new android.widget.Button(ctx),
   wrapContent: android.widget.LinearLayout.LayoutParams.WRAP_CONTENT,
   fillParent: android.widget.LinearLayout.LayoutParams.FILL_PARENT,
   leftTopCorner: [ctx.getWindow().getDecorView(), android.view.Gravity.TOP | android.view.Gravity.LEFT, 0, 0]
};