各位大神,我用moveTo移動精靈到目標位置后,然后獲取當前精靈坐標,顯示還是在移動前的位置,然后我把它setposition在目標位置,還是會出錯,請問怎么解決?
uj5u.com熱心網友回復:
各位大神 求告知,感謝感謝萬分感謝!uj5u.com熱心網友回復:
你需要寫個動作序列sequence,執行完moveto之后執行個回呼函式,在回呼函式中獲取或者設定你需要的精靈坐標uj5u.com熱心網友回復:
代碼和錯誤貼一下uj5u.com熱心網友回復:
確定是在移動后嗎,很可能是在runAction的時候就獲取坐標了,所以才在開始的位置。在runAction中加入獲取坐標的代碼uj5u.com熱心網友回復:
代碼貼一下,移動后還是以前的坐標?不可能吧uj5u.com熱心網友回復:
其實你在決定要移動多少的時候,就知道目標的位置了吧uj5u.com熱心網友回復:
x:runaction(cc.seq(cc.moveTo(x,x),cc.callfunc(fcuntion () print x:getposition() end)));uj5u.com熱心網友回復:
你肯定是在移動前就獲取了精靈坐標,cocos底層移動精靈的原理就是每幀設定精靈的位置,不可能出現移動后getPosition是移動前坐標的uj5u.com熱心網友回復:
會不會你的獲取當前位置的精靈物件是移動之前的,查看下他們的先后順序
uj5u.com熱心網友回復:
3.x后我記得獲取函式變了x:getpositionX(),x:getpositionY(),你看下這樣可以嗎uj5u.com熱心網友回復:
是不是在精靈執行影片的下一行代碼就是獲取精靈當前位置的?如果是的話,肯定是這樣的;因為之心影片需要時間,這是一個程序,二代碼執行幾乎一瞬間完成了;如果想獲取影片完之后的位置,就參考4樓方法即可uj5u.com熱心網友回復:
確定是在移動后嗎,很可能是在runAction的時候就獲取坐標了,所以才在開始的位置。在runAction中加入獲取坐標的代碼
遇到了一樣的錯,求幫忙看看, 獲得的還是舊的坐標,除非自己setposition
是這樣設定么?
CCCallFunc* callFunc = CCCallFunc::create(this, SEL_CallFunc(&Ball::getballxy));
CCSequence * sequence = CCSequence::create(moveTo, callFunc, NULL);//構造一個影片序列
runAction(sequence);
void Ball::getballxy()
{
return _ballsp->getPosition();
}
uj5u.com熱心網友回復:
runAction(sequence);這個action是那個節點執行的,前面應該有這個節點吧,根據你的代碼推測應該是_ballsp這個節點。如果_ballsp沒有執行runAction(sequence);那么它的位置肯定沒有發生改變的。你試試runAction(sequence);改為ballsp->runAction(sequence);在執行看看轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/44084.html
標籤:Cocos2d-x
上一篇:網狐協調服務器報錯
