【问题标题】:Edit trying to make a library in js with OOP编辑尝试使用 OOP 在 js 中创建库
【发布时间】:2016-03-04 16:01:33
【问题描述】:

编辑 - 更具体,我根据 cmets 尝试过的内容并没有达到我的目标

所以我正在尝试为 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 明智的。

【问题讨论】:

  • var PopupsAndLayouts = { var 都错了……
  • 之前说过,我不会在Js中做太多的类和对象

标签: javascript java


【解决方案1】:

对于 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);

【讨论】:

    【解决方案2】:

    这看起来更像是 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]
    };
    

    【讨论】:

    • 啊好吧...所以我做错了课程。是的,它是 javascript rhino 中的 Java (Rhino) Java
    猜你喜欢
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 2015-01-15
    • 2015-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多