cocos2d-x 打开url 和 截屏功能

cocos2d-x 打开url 和 截屏功能,第1张

概述cocos2d-x不支持跨平台打开一个url,  所以我们分别要在 iOS 和 Android 上单写。   iOS端: 1.新建一个cocos2dx项目,在项目中创建一个.mm的文件,命名为 OpenUrl。如下图: OpenUrl.h [cpp] view plain copy //   //  OpenUrl.h   //  OpenUrl   //   //  Created by Xia

cocos2d-x不支持跨平台打开一个url, 所以我们分别要在 iOS 和 AndroID 上单写。

iOS端:

1.新建一个cocos2dx项目,在项目中创建一个.mm的文件,命名为 OpenUrl。如下图:


OpenUrl.h

[cpp] view plain copy // //OpenUrl.h //OpenUrl // //CreatedbyXiangZion14-6-18. // // #ifndef__OpenUrl__OpenUrl__ #define__OpenUrl__OpenUrl__ #include"cocos2d.h" USING_NS_CC; usingnamespacestd; classOpenUrl { public: staticOpenUrl*sharedOpenUrl(); voIDopenUrlFunc(); }; #endif/*defined(__OpenUrl__OpenUrl__)*/


OpenUrl.mm [cpp] view plain copy // //OpenUrl.cpp //OpenUrl // //CreatedbyXiangZion14-6-18. // // #include"OpenUrl.h" staticOpenUrl*sharedStatic; OpenUrl*OpenUrl::sharedOpenUrl() { if(!sharedStatic){ sharedStatic=newOpenUrl(); } returnsharedStatic; } voIDOpenUrl::openUrlFunc() { //大家可能会问:为什么要创建.mm文件,原因就在这,只有在.mm文件中下面两句代码才不会报错。。 Nsstring*str=[NsstringstringWithFormat:@"http://www.baIDu.com"]; [[UIApplicationsharedApplication]openURL:[NSURLURLWithString:str]]; }

接下来我们回到主类HelloWorldScene.cpp,利用预编译,调用openUrlFunc()方法完成iOS端的url访问。再通过Jni调用AndroID的Java层代码(cocos2dx里访问调用AndroID函数)完成AndroID端在cpp的部署

HelloWorldScene.cpp

[cpp] view plain copy #include"HelloWorldScene.h" #include"SimpleAudioEngine.h" #include"OpenUrl.h" //导入AndroID平台下所用的头文件 #ifCC_TARGET_PLATFORM==CC_PLATFORM_ANDROID #include<jni.h> #include"platform/androID/jni/JniHelper.h" #include<androID/log.h> #endif usingnamespacecocos2d; usingnamespaceCocosDenshion; CCScene*HelloWorld::scene() { CCScene*scene=CCScene::create(); HelloWorld*layer=HelloWorld::create(); scene->addChild(layer); returnscene; } boolHelloWorld::init() { if(!cclayer::init()) { returnfalse; } CCSizesize=CCDirector::sharedDirector()->getWinSize(); //增加一按钮 CcmenuItemLabel*baIDulabel=CcmenuItemLabel::create(cclabelTTF::create("打开百度","Arial",40),this,menu_selector(HelloWorld::menuCallFunc)); baIDulabel->setposition(ccp(size.wIDth/2,size.height/2)); Ccmenu*menu=Ccmenu::create(baIDulabel,NulL); menu->setposition(CCPointZero); this->addChild(menu); returntrue; } voIDHelloWorld::menuCallFunc(CCObject*pSender) { //利用预编译区分不同平台 #ifCC_TARGET_PLATFORM==CC_PLATFORM_IOS//ios平台下 //调用OpenUrl类中的方法,完成ios访问url OpenUrl::sharedOpenUrl()->openUrlFunc(); #elifCC_TARGET_PLATFORM==CC_PLATFORM_ANDROID//AndroID平台下,别忘导入AndroID平台下所用的头文件。 //定义Jni函数信息结构体 JniMethodInfominfo; //JniHelper类主要用于Jni与Java层之间的相互访问的作用。getStaticmethodInfo函数返回一个bool值表示是否找到此函数 boolisHave=JniHelper::getStaticmethodInfo(minfo,"org/cocos2dx/lib/Cocos2dxActivity","openUrl","()V"); if(isHave){ //调用此函数 minfo.env->CallStaticVoIDMethod(minfo.classID,minfo.methodID); } #endif }

AndroID端:

把cocos2d-x项目编译到AndroID的,并用Eclipse打开AndroID项目。

首先,在AndroIDManifest.xml添加上网权限。

[java] view plain copy <uses-permissionandroID:name="androID.permission.INTERNET"/> 然后,在Cocos2dxActivity.java中声明openUrl() 方法。

Cocos2d-x项目编译到Android教程:http://www.jb51.cc/article/p-unwlqvwn-nk.html

[cpp] view plain copy publicstaticvoIDopenUrl() { Uriuri=Uri.parse("http://www.baIDu.com"); Intentit=newIntent(Intent.ACTION_VIEW,uri); sContext.startActivity(it); }
到此结束。


截屏功能:

[cpp] view plain copy //截屏 CCRenderTexture*texture=CCRenderTexture::create((int)size.wIDth,(int)size.height); texture->begin(); CCDirector::sharedDirector()->getRunningScene()->visit(); texture->end(); texture->savetofile("score.png",kCCImageFormatPNG);//图片命名为score.png并作保存 CC_SAFE_DELETE(texture); stringimagePath=CCfileUtils::sharedfileUtils()->getWritablePath()+"score.png";//索引到图片录径 总结

以上是内存溢出为你收集整理的cocos2d-x 打开url 和 截屏功能全部内容,希望文章能够帮你解决cocos2d-x 打开url 和 截屏功能所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1071362.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-26
下一篇 2022-05-26

发表评论

登录后才能评论

评论列表(0条)

保存