2010-12-27 9 views
3

私はCOCOS2Dを使ってiPhone用のゲームを開発しています。COCOS2Dで触れた線を描く

その点で、ユーザーがポイントから別のポイントにドラッグしたときに線を描く必要があります。限り私の知識が私はポイントを得ることができるからTouches Moved methodからこれを行う必要があります。

しかし、私はこれを行う方法がわかりません。誰も私にこれを助けることができますか?

+0

同じ質問を何度も繰り返さないでください。元の質問に回答するのを待ってください。ありがとう。 – ismail

答えて

6

Kia ora。退屈は私にこのトピックに関する答えを提供するように強要します。

層部分(すなわち@interface GetMyTouches:CCLayer):

-(void) ccTouchesMoved:(NSSet *)inappropriateTouches withEvent:(UIEvent *)event 
{ 
    UITouch *touchMyMinge = [inappropriateTouches anyObject]; 

    CGPoint currentTouchArea = [touchMyMinge locationInView:[touchMyminge view] ]; 
    CGPoint lastTouchArea = [touchMyMinge previousLocationInView:[touchMyMinge view]]; 

    // flip belly up. no one likes being entered from behind. 
    currentTouchArea = [[CCDirector sharedDirector] convertToGL:currentTouchArea]; 
    lastTouchArea = [[CCDirector sharedDirector] convertToGL:lastTouchArea]; 

    // throw to console my inappropriate touches 
    NSLog(@"current x=%2f,y=%2f",currentTouchArea.x, currentTouchArea.y); 
    NSLog(@"last x=%2f,y=%2f",lastTouchArea.x, lastTouchArea.y); 

    // add my touches to the naughty touch array 
    naughtyTouchArray addObject:NSStringFromCGPoint(currentTouchArea)]; 
    naughtyTouchArray addObject:NSStringFromCGPoint(lastTouchArea)]; 
} 

ノード部分(すなわち@interface DrawMyTouch:CCNode):

@implementation DrawMyTouch 

-(id) init 
{ 
    if((self=[super init])) 
    { } 
    return self; 
} 

-(void)draw 
{ 
    glEnable(GL_LINE_SMOOTH); 

    for(int i = 0; i < [naughtyTouchArray count]; i+=2) 
    { 
     start = CGPointFromString([naughtyTouchArray objectAtIndex:i]); 
     end = CGPointFromString([naughtyTouchArray objectAtIndex:i+1]); 

     ccDrawLine(start, end); 
    } 
} 

@end 

層部分II(すなわち@interface GetMyTouches:CCLayer ):

-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    DrawMyTouch *line = [DrawMyTouch node]; 
    [self addChild: line]; 
} 

タッチが簡単です。触っている間に何をしているかを知ることは、ロケット科学ではありません。

最後に、私が投稿したことを理解していない場合は、ベーキングを取ります。世界はより多くのチョコレートケーキ生産者を必要とする。

明確化:

  1. 誰がフォームカット「Nを貼り付ける〜あなたはユーモアを見ることができない場合は
  2. を愛撫することなく動作するように意図していませんでした。このコードを学習していない、あなたがにいます間違った職業

私は良いチョコレートケーキが大好きです。世界は本当に素晴らしいパンを必要とします。それは侮辱ではなく、励ましです。

「生きる価値のある人生を生む知識で満たされたサークルを見つけるために」〜Aenesidemus。

+0

ありがとうMiraka。私はこれをUIViewのaddLineToPointメソッドを使って行っています。 addLineToPointメソッドを使用して描画された線を削除する方法を知っていますか? – Shakti

+3

不適切なタッチ... –

+19

-1、あなたのコードは私にとっては機能しませんでした(おそらく古くなっています)。私はあなたが素晴らしいパン屋であると確信しています... –

6
- (void)ccTouchesMoved:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
     UITouch *theTouch = [touches anyObject]; 
    CGPoint touchLocation = [theTouch locationInView:[theTouch view] ]; 
    cgfloat x = touchLocation.x; 
    cgfloat y= touchLocation.y; 
printf("move x=%f,y=%f",x,y); 
} 

上記のコードをお試しください。 iphoneにtouches movedと入力すると座標点が表示されます。

は、線を引くようなものを使用するには、次の

-void draw 
{ 
here is the code for line draw. 
} 

アップデートアップデート方法でこの機能を。

+1

こんにちはあなたの返信はありがとう。しかし、cocoas2dの問題点は、 - (void)drawメソッドの中でccDrawLine()メソッドを呼び出す必要があることと、CCNodes子クラスで定義する必要があるこのdraw()メソッドを呼び出す必要があることです。あなたのCCLayerクラス..このように... [self addChild:[drawLine node]]; – Shakti

+0

素晴らしいこれは私のために素晴らしく働いた –