سؤال

مشابه ل هذا السؤال, ، ولكن البحث عن إجابة ستعمل في سياق لعبة XNA.

كيف يمكنني تحديد ما إذا كان الجهاز موجودًا في اتجاه مشهد أو توجيه صورة؟ تعتمد الإجابة الواردة في السؤال العام على الوظيفة المدمجة في PhoneapplicationPage. AFAIK ، لن تستخدم عادة تلك الفئة في سياق لعبة XNA على Windows Phone 7.

هل كانت مفيدة؟

المحلول

من نيك جرافلين: http://forums.xna.com/forums/p/49684/298915.aspx#298915لم يعد التسارع في إطار XNA بعد الآن. يمكنك الوصول إليها من خلال هذه الخطوات:

  1. أضف إشارة إلى microsoft.devices.sensors.dll
  2. أضف "استخدام microsoft.devices.sensors ؛" لاستخدام البيانات الخاصة بك.
  3. قم بتوصيل حدث وابدأ في قراءة مقياس التسارع:

جرب هذا:

try  
{  
    AccelerometerSensor.Default.ReadingChanged += Default_ReadingChanged;  
    AccelerometerSensor.Default.Start();  
}  
catch (AccelerometerStartFailedException)  
{  
}
  1. أضف معالج الحدث نفسه:

مثله:

void Default_ReadingChanged(object sender, AccelerometerReadingAsyncEventArgs e)  
{  
}

وأنت على ما يرام. ضع في اعتبارك أن مقياس التسارع هذا لا يعمل مع المحاكي ، لذا لا توجد طريقة لاختبار هذا بدون جهاز. أنت بحاجة إلى ذلك المحاولة/الصيد لأن Start ستعمل استثناء في المحاكي لأنه لا يدعم مقياس التسارع.

نصائح أخرى

لقد تغير هذا يبدو. من أجل ربط "تغيير القراءة" ، يجب عليك إنشاء مقياس تسارع ، ثم بدء تشغيله. يمكن العثور على الرمز المطلوب في MSDN. استرداد مدخلات التسارع (Windows Phone)

يبدو شيئًا كهذا:

#if WINDOWS_PHONE
    Accelerometer accelerometer;
    try
    {
        accelerometer = new Accelerometer();
        accelerometer.ReadingChanged += new EventHandler<AccelerometerReadingEventArgs>(a_ReadingChanged);
        accelerometer.Start();
    }
    catch (AccelerometerFailedException e)
    {
    }
    ...
}

void a_ReadingChanged(object sender, AccelerometerReadingEventArgs e)
{
    //this function is not supported by the window 7 phone emulator
    throw new NotImplementedException();
}
#endif

إليك منشور من مدونة شون هارجريفز

http://blogs.msdn.com/b/shawnhar/archive/2010/07/12/orientitation-and-rotation-on-windows-phone.aspx؟utm_source=twitterfeed&utm_medium=twitter

إذا كنت ترغب في التبديل تلقائيًا بين كل من اتجاهات المناظر الطبيعية والتقوية حيث يتم تدوير الهاتف:

graphics.SupportedOrientations = DisplayOrientation.Portrait | 
                                 DisplayOrientation.LandscapeLeft | 
                                 DisplayOrientation.LandscapeRight;

يمكن التعامل مع التبديل بين المناظر الطبيعية والمناظر الطبيعية تلقائيًا دون أي مساعدة خاصة من اللعبة ، وبالتالي يتم تمكينه افتراضيًا. لكن التبديل بين المناظر الطبيعية والصورة يغير أبعاد Backbuffer (قصيرة وعرضًا مقابل طويل وقوة) ، والتي من المرجح أن تتطلب منك ضبط تخطيط الشاشة. لن تكون جميع الألعاب قادرة على التعامل مع هذا (وبعض التصميمات لا معنى لها إلا في اتجاه واحد) ، لذلك يتم تمكين التبديل الديناميكي بين المناظر الطبيعية والصورة فقط للألعاب التي يتم التمسك بها بشكل صريح عن طريق إعداد الدعم.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top