我試圖做一個像「Contre Jour」遊戲那樣的菜單,當用戶拖動左右時,有3個元素旋轉在一個圓圈內。我使用CAT轉換器將CALayers定位在一個3d旋轉輪(目前沒有問題)。來自Contre Jour應用程序的菜單
我需要一種方法(可能與NSTimers?)來計算中間值,因爲CoreAnimation只是插值,但如果你NSLog它們,它只會顯示開始和結束,或者只是結束。我需要所有的中間值,我需要在一個位置釋放手指(觸摸結束)時捕捉輪子運動(有3個元素,每個元素都應該在120度)。
我試圖做一個像「Contre Jour」遊戲那樣的菜單,當用戶拖動左右時,有3個元素旋轉在一個圓圈內。我使用CAT轉換器將CALayers定位在一個3d旋轉輪(目前沒有問題)。來自Contre Jour應用程序的菜單
我需要一種方法(可能與NSTimers?)來計算中間值,因爲CoreAnimation只是插值,但如果你NSLog它們,它只會顯示開始和結束,或者只是結束。我需要所有的中間值,我需要在一個位置釋放手指(觸摸結束)時捕捉輪子運動(有3個元素,每個元素都應該在120度)。
我的猜測和我我確信我是正確的,他們正在使用諸如Unity3D或Cocos2D等遊戲引擎或其他衆多遊戲引擎來管理他們的精靈,動畫,紋理,物理和基本上所有的東西。試圖在遊戲引擎之外複製它很可能我會建議尋找一個專門的遊戲引擎,並給它一個鏡頭
是的,這是我的想法,這只是我不想在我的應用程序中使用外部庫的一個小問題!謝謝! – user2100993 2013-02-22 23:20:06
我不知道我確切地理解了Contre Jour與spinners的關係,無論如何,我認爲您的案例的合理方法是使用UIPanGestureRecognizers
根據平移更新您的紡車輪的狀態。
現在,你不清楚你做什麼動畫的旋轉輪(如果你可以提供一些代碼,這將有助於理解你到底想要做什麼),但想法是這樣的:而不是指定一個動畫結束點遠離起點(並且即使拖動已停止,讓Core Animation爲您執行所有操作),但只會以小增量修改紡車輪的狀態。
如果您唯一的問題是在拖動停止時停止動畫,則可以嘗試在圖層上調用removeAnimationForKey
以停止特定的動畫。
當你說「以小增量修改狀態」時,你提到了什麼?我怎樣才能以小步驟模態?謝謝 – user2100993 2013-02-22 23:18:32
我提到的是:你現在有一個動畫;這將在一段時間內將某些財產的價值從初始價值改變爲最終價值;在這裏,你正在修改狀態(狀態?);以較小的增量進行操作將意味着最終值與最終值「接近」,時間步長爲「小」(無論您的情況下是否接近和小,都可能意味着平滑的動畫)。這是否澄清了一點? – sergio 2013-02-23 08:59:01
調查CADisplayLink。這與NSTimer非常相似,除了其刷新率與顯示器的刷新率相關,所以與使用定時器相比,您的動畫將會更流暢。這將允許您計算所有中間值並更新您的控件。
我不清楚你在問什麼,但我確實有一個洞察力:爲了獲得飛行動畫的中間值,查詢圖層的presentationLayer屬性。正在進行動畫處理的屬性將具有與您在獲取該值時屏幕外觀非常接近的值。
這個問題如何連接到正在使用的IDE(Xcode)? – Till 2013-02-22 22:05:53