2012-01-22 2 views
0

を移動しません。すなわち、1つの位置でユーザがタッチすると、ジョイスティックはそこに現れ、使用する準備ができて、指が離されると取り外す。(cocos2d卑劣な入力)、スプライトは私がジョイスティックがあるべき場所、ユーザーが選択できるようにしたい

-(void) sneakyUpdate { 

    if ([self getChildByTag:kTagJoyStick] != nil) { 
     if (joystick.velocity.x < 0) { 
      [self controlLeft]; 
     } 
     else if (joystick.velocity.x > 0) { 
      [self controlRight]; 
     } 
     else { 
      [self controlStop]; 
     } 

    } 
    else { 
     [self controlStop]; 
    } 

} 

が、結果は、ジョイスティックが表示され、自動削除されます:

-(void) ccTouchesBegan:(NSSet *)touches withEvent:(UIEvent *)event { 

    if ([self getChildByTag:kTagJoyStick] == nil) { 
     [self addJoystickWithPosition:[Helper locationFromTouches:touches]]; 
    } 

} 


-(void) ccTouchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 

    if ([self getChildByTag:kTagJoyStick] != nil) { 
     [self removeChildByTag:kTagJoyStick cleanup:YES]; 
    } 

} 
-(void) ccTouchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event { 
    [self ccTouchesEnded:touches withEvent:event]; 
} 

(ccTouchesMoved方法で何もしない)

ジョイスティックの更新方法があります。私のスプライトは動きません。 (私はsneakyUpdateメソッドが呼び出さなかった、ブレークポイントを設定したがjoystick.velocityは常に0です(とthumbSpriteが私たちの指に従わなかった 私を助けてください

更新:。。。 、それが判明します私は2本の指を使う必要があります(1度はタッチで1回、ジョイスティックを表示させ、指を離してから別の指でジョイスティックを操作してください)

+0

あなたは運が良ければ、これが動作するようになってありましたか? – Kyle

+0

@Zenox残念ながら、私はInfinity Fieldで使用されているものが自分でコード化されていると信じています。 – OMGPOP

答えて

0

私は100%確信していません。 sneakyJoystickクラスはキャンセル/エンド/ ccTouchBegan移動/を使用しているため。また、シングルタッチのために存在し、それはあなたが望むものである、代わりにccTouchesBeganをccTouchBeganを使用する必要があります。
を、私はそれが動作願っています!

+0

あなたは目標のタッチデリゲートを使用する必要があるのですか? – OMGPOP

+0

はい、おそらくあなたは、ノーさらに悪い絞っタッチデリゲート – Garoal

+0

を使用する必要があります。今回は2本の指を使うことさえできません。画面に触れるとジョイスティックが現れ、指を動かすと何も変わっていない。 – OMGPOP

0

あなたのジョイスティッククラスに問題があるようです。私が見たすべてのジョイスティックの実装では、ccTouchesBeganメソッドを使用してジョイスティックをアクティブにしてから、ccTouchesMovedメソッドでアクティブにしたことを確認します。私が見ている問題は、タッチがメソッドを開始した後にジョイスティックを作成して追加することです。これは、ジョイスティックが決して「アクティブ化」しないことを意味します。これを迂回する一つの方法は、それを使用するタッチへの参照を渡すことによって、そこからジョイスティックを作成する方法では、ジョイスティックのccTouchesBegan機能のすべてを行うと、「アクティブ」にあります。

+0

どうやって?私は卑劣な入力を使用しています。 – OMGPOP

関連する問題