2017-11-07 14 views
2

LeanTweenが提供する機能のうち、 iTeeenのRotateByのような機能はありますか? (RotateBy(GameObject obj、Hashtable hash))LeanTweenでHashTableを使用するには?

私がしたいことは、 です。アニメーションが完了すると、関数は文字列を通して実行されます。

たとえば、カードマッチングゲームでは、 をクリックすると、次のイベントが発生します。

WordReviewManager.csは:

public void onTuchHandler(object obj, EventArgs e) 
{ 
    TouchEventTypes t_evt = e as TouchEventTypes; 
    Debug.Log("GameObject : " + t_evt.go + "/" + "Card : " + t_evt.card); 
    Debug.Log("Card Index : " + t_evt.card_idx + "/" + "Card UniqueIndex : " + t_evt.card_snum); 
    Debug.Log("================================================================================"); 
    WordReviewUtil.testAni(this.gameObject, t_evt.go, t_evt.card, t_evt.delay, t_evt.complete); 
} 

イベントを受信する機能を以下に示します。

WordReviewUtil.cs:

public static Hashtable testAni(GameObject listener, GameObject go, Card card, float delay = 0f, string complete = "testGood") 
    { 
     Debug.Log("hello TEST ANIMATION ~~ "); 
     Hashtable hash = new Hashtable(); 
     GameObject goz = go as GameObject; 
     Debug.Log("goz >>>> " + goz); 

     hash.Add("gameObj", goz); 
     hash.Add("onComplete", complete); 
     return hash; 
    } 

ここでは、私が後で見ることを期待するものです。

WordReviewManager.cs:

public void testGood(Hashtable table) 
    { 
     Debug.Log("hello Moto ~?!"); 
    } 

testGood機能が実行されます。

iTweenには、私が望む機能を私に与える機能があります。

直ちに、RotateBy関数。 しかし、私は現在、iTweenではなくLeanTweenライブラリを使用しています。

また、LeanTweenライブラリは、私が必要とする機能を提供していません。

この関数を呼び出すだけです。パラメータなし。

実装する方法を実装するにはどうすればよいですか。

+0

私は質問をしません。 ITweenにあなたがしたいことが分かっているので、ITweenを使用してください。 –

+0

あなたは私の質問を理解できませんでしたか? iTweenの代わりにLeanTweenを使うと、私が望むものを実装したいのですが? –

+0

私はITweenでサポートされていて、LeanTweenではサポートされていないハッシュテーブル/オンコンプリートを使用したいと言っています。 ITweenを使用してください。 –

答えて

1

iTweenLeanTweenの完全なコールバックの主な変更点は、iTweenがメソッド名を文字列として受け取り、内部的に悪いSendMessageメソッドを呼び出すことです。

LeanTweenは、Action delegateを使用します。これは、メソッドへのポインタと考えることができます。 WordReviewManager.Start()で、TouchEventTypesのAction onCompleteCallbackフィールドにtestGoodメソッドを割り当てて、システムに入力する方法を確認できます。

public class Card : MonoBehaviour { } 

public class TouchEventTypes : EventArgs 
{ 
    public Card card; 
    public float delay; 
    public Action onCompleteCallback; 
} 

public class WordReviewManager : MonoBehaviour 
{ 
    void Start() 
    { 
     TouchEventTypes e = new TouchEventTypes(); 
     e.onCompleteCallback = testGood; 
     //TODO: feed this into your touch event system. 
    } 

    public void testGood() 
    { 
     Debug.Log("hello Moto ~?!"); 
    } 

    public void onTouchHandler(object obj, EventArgs e) 
    { 
     TouchEventTypes eventArgs = e as TouchEventTypes; 
     WordReviewUtil.RotateCard(
      card: eventArgs.card, 
      delay: eventArgs.delay, 
      callback: eventArgs.onCompleteCallback 
     ); 
    } 
} 

public static class WordReviewUtil 
{ 
    public static void RotateCard(Card card, float delay, Action callback) 
    { 
     LTDescr tween = LeanTween.rotateAround(card.gameObject, 
      axis: new Vector3(0,0,1), 
      add: 360f, 
      time: 2.0f 
     ).setDelay(delay); 
     tween.setOnComplete(callback); 
    } 
} 
関連する問題