鉴于诺基亚(微软移动这个没人用的手机)开发者比较少,cocos2dx移植方面更是少的问题,总结一下WP8移植方面的资料,希望对大家有用,自己也当作笔记留念。 

1、WP8方面有两种方式创建项目,HelloCpp和TestCpp就是这样,XAML方式和纯c++方式。最好选择xaml方式,因为你有可能会c++和c#进行交互。废话不说,有图有真相。

Cocos2d-x for Windows Phone 用法总结

 

2、说到c++c#交互,其实叫C++/CXC++/CX其实是微软在Win8开发平台下,对C++语言的一种扩展),下面就讲述其用法,概念可以去百度。

    a)  c++调用c#,比如我想获得该诺基亚的UniqueID,直接上代码吧,了解c#委托的童鞋应该不难理解,if...baidu...    

****************************************************************************

//WP8DataManager.h
#ifndef __WP8DataManager_H__
#define __WP8DataManager_H__
namespace PhoneDirect3DXamlAppComponent 
{
    public delegate Platform::String^ GetUniqueIDDelegate();

    public ref class WP8DataManager sealed
    {
    public:
        WP8DataManager(void)
        {

        }
        ///DeviceInfo
        //此方法将在c#中调用
        void SetGetUniqueIDDelegate(GetUniqueIDDelegate^ del)
        {
            m_getUniqueIDDelegate = del;
        }
        //获得的id,c++直接调用
        Platform::String^ GetUniqueID()
        {            
            if(m_getUniqueIDDelegate)
            {
                return m_getUniqueIDDelegate->Invoke();
            }
            return "";
        }
        ///DeviceInfo end
    private:
        property static GetUniqueIDDelegate^ m_getUniqueIDDelegate;
    };
}
#endif // __WP8DataManager_H__

****************************************************************************

//MainPage.xaml.cs
namespace PhoneDirect3DXamlAppInterop
{
    public partial class MainPage : PhoneApplicationPage
    {
        // other demo...
        
        //datamanager
        private WP8DataManager m_dataManager = null;

        private void DrawingSurface_Loaded(object sender, RoutedEventArgs e)
        {
            if (m_d3dInterop == null)
            {
                //demo ......
            }

            if (m_dataManager == null)
            {
                m_dataManager = new WP8DataManager();
                m_dataManager.SetGetUniqueIDDelegate(getUniqueID);
            }            
        }
        
        public String getUniqueID()
        {
            /*try {
                byte[] uniqueIDbytes = (byte[])DeviceExtendedProperties.GetValue("DeviceUniqueId");
                string uniqueID = System.Convert.ToBase64String(uniqueIDbytes);
            }catch(Exception ex){
                MessageBox.Show(ex.Message, "Failed", MessageBoxButton.OK);
            }*/
            return "abc";
        }
    }
}

****************************************************************************

//your cpp demo
PhoneDirect3DXamlAppComponent::WP8DataManager^ manager = ref new PhoneDirect3DXamlAppComponent::WP8DataManager();
Platform::String^ id = manager->GetUniqueID();

****************************************************************************
View Code

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-05-20
  • 2022-03-03
  • 2021-11-11
猜你喜欢
  • 2021-07-12
  • 2022-12-23
  • 2021-11-04
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-01-21
相关资源
相似解决方案