トップ
新規
一覧
単語検索
最終更新
ヘルプ
ログイン
アールメカブ
iPhone_TouchEvent
をテンプレートにして作成
開始行:
[[Programming]]
#contents
* 簡単なプログラム [#g4430f28]
背景に画像を設定し、その前面にクラゲを泳がせる
-View-Basedクラスを作成し ViewController.hファイルに以下...
UIImageView *contentView;//背景画像
UIImageView *fishes;//クラゲ画像
BOOL inSide;//クラゲ画像がタッチされたかどうかのフラグ
CGPoint start;//クラゲ画像の移動開始座標
-またタッチメソッドを追加
-(void) touchesBegan:(NSSet*) touches withEvent:(UIEvent...
-(void) touchesMoved:(NSSet*) touches withEvent:(UIEvent...
-(void) touchesEnded:(NSSet*) touches withEvent:(UIEvent...
-次に ControllerView.mを編集
ファイルの最初の方に以下を追加.
#import <QuartzCore/QuartzCore.h>
loadView関数を追加
- (void)loadView
{
//メインの画面矩形サイズを取得
CGRect appRect = [[UIScreen mainScreen] applicationFrame];
// その矩形サイズのビューを作成し
contentView = [[ UIView alloc] initWithFrame:appRect];
contentView.backgroundColor = [UIColor whiteColor];
// ControllerViewクラスのビューに代入
self.view = contentView;
[contentView release];
// 座標系を作成したビューにあわせる
appRect.origin = CGPointMake(0.0f,0.0f);
// 背景画像 kaitei.png の準備
UIImage* backgroundImage = [UIImage
imageNamed:@"kaitei.png"];
// 画面Viewに背景画像をセット。なおこのファイル冒頭で
//#import <QuartzCore/QuartzCore.h> をincludeしておく
[contentView layer].contents = (id)backgroundImage.CGIma...
[backgroundImage release];
// 重ね合わせるクラゲ画像の準備.60ピクセル矩形の画像を...
fishes = [[UIImageView alloc]
initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 60....
//[fishes setUserInteractionEnabled:YES];
NSMutableArray *bflies = [[NSMutableArray alloc] init];
for (int i = 1; i <= 9; i++) {
NSString *cname = [NSString
stringWithFormat:@"kurage%d.png", i];
UIImage *img = [UIImage imageNamed:cname];
if (img) [bflies addObject:img];
[cname release];
}
// クラゲ画像をアニメーションさせる
[fishes setAnimationImages:bflies];
fishes.animationDuration = 2.0f;//0.75f
[fishes startAnimating];
[contentView addSubview:fishes];
[fishes release];
}
-これで描画される。次に画像をドラッグして移動させる処理
//
-(void) touchesBegan:(NSSet*) touches withEvent:(UIEvent...
{
// タップ開始位置の取得
CGPoint pt2 = [[touches anyObject]
locationInView:contentView];
// その座標がクラゲ画像の矩形内か調べる
BOOL Y = CGRectContainsPoint(fishes.frame, pt2);
if(Y == YES){
inSide = YES;//フラグをセット
start = pt;
}else{
inSide = NO;
}
}
//
-(void) touchesMoved:(NSSet*) touches withEvent:(UIEvent...
{
if(inSide){//フラグがセットされているなら移動させる
UITouch * touch = [touches anyObject];
CGPoint pt = [touch locationInView:contentView];
// そしてクラゲ画像を移動する
CGRect frame = [fishes frame];
frame.origin.x = pt.x - start.x;
frame.origin.y = pt.y - start.y;
[fishes setFrame:frame];
}
}
////////
-(void) touchesEnded: (NSSet*)touches withEvent:(UIEvent...
{
inSide = NO;//フラグをアンセット
}
* 参考ページ [#cc3bb392]
[[ここ:http://ameblo.jp/xcc/day-20090326.html]]がとても参...
- (CGPoint)locationInView:(UIView *)view
locationInView:hogeは
指定したビュー hoge の座標系でレシーバ(タッチ)の現在の座...
これは hoge の現在の位置を,親ビューの座標系で返せ,とい...
以下のループ構造でよく使われる.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
{
for (UITouch *touch in touches) {
clickPos = [touch locationInView:self];
break;
}
}
ビューの座標系については[[ここ:http://son-son.sakura.ne.j...
また以下は[[ここ:http://d.hatena.ne.jp/Chabashira/2008032...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
{
// We only support single touches, so get the touch f...
UITouch *touch = [[event allTouches] anyObject];
// Only move the placard view if the touch was in the...
if ([touch view] != placardView)
{
// In case of a double tap outside the placard vi...
if ([touch tapCount] == 2)
{
[placardView setupNextDisplayString];
}
return;
}
// Animate the first touch
CGPoint touchPoint = [self convertPoint:[touch locati...
[self animateFirstTouchAtPoint:touchPoint];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent...
{
UITouch *touch = [[event allTouches] anyObject];
// If the touch was in the placardView, move the plac...
if ([touch view] == placardView)
{
CGPoint location = [touch locationInView:self];
location = [self convertPoint:location fromView:p...
placardView.center = location;
return;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent...
{
UITouch *touch = [[event allTouches] anyObject];
// If the touch was in the placardView, bounce it bac...
if ([touch view] == placardView)
{
// Disable user interaction so subsequent touches...
self.userInteractionEnabled = NO;
[self animatePlacardViewToCenter];
return;
}
}
終了行:
[[Programming]]
#contents
* 簡単なプログラム [#g4430f28]
背景に画像を設定し、その前面にクラゲを泳がせる
-View-Basedクラスを作成し ViewController.hファイルに以下...
UIImageView *contentView;//背景画像
UIImageView *fishes;//クラゲ画像
BOOL inSide;//クラゲ画像がタッチされたかどうかのフラグ
CGPoint start;//クラゲ画像の移動開始座標
-またタッチメソッドを追加
-(void) touchesBegan:(NSSet*) touches withEvent:(UIEvent...
-(void) touchesMoved:(NSSet*) touches withEvent:(UIEvent...
-(void) touchesEnded:(NSSet*) touches withEvent:(UIEvent...
-次に ControllerView.mを編集
ファイルの最初の方に以下を追加.
#import <QuartzCore/QuartzCore.h>
loadView関数を追加
- (void)loadView
{
//メインの画面矩形サイズを取得
CGRect appRect = [[UIScreen mainScreen] applicationFrame];
// その矩形サイズのビューを作成し
contentView = [[ UIView alloc] initWithFrame:appRect];
contentView.backgroundColor = [UIColor whiteColor];
// ControllerViewクラスのビューに代入
self.view = contentView;
[contentView release];
// 座標系を作成したビューにあわせる
appRect.origin = CGPointMake(0.0f,0.0f);
// 背景画像 kaitei.png の準備
UIImage* backgroundImage = [UIImage
imageNamed:@"kaitei.png"];
// 画面Viewに背景画像をセット。なおこのファイル冒頭で
//#import <QuartzCore/QuartzCore.h> をincludeしておく
[contentView layer].contents = (id)backgroundImage.CGIma...
[backgroundImage release];
// 重ね合わせるクラゲ画像の準備.60ピクセル矩形の画像を...
fishes = [[UIImageView alloc]
initWithFrame:CGRectMake(0.0f, 0.0f, 60.0f, 60....
//[fishes setUserInteractionEnabled:YES];
NSMutableArray *bflies = [[NSMutableArray alloc] init];
for (int i = 1; i <= 9; i++) {
NSString *cname = [NSString
stringWithFormat:@"kurage%d.png", i];
UIImage *img = [UIImage imageNamed:cname];
if (img) [bflies addObject:img];
[cname release];
}
// クラゲ画像をアニメーションさせる
[fishes setAnimationImages:bflies];
fishes.animationDuration = 2.0f;//0.75f
[fishes startAnimating];
[contentView addSubview:fishes];
[fishes release];
}
-これで描画される。次に画像をドラッグして移動させる処理
//
-(void) touchesBegan:(NSSet*) touches withEvent:(UIEvent...
{
// タップ開始位置の取得
CGPoint pt2 = [[touches anyObject]
locationInView:contentView];
// その座標がクラゲ画像の矩形内か調べる
BOOL Y = CGRectContainsPoint(fishes.frame, pt2);
if(Y == YES){
inSide = YES;//フラグをセット
start = pt;
}else{
inSide = NO;
}
}
//
-(void) touchesMoved:(NSSet*) touches withEvent:(UIEvent...
{
if(inSide){//フラグがセットされているなら移動させる
UITouch * touch = [touches anyObject];
CGPoint pt = [touch locationInView:contentView];
// そしてクラゲ画像を移動する
CGRect frame = [fishes frame];
frame.origin.x = pt.x - start.x;
frame.origin.y = pt.y - start.y;
[fishes setFrame:frame];
}
}
////////
-(void) touchesEnded: (NSSet*)touches withEvent:(UIEvent...
{
inSide = NO;//フラグをアンセット
}
* 参考ページ [#cc3bb392]
[[ここ:http://ameblo.jp/xcc/day-20090326.html]]がとても参...
- (CGPoint)locationInView:(UIView *)view
locationInView:hogeは
指定したビュー hoge の座標系でレシーバ(タッチ)の現在の座...
これは hoge の現在の位置を,親ビューの座標系で返せ,とい...
以下のループ構造でよく使われる.
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
{
for (UITouch *touch in touches) {
clickPos = [touch locationInView:self];
break;
}
}
ビューの座標系については[[ここ:http://son-son.sakura.ne.j...
また以下は[[ここ:http://d.hatena.ne.jp/Chabashira/2008032...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent...
- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent...
{
// We only support single touches, so get the touch f...
UITouch *touch = [[event allTouches] anyObject];
// Only move the placard view if the touch was in the...
if ([touch view] != placardView)
{
// In case of a double tap outside the placard vi...
if ([touch tapCount] == 2)
{
[placardView setupNextDisplayString];
}
return;
}
// Animate the first touch
CGPoint touchPoint = [self convertPoint:[touch locati...
[self animateFirstTouchAtPoint:touchPoint];
}
- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent...
{
UITouch *touch = [[event allTouches] anyObject];
// If the touch was in the placardView, move the plac...
if ([touch view] == placardView)
{
CGPoint location = [touch locationInView:self];
location = [self convertPoint:location fromView:p...
placardView.center = location;
return;
}
}
- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent...
{
UITouch *touch = [[event allTouches] anyObject];
// If the touch was in the placardView, bounce it bac...
if ([touch view] == placardView)
{
// Disable user interaction so subsequent touches...
self.userInteractionEnabled = NO;
[self animatePlacardViewToCenter];
return;
}
}
ページ名: