Tôi đã tạo chế độ xem tùy chỉnh trong Android để hiển thị bóng trên màn hình. Bây giờ những gì tôi muốn là khi tôi chạm vào quả bóng nó sẽ phát nổ trong bốn phần và mỗi phần nên di chuyển bốn hướng khác nhau tức là lên, xuống, trái, phải. Tôi biết tôi phải thiết lập người nghe cảm ứng để phát hiện cảm ứng trên quả bóng nhưng sau đó làm thế nào để tạo ra một hiệu ứng nổ? Vấn đề này được giải quyết ngay bây giờ. Tôi đang hiển thị nhiều quả bóng trên màn hình để người dùng có thể nhấp vào nó và phát nổ chúng.Vấn đề nhấp chuột đối tượng tùy chỉnh trong android
Đây là giao diện tùy chỉnh của tôi:
public class BallView extends View {
private float x;
private float y;
private final int r;
public BallView(Context context, float x1, float y1, int r) {
super(context);
this.x = x1;
this.y = y1;
this.r = r;
}
@Override
protected void onDraw(Canvas canvas) {
super.onDraw(canvas);
canvas.drawCircle(x, y, r, mPaint);
}
}
SmallBall với tính chất tương tự, ngoại trừ một trong đó là định hướng và một nổ phương pháp để di chuyển nó theo hướng và hình ảnh động cờ để ngăn chặn nó di chuyển.
private final int direction;
private boolean anim;
public void explode() {
// plus or minus x/y based on direction and stop animation if anim flag is false
invalidate();
}
layout xml của tôi là như sau:
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout android:id="@+id/main_view"
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:background="#FF66FF33" />
tôi thêm BallView và SmallBall đến lớp hoạt động như sau:
final FrameLayout mainFrameLayout = (FrameLayout) findViewById(R.id.main_frame_layout);
SmallBall[] smallBalls = new SmallBall[4];
smallBalls[0] = new SmallBall(getApplicationContext(), 105, 100, 10, 1, false);
smallBalls[0].setVisibility(View.GONE);
mainFrameLayout .addView(smallBalls[0]);
// create and add other 3 balls with different directions.
BallView ball = new BallView(getApplicationContext(), 100, 100, 25, smallBalls);
listener = new MyListener(ball);
ball.setOnClickListener(listener);
mainFrameLayout.addView(ball);
tôi thêm nhiều BallView và người giám hộ Mảng SmallBall tại các vị trí khác nhau. Bây giờ những gì xảy ra không có vấn đề mà tôi nhấp vào màn hình cuối cùng thêm BallView bắt đầu nổ. Sau giây phút cuối cùng, v.v. Vì vậy, đây là 2 vấn đề:
- Tại sao nó gọi sự kiện onClick/onTouch bất kể tôi nhấp vào màn hình ở đâu? Nó chỉ nên gọi sự kiện nghe khi tôi bấm vào BallView cụ thể.
- Và thứ hai là lý do tại sao BallView bắt đầu bùng nổ theo cách ngược lại cách chúng được thêm vào bố cục?
lớp nghe tôi:
public void onClick(View v) {
BallView ballView = (BallView) v;
ballView.setVisibility(View.GONE);
//get small balls associated with this ball.
//loop through small ball and call their explode method.
}
Tôi đã tỉa code do giới hạn nhân vật trong câu hỏi.
Bạn đang gặp phải vấn đề gì trong việc mã hóa hiệu ứng phát nổ? Bạn có muốn các hoạt hình chuyển động của các bộ phận hoặc đồ họa nổ? Nó sẽ tốt hơn nếu bạn có thể cung cấp một hình ảnh hoặc một cái gì đó bạn muốn đạt được. – noob
@Creator: Điều tôi muốn là khi ai đó nhấp vào bất kỳ quả bóng nào cần phát nổ trong bốn quả bóng nhỏ và mỗi bức tường sẽ di chuyển theo một trong bốn hướng. Tôi không chắc chắn về những gì để sử dụng cho điều này như tôi mới đến android. Có thể là hoạt hình của các bộ phận bị nổ sẽ là lựa chọn tốt. –
Kiểm tra Câu trả lời của tôi – noob