在cocos2d-x上使用重力加速器

突然想使用下重力加速器,但是發現C++版的那些AccelerometerDispatcher,CCAccelerometer 等東西在XNA版本都沒有實現。而且,在層裏面的Init事件中想要註冊使用加速器的this.isAccelerometerEnabled = true;編譯的直接報錯。貌似意思是找不到。看了下CCLayer的封裝,的確有這個isAccelerometerEnabled 的成員。但是爲什麼報錯就不清楚了。

糾結了好一會,突然想起來這個引擎也就是在XNA基礎上做的。那麼直接用XNA的方法吧。

經過嘗試,成功!

1,要添加Microsoft.Devices.Sensors的引用。

2,在層的init事件中啓用加速器。

            Accelerometer gSensor = new Accelerometer();
            gSensor.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<AccelerometerReading>>(gSensor_CurrentValueChanged);
            gSensor.Start();

注:以前都是用的是ReadingChanged方法來監聽重力座標的改變。但是現在這個方法不推薦了。現在的替代方法是CurrentValueChanged。

3,實現監聽方法。

        void gSensor_CurrentValueChanged(object sender, SensorReadingEventArgs<AccelerometerReading> e)
        {
            Vector3 vector3 = e.SensorReading.Acceleration;
            //由vector3可以取到x,y,z值。
        }

這樣,就能用加速器了。。。記住,不用設置層的isAccelerometerEnabled 這個成員屬性。這個成員屬性直接忽視吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章