1

私はandengineが初めてで、シーンタッチイベントで線を引こうとしています

コードの平和を見つけた

private Line[] mLineArray = new Line[10];
private ArrayList<Points> mTouchPoints = new ArrayList<Points>(); 

public Scene onLoadScene() {
        this.mEngine.registerUpdateHandler(new FPSLogger());

        final Scene scene = new Scene();

    final RectangleParticleEmitter particleEmitter = new          
       RectangleParticleEmitter(CAMERA_WIDTH * 0.5f, CAMERA_HEIGHT * 0.5f, 5f, 5f);
        //scene.setOnSceneTouchListenerBindingEnabled(true);
        scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
            public boolean onSceneTouchEvent(final Scene pScene,
                    final TouchEvent pSceneTouchEvent) {

                if (pSceneTouchEvent.getAction() != TouchEvent.ACTION_DOWN
                        && pSceneTouchEvent.getAction() == TouchEvent.ACTION_MOVE) {

                    mTouchPoints.add(new Points(pSceneTouchEvent.getX(),
                            pSceneTouchEvent.getY()));

                    printSamples(pSceneTouchEvent.getMotionEvent(),
                            particleEmitter);

                } else if (pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP) {

                    hideAllLine();
                    resetTouchList();

                } else if (pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) {

                }

                return true;
            }
        });

        for (int i = 0; i < mLineArray.length; i++) {
            mLineArray[i] = new Line(0, 0, 0, 0, 10);
            scene.attachChild(mLineArray[i]);
        }
        return scene;
    }

ここでは、このプロジェクトで画面に触れることで線を引くことができますが、このコードをプロジェクトにインポートすると

     @Override
    public Scene onCreateScene() {
        this.mEngine.registerUpdateHandler(new FPSLogger());


        mPhysicsWorld = new PhysicsWorld(new Vector2(0,
                SensorManager.GRAVITY_EARTH), false);


        scene = new Scene();
        scene.setBackground(this.mGrassBackground);
        scene.setOnSceneTouchListener(new IOnSceneTouchListener() {
            public boolean onSceneTouchEvent(final Scene pScene,
                    final TouchEvent pSceneTouchEvent) {

                if (pSceneTouchEvent.getAction() != TouchEvent.ACTION_DOWN
                        && pSceneTouchEvent.getAction() ==    TouchEvent.ACTION_MOVE) {

                    mTouchPoints.add(new Points(pSceneTouchEvent.getX(),
                            pSceneTouchEvent.getY()));

                    printSamples(pSceneTouchEvent.getMotionEvent(),
                            particleEmitter);

                } else if (pSceneTouchEvent.getAction() == TouchEvent.ACTION_UP) {

                //  hideAllLine();
                    //resetTouchList();

                } else if (pSceneTouchEvent.getAction() == TouchEvent.ACTION_DOWN) {

                }

                return true;
            }
        });


        for (int i = 0; i < mLineArray.length; i++) {
            mLineArray[i] = new Line(0, 0, 0, 0, 10);
            scene.attachChild(mLineArray[i]);
        }

問題は、前のコードに Scene onLoadScene() が含まれていることです。私のプロジェクトには Scene onCreateScene() が含まれているため、mLineArray[i] をプロジェクトにアタッチできません。引数 mLineArray[i] を IEntity にキャストします。しかし、同じコードが以前のプロジェクトで機能しています。Scene.attachChild(mLineArray[i]); で引数 mLineArray[i] を IEntity にキャストするとエラーが発生します。

4

0 に答える 0