DroidScript의 모든 버튼에 대해 다른 값으로 콜백 함수를 만드는 방법은 무엇입니까?

sanitizedUser

Android에서 DroidScript를 사용하여 작은 게임을 만들려고했습니다. 자바 스크립트를 사용합니다.

카드 게임입니다. 각 버튼은 덱의 카드를 나타냅니다. 버튼을 터치하면 터치 한 버튼 (카드)의 값과 함께 앱이 팝업 될 것으로 예상합니다.

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() );

그러나 그것은 콜백으로 허용되지 않습니다. 콜백 함수에 값을 전달하는 방법을 정말 모르겠습니다.

Kallikratidas

다음과 같이 간단하게 버튼을 참조 할 수 있습니다.

function callbackFunction(){
 var button = this;
 var name = this.GetText();
}

버튼이나 모든 종류의 개체에 자신의 데이터를 저장할 수도 있습니다.

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 );
        btn.name = card.toString();
        btn.index = deck.indexOf(card);
        lay.AddChild(btn);
    }

어쨌든 배열을 사용하여 버튼을 저장할 수 있습니다 (제가 제공 한 첫 번째 솔루션을 사용하는 것이 더 좋습니다).

// 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);
        eval("btns["+(btns.length - 1)+"].SetOnTouch(function(){callbackFunction("+card.toString()+");} );");
        lay.AddChild(btns[btns.length - 1]);
    }

function callbackFunction(name){
  app.ShowPopup(name);
}

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

모든 플롯이 다른 열의 값에 해당하는 열의 모든 값에 대해 다른 막대를 그리는 방법은 무엇입니까?

분류에서Dev

반짝이는 DT의 라디오 버튼 (JS 콜백으로 만든)에서 사용자 입력에 액세스하고 하나의 DT에 다른 JS 요소를 갖는 방법은 무엇입니까?

분류에서Dev

Node.js에서 다른 함수의 콜백으로 함수를 전달하는 방법은 무엇입니까?

분류에서Dev

코드의 모든 부분에 대해 다른 작업을 수행하는 방법은 무엇입니까?

분류에서Dev

다른 열의 모든 요소에 대해 더 큰 요소의 수를 효율적으로 계산하는 방법은 무엇입니까?

분류에서Dev

R의 다른 테이블에있는 모든 해당 열에 대한 성장률 테이블을 자동으로 만드는 방법은 무엇입니까?

분류에서Dev

다른 함수에서 값의 인수를받는 함수를 만드는 방법은 무엇입니까?

분류에서Dev

ListView의 모든 위치에 대해 다른 작업을 수행하는 방법은 무엇입니까?

분류에서Dev

ajax 요청의 모든 양식에 대해 또 다른 "경고"를 갖는 방법은 무엇입니까?

분류에서Dev

Django의 콜백에서 다른 뷰로 데이터를 전송하는 방법은 무엇입니까?

분류에서Dev

모든 열에 대해 비슷한 값의 값을 평균으로 바꾸는 방법은 무엇입니까?

분류에서Dev

배열의 모든 요소를 계산하고 모든 항목에 대해 키 / 값 개체를 만드는 방법은 무엇입니까?

분류에서Dev

다른 변수의 값을 기반으로 각 개인에 대한 이진 변수를 만드는 방법은 무엇입니까?

분류에서Dev

콜백이 JS의 콜백에 등록 된 멤버 함수를 소유 한 객체에 대한 참조를 전달하는 방법은 무엇입니까?

분류에서Dev

콜백으로 간단한 버튼 클래스를 만드는 방법은 무엇입니까?

분류에서Dev

하나의 변수 좌표를 제외하고 모든 곳에서 콜론으로 Numpy Index를 만드는 방법은 무엇입니까?

분류에서Dev

함수의 모든 인수를 다른 명령에 전달하는 방법은 무엇입니까?

분류에서Dev

JavaScript에서 JSON API의 모든 응답에 대해 새 div를 만드는 방법은 무엇입니까?

분류에서Dev

JFrame의 모든 구성 요소에 대해 KeyListener 트리거를 만드는 방법은 무엇입니까?

분류에서Dev

목록의 모든 항목에 대해 함수를 호출하는 방법은 무엇입니까?

분류에서Dev

SQL의 모든 그룹에 대해 집계 함수를 사용하는 방법은 무엇입니까?

분류에서Dev

마지막으로 열린 대화 상자의 버튼 클릭에서 모든 대화 상자를 닫는 방법은 무엇입니까?

분류에서Dev

오이 자바에서 다른 모듈에 대한 경로를 만드는 방법은 무엇입니까?

분류에서Dev

대시 콜백의 값 앞에 텍스트를 표시하는 방법은 무엇입니까?

분류에서Dev

Kotlin에서 콜백 함수를 만드는 방법은 무엇입니까?

분류에서Dev

ID로 특정 열 값을 빼고 모든 행에 대해 다른 열에 결과를 표시하는 방법은 무엇입니까?

분류에서Dev

Winforms의 모든 값에 대해 textedit에서 ₹ 기호를 사용하는 방법은 무엇입니까?

분류에서Dev

함수에 대해 별도의 파일을 만든 다음 가져 오는 방법은 무엇입니까?

분류에서Dev

다른 시간대의 자정 이후에 모든 데이터를 얻는 방법은 무엇입니까?

Related 관련 기사

  1. 1

    모든 플롯이 다른 열의 값에 해당하는 열의 모든 값에 대해 다른 막대를 그리는 방법은 무엇입니까?

  2. 2

    반짝이는 DT의 라디오 버튼 (JS 콜백으로 만든)에서 사용자 입력에 액세스하고 하나의 DT에 다른 JS 요소를 갖는 방법은 무엇입니까?

  3. 3

    Node.js에서 다른 함수의 콜백으로 함수를 전달하는 방법은 무엇입니까?

  4. 4

    코드의 모든 부분에 대해 다른 작업을 수행하는 방법은 무엇입니까?

  5. 5

    다른 열의 모든 요소에 대해 더 큰 요소의 수를 효율적으로 계산하는 방법은 무엇입니까?

  6. 6

    R의 다른 테이블에있는 모든 해당 열에 대한 성장률 테이블을 자동으로 만드는 방법은 무엇입니까?

  7. 7

    다른 함수에서 값의 인수를받는 함수를 만드는 방법은 무엇입니까?

  8. 8

    ListView의 모든 위치에 대해 다른 작업을 수행하는 방법은 무엇입니까?

  9. 9

    ajax 요청의 모든 양식에 대해 또 다른 "경고"를 갖는 방법은 무엇입니까?

  10. 10

    Django의 콜백에서 다른 뷰로 데이터를 전송하는 방법은 무엇입니까?

  11. 11

    모든 열에 대해 비슷한 값의 값을 평균으로 바꾸는 방법은 무엇입니까?

  12. 12

    배열의 모든 요소를 계산하고 모든 항목에 대해 키 / 값 개체를 만드는 방법은 무엇입니까?

  13. 13

    다른 변수의 값을 기반으로 각 개인에 대한 이진 변수를 만드는 방법은 무엇입니까?

  14. 14

    콜백이 JS의 콜백에 등록 된 멤버 함수를 소유 한 객체에 대한 참조를 전달하는 방법은 무엇입니까?

  15. 15

    콜백으로 간단한 버튼 클래스를 만드는 방법은 무엇입니까?

  16. 16

    하나의 변수 좌표를 제외하고 모든 곳에서 콜론으로 Numpy Index를 만드는 방법은 무엇입니까?

  17. 17

    함수의 모든 인수를 다른 명령에 전달하는 방법은 무엇입니까?

  18. 18

    JavaScript에서 JSON API의 모든 응답에 대해 새 div를 만드는 방법은 무엇입니까?

  19. 19

    JFrame의 모든 구성 요소에 대해 KeyListener 트리거를 만드는 방법은 무엇입니까?

  20. 20

    목록의 모든 항목에 대해 함수를 호출하는 방법은 무엇입니까?

  21. 21

    SQL의 모든 그룹에 대해 집계 함수를 사용하는 방법은 무엇입니까?

  22. 22

    마지막으로 열린 대화 상자의 버튼 클릭에서 모든 대화 상자를 닫는 방법은 무엇입니까?

  23. 23

    오이 자바에서 다른 모듈에 대한 경로를 만드는 방법은 무엇입니까?

  24. 24

    대시 콜백의 값 앞에 텍스트를 표시하는 방법은 무엇입니까?

  25. 25

    Kotlin에서 콜백 함수를 만드는 방법은 무엇입니까?

  26. 26

    ID로 특정 열 값을 빼고 모든 행에 대해 다른 열에 결과를 표시하는 방법은 무엇입니까?

  27. 27

    Winforms의 모든 값에 대해 textedit에서 ₹ 기호를 사용하는 방법은 무엇입니까?

  28. 28

    함수에 대해 별도의 파일을 만든 다음 가져 오는 방법은 무엇입니까?

  29. 29

    다른 시간대의 자정 이후에 모든 데이터를 얻는 방법은 무엇입니까?

뜨겁다태그

보관