摘要: -(BOOL)putStringToItunes:(SKPaymentTransaction*)transaction{ NSData * iapData = transaction.transactionReceipt; NSString*encodingStr = [iapData base64EncodedString]; // NSString *URL=@"https://sandbox.itunes.apple.com/verifyReceipt"; NSString *URL=@"https://buy.itunes.apple.com/verify 阅读全文
posted @ 2013-10-10 09:33 haroel 阅读(610) 评论(0) 推荐(0) 编辑
摘要: cocos2dx的计时器很好用,但当app进入后台,其计时器会pause掉,如果想要一个稳恒计时器就得自己去实现完成了,在Cocos2d-x for ios中我们可以利用NSTimer类并结合objc++来实现,非常好用。在Android平台我们就不得不用java类和jni来实现,计时器很多时候是用来刷新UI,所以还得考虑opengl线程调用问题下面我贴了一个用java线程来实现的类,这个是项目正在使用的部分代码。一个是秒计时器,用于倒计时使用;一种是毫秒计时器,取网络数据包时使用package com.iGamer;import org.cocos2dx.lib.Cocos2dxActivi 阅读全文
posted @ 2013-09-12 17:15 haroel 阅读(2301) 评论(0) 推荐(0) 编辑
摘要: 前面博客说到,cocos2d-x c++界面层运行在一个GLThread线程里面,严格的说是运行在Cocos2dxGLSurfaceView(继承自GLSurfaceView)里面。opengl的渲染,刷新都是有这个类来完成。 所以我们不能直接在java方法里调用c++方法来刷新界面,唯一的方法就是绕开javaUI主线程,让GLSurfaceView来做这件工作。ok,前面说到Cocos2dxGLSurfaceView 类,它是cocos2d-x引擎的一部分,直接修改该类太粗暴。所以以下新建一个ClassTimerJavaToC.java 以下只写核心方法import org.cocos2dx 阅读全文
posted @ 2013-09-12 17:07 haroel 阅读(2373) 评论(2) 推荐(0) 编辑
摘要: ios7后mac地址沦为鸡肋,所以必须得重新想办法获取设备的id信息,apple推荐用UUID,但app重新安装后,UUID需要重设,所以想到把UUID存储到ios系统的keychain中,既然存储在系统内,也就意味着即使app被删除也不会丢失该属性。//ios获取uuid#import "KeychainItemWrapper.h" KeychainItemWrapper *keychainItem = [[KeychainItemWrapperalloc] initWithIdentifier:@"UUID" ... 阅读全文
posted @ 2013-09-12 11:48 haroel 阅读(3069) 评论(0) 推荐(0) 编辑
摘要: 使用IORegistryExplorer(在Developer Tool)可以查看连接上的USB设备的信息。选择IOUSB,可以看到名为连线的安卓设备,比如小米idVendor是0x2717。echo 0x2717>> ~/.android/adb_usb.ini 阅读全文
posted @ 2013-09-11 18:00 haroel 阅读(436) 评论(0) 推荐(0) 编辑
摘要: 2dx android项目需接入第三方sdk完成支付,玩家点击充值界面,通过jnihelper来调用java的方法并弹出android组件界面,之前采用直调的简单方法,顺利的把参数传到java层,但后面的界面处理很容易出现Can't create handler inside thread that has not called Looper.prepare()的bug日志,楼主对java不懂,只得goo和baidu,找不到确切的解决方法,但很多人都提到了一点,Android的UI线程并不安全,它的界面更新操作必须要在Activity主线程执行。虽然不太理解这层意思,但大概猜到是跨线程 阅读全文
posted @ 2013-08-29 13:50 haroel 阅读(682) 评论(0) 推荐(0) 编辑
摘要: 在parallels的选项中,在硬件选项卡的引导标记中添加:kernel.waet.enable=0 ,重新启动win7即可激活。 阅读全文
posted @ 2013-06-17 20:50 haroel 阅读(561) 评论(0) 推荐(0) 编辑
摘要: 一般情况是由于拷贝过程中,framework中的.a库被忽略导致的,可以去Preferences中找到*。a并删除 阅读全文
posted @ 2013-06-05 15:42 haroel 阅读(482) 评论(0) 推荐(0) 编辑
摘要: C++ STL中vector应用#include "iostream"#include "vector"using namespace std;//输出vector中所有类容void display(vector<int> &vc){ for (int i=0;i<vc.size();i++) { cout<<vc[i]<<" "; //cout<<vc.at(i)<<" "; 也可以,二者区别在于 vc.at(i)会检查数组下标是否越界,而 阅读全文
posted @ 2013-05-23 14:19 haroel 阅读(153) 评论(0) 推荐(0) 编辑
摘要: RGB模式是计算机图像学最常用的颜色模式,除此之外,还有其他非常用的颜色模式,以下列举常用颜色模式转RGB的算法1. CMYK是印刷业用的颜色模式,它是一种减色模式,与RGB加色模式完全不同,有时我们需要把CMYK转成RGB模式 转换算法: r = (1-k)-(1-k)*c; g = (1-k)-(1-k)*m; b = (1-k)-(1-k)*y;2. HSB也是一种常见的颜色模式(又称HSV),这个模型中颜色的参数分别是:色调(H),饱和度(S),亮度(B)。色调决定了颜色的名称,如红色色调,S表示色彩的纯度,B表示色彩的明亮度。(以下算法取自Cocos2d-x引擎算法)RGBA... 阅读全文
posted @ 2013-05-08 19:54 haroel 阅读(515) 评论(0) 推荐(0) 编辑
摘要: 字符串的是连接object-c和c++的最重要元素,以下总结常用的转换方法char * /const char *和NSString之间的转化//char * /const char *转NSStringNSString* strPath = [NSStringstringWithUTF8String:filename];//NSString转char * /const char *constchar* filePathChar = [filePathUTF8String];////////////////////////////////////////////////华丽的分割线////// 阅读全文
posted @ 2013-04-26 12:10 haroel 阅读(301) 评论(0) 推荐(0) 编辑
摘要: 1. FILE这个结构包含了文件操作的基本属性,对文件的操作都要通过这个结构的指针来进行,此种文件操作常用的函数见下表 函数 功能fopen() 打开流fclose() 关闭流fputc() 写一个字符到流中fgetc() 从流中读一个字符fseek() 在流中定位到指定的字符fputs() 写字符串到流fgets() 从流中读一行或指定个字符fprintf() 按格式输出到流fscanf() 从流中按格式读取feof() 到达文件尾时返回真值ferror() 发生错误时返回其值rewind() 复位文件定位器到文件开始处remove() 删除文件fread() 从流中读指定个数的字符fwri 阅读全文
posted @ 2013-04-24 13:35 haroel 阅读(229) 评论(0) 推荐(0) 编辑
摘要: 1.//顺时针旋转180度 splashView.transform=CGAffineTransformMakeRotation(180.0 * M_PI/180);2.注册计时器 timer = [NSTimerscheduledTimerWithTimeInterval:1.3f target:self selector:@selector(timeOutHandler) userInfo:nil repeats:YES];... 阅读全文
posted @ 2013-04-23 15:29 haroel 阅读(151) 评论(0) 推荐(0) 编辑
摘要: 项目中我们用CCHttpClient来下载资源文件,但网络不稳定的时候,下载很慢,因此新需求产生:要求下载时实时显示当前下载速度。 cocos2d-x的CCHttpClient并没有提供这样的功能,ASIHTTPRequest提供了这样的功能(实际上,它拥有更多强大的功能,诸如断点续传等),ASIHTTPRequest是一个Objc类库,这意味着做跨平台移植时,ASIHTTPRequest完全无用了,所以,我想到的就是修改2dx引擎相关部分的代码。 分析得知,如果能实时获得一个文件的已下载字节数,我们就能通过两次下载字节数的差值来计算出当前下载速度。HttpClient.cpp文件 ... 阅读全文
posted @ 2013-04-22 17:17 haroel 阅读(1013) 评论(0) 推荐(0) 编辑
摘要: 如何制作 iTunesArtwork?首先有一个 512*512的png格式icon,改名成为iTunesArtwork,然后右键,选择显示简介,如下图done! 阅读全文
posted @ 2013-04-18 15:52 haroel 阅读(870) 评论(0) 推荐(0) 编辑
摘要: 封装一个CCNode,重写draw函数,使用opengl函数绘制直线,done!Line *Line::create(float h,float w,const ccColor4B &colorValue){ Line * result = new Line(); if (result) { result->initLine(h,w, colorValue); result->autorelease(); return result; } CC_SAFE_DELETE(result); return NULL;}vo... 阅读全文
posted @ 2013-04-15 14:52 haroel 阅读(389) 评论(0) 推荐(0) 编辑
摘要: 要用到objc的单例模式,自己写了一个,发现出现内存泄漏,网上找了国外博文的方法,简单实用,于是记录下来头文件@interface ModelLocator : NSObject{ }+(id)sharedModelLocator;mm文件@implementation ModelLocatorstatic ModelLocator * _sharedModel = nil;+ (void)initialize{ if (self == [ModelLocator class]) { _sharedModel = [ [self alloc] init]; ... 阅读全文
posted @ 2013-04-12 10:52 haroel 阅读(151) 评论(0) 推荐(0) 编辑
摘要: ios appicon默认会有一个半弧形白色遮罩,不太美观去掉方法:在info.plist中加上一个属性字段现在效果 ,done! 阅读全文
posted @ 2013-04-11 11:55 haroel 阅读(485) 评论(0) 推荐(0) 编辑
摘要: ios支持unicode emoji字符集(转自http://blog.csdn.net/f520131480315/article/details/6560629)/ue415/ue056/ue057/ue414/ue405/ue106/ue418/ue417/ue40d/ue40a/ue404/ue105/ue409/ue40e/ue402/ue108/ue403/ue058/ue407/ue401/ue40f/ue40b/ue406/ue413/ue411/ue412/ue410/ue107/ue059/ue416/ue408/ue40c/ue11a/ue10c/ue32c/ue32a/ 阅读全文
posted @ 2013-04-10 11:20 haroel 阅读(723) 评论(0) 推荐(0) 编辑
摘要: 不得不说,CCLabelTTF是一个很鸡肋的组件,在2dx for ios库里面,它的底层使用了UIKit包来实现文本显示,但其显示特性较弱,几乎不可扩展。比如实现文字阴影,描边还有另一个更2的问题,当我们采用2dx的多分辨解决方案时,如CCDirector::sharedDirector()->setContentScaleFactor(2.0); 这时的所有的文字都模糊不清,惨不忍睹。很多人此时会考虑抛弃ios默认字体,该自定义字体库,但几千个字符(包括诸如日文,韩文等)全部整合起来还是很麻烦的 首先,我们追根溯源,查看2dx源代码,发现CCLabelTTF底层是由CCImage来渲 阅读全文
posted @ 2013-04-09 15:12 haroel 阅读(2278) 评论(0) 推荐(0) 编辑
摘要: CCEditBox是2dx提供的一个基于设备系统的本地输入组件,功能强大,但在使用中发现一个问题,如果把CCEditBox放在一个ccnode的容器中,设置ccnode的坐标后发现,输入框背景(9宫格背景)跟实际可输入区域存在偏差,修复方法如下PS:使用时,先addChild,然后setPosition 阅读全文
posted @ 2013-04-09 14:20 haroel 阅读(305) 评论(0) 推荐(0) 编辑
摘要: 移动设备内存较小,开发期间,很容易导致设备出现内存警告,这个时候打印出内存信息可以帮助我们了解内存情况1,可用内存float AppDelegate::availableMemory(){ mach_msg_type_number_t infoCount = HOST_VM_INFO_COUNT; vm_statistics_data_t vmStats; kern_return_t kernReturn = host_statistics(mach_host_self(), HOST_VM_INFO, (host_info_t)&vmStats, ... 阅读全文
posted @ 2013-04-09 14:04 haroel 阅读(253) 评论(0) 推荐(0) 编辑
摘要: cocos2d-x 为我们提供许多常见Action,如 CCMove,CCFadeIn..., 这些action可以满足我们常见的一些需求,当然,我们也能自已定义Action来满足更多效果,以下提供两个例子1.自定义一个EclipseAction,使目标做椭圆形运动#include <iostream>#include "cocos2d.h"USING_NS_CC;//所有以时间来控制运动的action都需要继承CCActionIntervalclass EclipseAction : public CCActionInterval{ public: Eclip 阅读全文
posted @ 2013-04-09 13:58 haroel 阅读(650) 评论(0) 推荐(1) 编辑
摘要: 需要在App目录Library/Caches 下创建新目录,创建一个“Map” 目录 NSFileManager *manager = [NSFileManagerdefaultManager]; std::string cacheDirectory = CCFileUtils::sharedFileUtils()->getWriteablePath(); NSString * cachePath = [NSString stringWithCString:cacheDirectory.c_str() encoding:NSUTF8StringEncoding]; NSString * 阅读全文
posted @ 2013-04-09 13:38 haroel 阅读(198) 评论(0) 推荐(0) 编辑
摘要: 获取IOS设备型号方法 引入头文件#include #include #include "stdlib.h" size_t size; sysctlbyname("hw.machine", NULL, &size, NULL, 0); char* machine = (char*)malloc(size); sysctlbyname("hw.machine", machine, &size, NULL, 0); NSString *platform = [NSString stringWithCString:machi 阅读全文
posted @ 2013-04-09 13:34 haroel 阅读(254) 评论(0) 推荐(0) 编辑