Archive for the ‘iPhoneアプリ開発’ Category

アルゴリズム:重複しないランダムな数値を配列で取得

木曜日, 11月 4th, 2010

ちょいちょい使うんでメモ。
# 今回はこちらから拝借
http://por.s54.xrea.com/lab/230/

これはActionScript用みたいですが、アルゴリズム的にはなんでも使えるよね。
早いとか遅いとかは分からないですけど…

var rndList:Array = [];
rndList = randomList(10);

// 整数を重複なしにランダム取得
function randomList(max:Number):Array
{
	var inList:Array = [];
	var outList:Array = [];
	var j = 0;
	var rndValue;
	
	for (var i=0; i<max; i++)
		inList[i] = i;
	
	var inListL = inList.length;
	while (inListL)
	{
		rndValue = Math.floor( Math.random() * (max-j) );
		outList[j] = inList.splice( rndValue, 1 );
		j++;
		inListL = inList.length;
	}
	return outList;
};

 
 
2010.12.01 追記:
Objective-C の場合。
intのNSArrayが作れなくて焦った。
NSIntegerはオブジェクトじゃないですよ、NSNumberじゃないとダメですよ。

NSMutableArray *rndList	= [[NSMutableArray alloc] initWithArray:[self randomList:10]];

- (NSMutableArray*)randomList:(int)max
{
	NSMutableArray *inList	= [[NSMutableArray alloc] init];
	NSMutableArray *outList	= [[NSMutableArray alloc] init];
	int j = 0;
	int randomNumber = 0;
	
	for (int i=0; i<max; i++)
	{
		NSNumber *nsNum = [NSNumber numberWithInt:i];
		[inList insertObject:nsNum atIndex:i];
	}
	
	// 現在の日時を用いて乱数を初期化する
	srand([[NSDate date] timeIntervalSinceReferenceDate]);
	
	int inListL = [inList count];
	while (inListL)
	{
		randomNumber = rand() % (max-j);
		
		NSNumber *nm_ = [inList objectAtIndex:randomNumber];
		[outList addObject:nm_];
		[inList removeObjectAtIndex:randomNumber];
		j++;
		inListL = [inList count];
		NSLog(@"%d:%d",inListL,[nm_ intValue]);
	}
	return outList;
}

 
 

【iPhone】iOSでのMPMoviePlayerControllerの扱い

月曜日, 8月 30th, 2010

OSアップデートした3GS使ってます。
 
で、ムービーが再生したかったんですが、
Appleのサンプルでも動かないという非常に困る状況になりました。
 
どうやらちょっとだけ仕様が変わったようで
例えば、

MPMoviePlayerController *player;
[self.view addSubView:player.view];

というようにMPMoviePlayerControllerのviewを
メインのviewなどに追加しないと表示されなくなったようです。
これの仕様はOS3.2(iPad)からのようです。
 
とりあえず参考までに動いたサンプル置いときます。
 
MoveMovieSample.zip
 

【iPhoneSDK】コマアニメーションクラス

金曜日, 2月 12th, 2010

 
プログラムでいうアニメって、数字で変換するものばっかりで
パラパラ漫画みたいなコマアニメのことは考えられていません(たぶん)。
 
でも、動きといえば手書きのイラストからつくりますよね!
 
 
そんなひとのためにサンプルを公開しておきます。
 
 
多少解説すると、
コマ数分だけ横に並べた画像を読み込み、
更新ごとにひとコマ分ずつずらしています。
 
この方法だと、ずらす数値をちょっと変えると
横に流れてしまうアニメになったりします。
 
 
 

こんなことしてないで、ジャスティスファイトを形にしろっていうんですよね。
まったく。
 
 
※ファイルUPしますが、動作保証とかなにか起きても自己責任でお願いしますー。なにも起きないとは思いますけど…
【iPhone SDK】コマアニメーションクラスサンプル
 
 

※ 10.02/18追記
実はUIImageViewに、animationImagesという配列型のプロパティがあって、
各コマ画像を配列に入れてstartAnimatingメソッドを呼ぶとコマアニメしてくれる。
さらに iPhoneOS3.0からは
highlightedAnimationImagesというプロパティも追加されていて、
highlightedプロパティを YES にするとこちらのアニメを再生してくれる。