마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

Arraylist와 타이머 질문입니다.

0 추천
TimerTask mTask = new TimerTask() {
        @Override
        public void run() {
            //랜덤한 위치의 오브젝트를 배열에 추가하는 코드 작성.
            //오브젝트, x좌표, y좌표
            int xlevel = (int)(Math.random()*level)+1;
            for(int i=0; i<xlevel; i++){
                int type = (int)(Math.random())*2;
                aryX.add(new Integer ((int)(Math.random())*7));
                aryY.add(new Integer(0));
                aryOb.add(imageback[type]);
            }
        }
    };
    Timer mTimer = new Timer();
    mTimer.schedule(mTask, 100, 1500); //실행TimerTask, 초기실행딜레이, 반복실행딜레이
    //핸들러를 실행시키는 문장
    mHandler.sendEmptyMessageDelayed(0, 100);

}
 
public void onDraw(Canvas canvas) {
    //배열안의 모든 요소가 움직이는 코드 작성.
    for (int i = 0; i < aryOb.size(); i++) {
        //y += dy;           // 세로로 이동
        counter++;
        int n = counter % 20 / 10;
        Bitmap ob = aryOb.get(i);
        Integer x = (Integer)aryX.get(i);
        Integer y = (Integer)aryY.get(i);
        //표시할 이미지, 그 이미지의 x좌표, 그 이미지의 y좌표, null
        if(aryOb.size() > 20){
            aryOb.remove(aryOb.size()-20);
        }
        canvas.drawBitmap(ob, x.intValue(), y.intValue()+dy, null);
    }
} // onDraw 끝

//------------------------------------
//      Timer Handler : onDraw를 반복실행
//------------------------------------
//장애물의 움직임을 보여줄 핸들러
Handler mHandler = new Handler() {               // 타이머로 사용할 Handler
    public void handleMessage(Message msg) {
        invalidate();                                       // 화면을 갱신한다 -> onDraw() 다시 실행
        mHandler.sendEmptyMessageDelayed(0, 100);      // 10/1000초마다 실행
    }
}; // Handler

 

현재 코드입니다.

일정 시간마다 랜덤한 곳에서 랜덤한 오브젝트가 생성되고,

수직으로 움직이는 걸 구현하고싶어

배열을 이용하고 배열의 모든 요소를 보여주면 되지 않을까?

하고 진행했는데 아무리해도 되지않는군요. 알고리즘 자체의 문제일까요, 아니면 코드의 문제일까요?

조언 부탁드립니다.. 

익명사용자 님이 2016년 11월 9일 질문

답변 달기

· 글에 소스 코드 보기 좋게 넣는 법
· 질문에 대해 추가적인 질문이나 의견이 있으면 답변이 아니라 댓글로 달아주시기 바랍니다.
표시할 이름 (옵션):
개인정보: 당신의 이메일은 이 알림을 보내는데만 사용됩니다.
스팸 차단 검사:
스팸 검사를 다시 받지 않으려면 로그인하거나 혹은 가입 하세요.
...