裡面很多不同種類的,有興趣可以去研究看看
2012年6月27日 星期三
2011年10月4日 星期二
開發憑證 (Development Certificates)與發佈憑證 (Distribution Certificates)的製作
資料來源
發佈憑證 (Distribution Certificates) 就跟 開發憑證製作方法一樣
之後在Xcode中選 Product -> Archive
即可產生.xcarchive的包裝檔.
可使用Xcode 4 之後的 Origanizer工具 進行submit 或 share (Ad Hoc)
發佈憑證 (Distribution Certificates) 就跟 開發憑證製作方法一樣
之後在Xcode中選 Product -> Archive
即可產生.xcarchive的包裝檔.
可使用Xcode 4 之後的 Origanizer工具 進行submit 或 share (Ad Hoc)
2011年9月19日 星期一
FMDB 將 SQLite 包裝成類Object-C的物件
資料來源
簡單說就是到
這裡 下載Source Code
然後把src目錄下的都加到專案中..
使用方法就像使用一個Object-C物件那樣去操作DataBase...
另一個FMDB的介紹
再一個
其中有Transaction的建議作法
若要做executeUpdate的動作,前面要加個[_db beginTransaction];,然後再寫executeUpdate動作,最後再[_db commit];會比較好~
簡單說就是到
這裡 下載Source Code
然後把src目錄下的都加到專案中..
使用方法就像使用一個Object-C物件那樣去操作DataBase...
另一個FMDB的介紹
再一個
其中有Transaction的建議作法
若要做executeUpdate的動作,前面要加個[_db beginTransaction];,然後再寫executeUpdate動作,最後再[_db commit];會比較好~
2011年9月8日 星期四
讓函式可以接收不定長度的參數
使用的方式、概念,
都跟 C++ 相同。
利用三個內建函式來取得資料:
1. va_start(<#ap#>, <#param#>)
2. va_arg(<#ap#>, <#type#>)
3. va_end(<#ap#>)
ap: argument pointer ,使用 va_list 宣告的型別
param: 最後一個接收到的指定參數
type: 指定所取得的參數是何種型別
ex:
[declaration]
-(NSMutableArray*) arguCollection:(NSString *) str, ...{
NSMutableArray *ret = [NSMutableArray new];
va_list argList;
NSString *get;
va_start(argList, str);
while ((get=va_arg(argList, NSString*))) {
[ret addObject:get];
}
return ret;
}
進入到函式裡時,
函式所接收到的參數們會收集在一個陣列裡,
以上面的例子來看,
就是長成這樣子 -> [str, var_1, var_2, ..., var_N] 。
一使用 va_list 宣告 argList 時,
就會將 argList 指向這個陣列。
經過 va_start 執行後,
argList 指標就會指到 var_1 的位置,
所以要告訴 va_start 不定參數從哪開始時,
就得利用 str 這個變數來指定。
再用 va_arg 函式後,
即可取得資料了...
[test]
[<#instance#> arguCollection:@"test", @"1", @"2", @"3", nil]
使用時最後面要給 nil ,
原因是為了讓 while 迴圈知道什麼時候該停止。
都跟 C++ 相同。
利用三個內建函式來取得資料:
1. va_start(<#ap#>, <#param#>)
2. va_arg(<#ap#>, <#type#>)
3. va_end(<#ap#>)
ap: argument pointer ,使用 va_list 宣告的型別
param: 最後一個接收到的指定參數
type: 指定所取得的參數是何種型別
ex:
[declaration]
-(NSMutableArray*) arguCollection:(NSString *) str, ...{
NSMutableArray *ret = [NSMutableArray new];
va_list argList;
NSString *get;
va_start(argList, str);
while ((get=va_arg(argList, NSString*))) {
[ret addObject:get];
}
return ret;
}
進入到函式裡時,
函式所接收到的參數們會收集在一個陣列裡,
以上面的例子來看,
就是長成這樣子 -> [str, var_1, var_2, ..., var_N] 。
一使用 va_list 宣告 argList 時,
就會將 argList 指向這個陣列。
經過 va_start 執行後,
argList 指標就會指到 var_1 的位置,
所以要告訴 va_start 不定參數從哪開始時,
就得利用 str 這個變數來指定。
再用 va_arg 函式後,
即可取得資料了...
[test]
[<#instance#> arguCollection:@"test", @"1", @"2", @"3", nil]
使用時最後面要給 nil ,
原因是為了讓 while 迴圈知道什麼時候該停止。
2011年9月5日 星期一
改變UIImage的顏色
資料來源
簡單說就是..底下的函式.
丟一個 UIImage進去,回傳一個填上顏色的UIImage回來
簡單說就是..底下的函式.
丟一個 UIImage進去,回傳一個填上顏色的UIImage回來
- (UIImage*)getRedImage:(UIImage*)img{
UIGraphicsBeginImageContext(img.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [UIColor redColor].CGColor);
CGContextTranslateCTM(context, 0, img.size.height);
CGContextScaleCTM(context, 1.0, -1.0);
CGRect rect = CGRectMake(0, 0, img.size.width, img.size.height);
CGContextDrawImage(context, rect, img.CGImage);
CGContextClipToMask(context, rect, img.CGImage);
CGContextAddRect(context, rect);
CGContextDrawPath(context,kCGPathFill);
UIImage *coloredImg = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return coloredImg;
}
2011年8月30日 星期二
Xcode TableView 設定
資料來源
基本的tableView 資料設定與使用就略過不提.
tableView可以分多項scetion,在各header分類時可以設定header來明顯標示出section的段落.
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
{
//這邊return的就是各section上的header return @"Header";
}
{
//這邊return的就是各section上的header return @"Header";
}
然後如果想在tableView右邊顯示index 可以快速跳越到某section.
加入底下的函式. 並自定各自要顯示的index的title
- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView {
NSArray* sIndex = [[NSArray alloc] initWithObjects:@"0-9", @"A", @"中", @"日", @"法", @"德", nil];
return [sIndex autorelease];
}
NSArray* sIndex = [[NSArray alloc] initWithObjects:@"0-9", @"A", @"中", @"日", @"法", @"德", nil];
return [sIndex autorelease];
}
2011年7月31日 星期日
cocos2d Scene切換特效.
簡單記一下.方便查找..
原本用的是 [[CCDirector sharedDirector] pushScene:[SelectLayer scene]];
把後面的 的 scene替換掉. 改成.
[[CCDirector sharedDirector] pushScene:
[CCTransitionSlideInT transitionWithDuration:1.0f scene:[SelectLayer scene]]];
就可以有換景的特效..
除了 CCTransitionSlideInT
還有其他類似的可以用 都是 CCTransition... 開頭.
另外,如果是用 [[CCDirector sharedDirector] popScene];
無法加上換景的特效.
要加特效的話要在 在 這裡 有人提出一個方法.
1. 修改 CCDirector.h,在 -(void)popScene 下加上
- (void) popSceneWithTransition: (Class)c duration:(ccTime)t;2.修改 CCDirectior.m , 在 -(void)popScene下加上
-(void) popSceneWithTransition: (Class)transitionClass duration:(ccTime)t;
{
NSAssert( runningScene_ != nil, @"A running Scene is needed");
[scenesStack_ removeLastObject];
NSUInteger c = [scenesStack_ count];
if( c == 0 ) {
[self end];
} else {
CCScene* scene = [transitionClass transitionWithDuration:t scene:[scenesStack_ objectAtIndex:c-1]];
[scenesStack_ replaceObjectAtIndex:c-1 withObject:scene];
nextScene_ = scene;
}
}3.用
[[CCDirector sharedDirector] popSceneWithTransition:[CCTransitionSlideInBclass] duration:0.5f];
取代原本的 [[CCDirector sharedDirector] popScene]; 指令即可.
其中的 [CCTransitionSlideInB class] 看需要什麼效果就替換上去.
2011年7月27日 星期三
2011年7月2日 星期六
2011年7月1日 星期五
cocos2d-particle粒子特效
最近在玩cocos2d內建的particle,
cocos2d的專案裡面有particle test範例可以參考,
但是那個參數看的眼花撩亂....
我都是憑感覺去亂調><
後來找到兩個很方便的工具,
可以視覺調整之後輸出參數,
先保留起來....有機會再玩玩它
2011年6月30日 星期四
cocos2d-用ccmenuitem建立button
CCMenuItem *_Btn = [[CCMenuItemImage itemFromNormalImage:@Img_Back //按鈕圖
selectedImage:@Img_BackSelect //click之後的圖
target:self
selector:@selector(Click_Reset:)] retain]; //觸發函數
CCMenu *menu2 = [CCMenu menuWithItems: _Btn, nil]; //建立選單
[self addChild: _Btn z:0];
以上是簡單的按鈕產生方式,
不知有沒有那種按著不放就觸發的方法?
我用愚人法做出來不知道有沒有更簡單的方式,
建立一個schedule跟BOOL開關還有一個rect,
ccTouchesBegan的時候就開啟BOOL,
ccTouchesEnded的時候關閉BOOL,
schedule裡面去判斷BOOL有沒有開啟再去做,
取得UIImage的圖素資料,對每一點做修改
簡單記一下.作法
UIGraphicsBeginImageContext(imgView.frame.size);
CGContextRef context = UIGraphicsGetCurrentContext();
unsigned char* data = CGBitmapContextGetData (cgctx);
//offset locates the pixel in the data from x,y.
//4 for 4 bytes of data per pixel, w is width of one row of data.
int offset = 4*((w*round(point.y))+round(point.x));
2011年6月29日 星期三
iPhone 程式要間隔一段時間執行某個函式的方法
最基本的就是用NSTimer ..
只是這個要建一個 NSTimer 再做一些設定..
感覺有點麻煩..
有看到另一種方法.
[self performSelector:@selector(test:) withObject:nnil afterDelay:1.0];
2011年6月28日 星期二
cocos2D 使CCSprite可以觸發touch事件
參考來源
把TouchSprite 再改一下..讓它可以設定要執行的動作,這樣就跟用CCMenu差不多了
簡單的說就是,新增一個繼承CCSprite的類別,
且加入並實作 <CCTargetedTouchDelegate> 的協定 .
實作類別如下.
把TouchSprite 再改一下..讓它可以設定要執行的動作,這樣就跟用CCMenu差不多了
簡單的說就是,新增一個繼承CCSprite的類別,
且加入並實作 <CCTargetedTouchDelegate> 的協定 .
實作類別如下.
2011年6月27日 星期一
cocos2d-利用NSUserDefaults保存數值
有時候需要在不同的Scene運用某個變數時,
可以利用NSUserDefaults或是NSData保存起來在另外一個Scene運用,
這裡先只講NSUserDefaults的作法(因為我現在只用過這種XD)
//宣告
NSUserDefaults *def = [NSUserDefaults standardUserDefaults];
cocos2D 取得目前執行中的secne或layer
今天因為有需要從某些地方取得目前執行中的layer來做一些事,
所以找了一下作法,並記錄一下免得之後忘了.
發現其中有一個是.
所以找了一下作法,並記錄一下免得之後忘了.
[CCDirector sharedDirector]
的功能..發現其中有一個是.
CCScene *runningSC = [[CCDirector sharedDirector] runningScene];
2011年6月23日 星期四
cocos2D中加入UIView
參考資料
這感覺跟之前的取得RootViewControll很接近..
不過 細部要做的事情.好像還是有一點點不同..
所以就順便記錄一下.之後再依情況使用了.
簡單說
就先建好 UIView 或子類別的元件後.
使用
[[[CCDirector sharedDirector] openGLView] addSubview:obj];
就可以把元件加到rootView上.
這感覺跟之前的取得RootViewControll很接近..
不過 細部要做的事情.好像還是有一點點不同..
所以就順便記錄一下.之後再依情況使用了.
簡單說
就先建好 UIView 或子類別的元件後.
使用
[[[CCDirector sharedDirector] openGLView] addSubview:obj];
就可以把元件加到rootView上.
2011年6月22日 星期三
cocos2D 上的 ScrollView
資料來源
這位作者 givp ,有整理了一個簡單好用的類別.
CCScrollLayer 是一個CCLayer的子類別.
可以將一群CCLayer加入到CCScrollLayer內,
CCLayer 的內容可以附加Image , Label , Menu 等..
然後再將CCScrollLayer加到scene上.
如此便可方便的呈現出ScrollView效果
使用的方法很簡單.
1.將CCScrollLayer類別的所有檔案加到專案中
2.在scene中import CCScrollLayer.h
3.在scene的init時,設定每一個layer , 再將這群layers加到CCScrollLayer中
範例如下:
這位作者 givp ,有整理了一個簡單好用的類別.
CCScrollLayer 是一個CCLayer的子類別.
可以將一群CCLayer加入到CCScrollLayer內,
CCLayer 的內容可以附加Image , Label , Menu 等..
然後再將CCScrollLayer加到scene上.
如此便可方便的呈現出ScrollView效果
使用的方法很簡單.
1.將CCScrollLayer類別的所有檔案加到專案中
2.在scene中import CCScrollLayer.h
3.在scene的init時,設定每一個layer , 再將這群layers加到CCScrollLayer中
範例如下:
2011年6月21日 星期二
cocos2D 存取rootViewController
使用cocos2D 0.99.5 版
要存取RootViewController的方法:
1.
AppDelegate.h 設定
@property (nonatomic, retain) RootViewController *viewController;
AppDelegate.m 設定
@synthesize viewController;
訂閱:
文章 (Atom)