cocos2d-x不支持跨平台打开一个url, 所以我们分别要在 iOS 和 Android 上单写。
iOS端:
1.新建一个cocos2dx项目,在项目中创建一个.mm的文件,命名为 OpenUrl。如下图:
OpenUrl.h
- #ifndef__OpenUrl__OpenUrl__
- #define__OpenUrl__OpenUrl__
- #include"cocos2d.h"
- USING_NS_CC;
- usingnamespacestd;
- classOpenUrl
- {
- public:
- staticOpenUrl*sharedOpenUrl();
- voidopenUrlFunc();
- };
- #endif/*defined(__OpenUrl__OpenUrl__)*/
OpenUrl.mm
- #include"OpenUrl.h"
- staticOpenUrl*sharedStatic;
- OpenUrl*OpenUrl::sharedOpenUrl()
- {
- if(!sharedStatic){
- sharedStatic=newOpenUrl();
- }
- returnsharedStatic;
- }
- voidOpenUrl::openUrlFunc()
- {
- 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
- #include"HelloWorldScene.h"
- #include"SimpleAudioEngine.h"
- #include"OpenUrl.h"
- #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::sharedOpenUrl()->openUrlFunc();
- #elifCC_TARGET_PLATFORM==CC_PLATFORM_ANDROID//Android平台下,别忘导入Android平台下所用的头文件。
- JniMethodInfominfo;
- 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添加上网权限。
- <uses-permissionandroid:name="android.permission.INTERNET"/>
然后,在Cocos2dxActivity.java中声明openUrl() 方法。
Cocos2d-x项目编译到Android教程:http://www.52php.cn/article/p-unwlqvwn-nk.html
- publicstaticvoidopenUrl()
- {
- Uriuri=Uri.parse("http://www.baidu.com");
- Intentit=newIntent(Intent.ACTION_VIEW,uri);
- sContext.startActivity(it);
- }
到此结束。
截屏功能:
- CCRenderTexture*texture=CCRenderTexture::create((int)size.width,(int)size.height);
- texture->begin();
- CCDirector::sharedDirector()->getRunningScene()->visit();
- texture->end();
- texture->saveToFile("score.png",kCCImageFormatPNG);
- CC_SAFE_DELETE(texture);
- stringimagePath=CCFileUtils::sharedFileUtils()->getWritablePath()+"score.png";
(编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|