【发布时间】:2020-01-16 00:27:33
【问题描述】:
我尝试在 Android 上使用 DroidScript 制作一个小游戏。它使用 Javascript。
这是一个纸牌游戏。每个按钮代表一副牌中的一张牌。当我触摸一个按钮时,我希望该应用程序会显示我所触摸的按钮(卡片)的值的弹出窗口。
function callbackFunction( value )
{
app.ShowPopup(value);
}
//Called when application is started.
function OnStart()
{
//Create a layout with objects vertically centered.
lay = app.CreateLayout( "linear", "VCenter,FillXY" );
var deck = [1,2,3,4,5,6,7,8,9,10];
for (var card of deck)
{
var btn = app.CreateButton(card.toString(), 0.3, 0.1);
btn.SetOnTouch( callbackFunction );
lay.AddChild(btn);
}
//Add layout to app.
app.AddLayout( lay );
}
但这不会输出任何东西,因为我无法将值传递给回调函数。所以我尝试使用一组按钮:
//Called when application is started.
function OnStart()
{
//Create a layout with objects vertically centered.
lay = app.CreateLayout( "linear", "VCenter,FillXY" );
// Deck array
var deck = [1,2,3,4,5,6,7,8,9,10];
// array of buttons
var btns = [];
for (var card of deck)
{
var btn = app.CreateButton(card.toString(), 0.3, 0.1);
btns.push(btn);
btns[btns.length - 1].SetOnTouch(
() => { app.ShowPopup(btns[btns.length - 1].GetText())} );
lay.AddChild(btns[btns.length - 1]);
}
//Add layout to app.
app.AddLayout( lay );
}
问题是,每次我触摸任何按钮时,应用程序都会显示“10”。基本上我希望以卡片的值作为参数调用回调。所以我尝试了这个:
button.SetOnTouch( callbackFunction( button.GetText() );
但这不被接受为回调。我真的不知道如何将值传递给回调函数。
【问题讨论】:
标签: javascript android droidscript