--JPPicker API JPPicker.activate ( sUserToken, sActivationKey ) sID = JPPicker.addPicker ( hObjectDelegate, nItemCount, nOptStartIndex, bOptScrollOnX, bOptMustStopOnItems ) JPPicker.forceUpdate ( sID ) nItemIndex, nExactItem = JPPicker.getPickerCenterItem ( sID ) nPosition = JPPicker.getPickerPosition ( sID ) nMinPosition, nMaxPosition = JPPicker.getPickerPositionRange ( sID ) nSpeed = JPPicker.getPickerScrollingSpeed ( sID ) tItemsToUpdate, tItemsToDisable, tItemsToEnable = JPPicker.helpMeUpdateMyItems ( sID, nItemsBySide ) bYes = JPPicker.isActive ( sID ) JPPicker.mouseDown ( sID, nPointX, nPointY ) JPPicker.removePicker ( sID ) JPPicker.scrollToIndex ( sID, nItemIndex, bOptInstant ) JPPicker.setActive ( sID, bActive ) JPPicker.setBounceStrengthCoef ( nCoef ) JPPicker.setDampingStrengthCoef ( nCoef ) JPPicker.setMouseCoef ( sID, nCoef ) JPPicker.setPickerOffset ( sID, nOffsetItemCount ) JPPicker.setPickerScrollingSpeed ( sID, nSpeed ) --User notification events: "onPickerScrollingToItem" ( sID, nItemIndex ) "onPickerPositionDidChange" ( sID, nCurrentPosition, nCurrentItemIndex ) "onPickerCenterItemDidChange" ( sID, nItemIndex, bPickerScrollingToAnItemIndex )
Un picker est une liste d'éléments scrollable et où l'élément central est celui qui est sélectionné. JPPicker va se charger de gérer la partie "calcul de la position" du picker et va vous informer en temps réel de la position de la liste ainsi que de l'élément central. Vous êtes ensuite complétement libre d'utiliser les valeurs fournies par JPPicker à votre guise, afin d'animer n'importe quel type d'éléments, comme par exemple des éléments HUD ou des objets de votre scène.
L'animation de JPPicker est très agréable, il dispose d'un effet de rebond lorsque la liste arrive à son extrémité. Il est possible d'activer une option afin que le picker s'arrête obligatoirement sur un index précis de la liste.
Son fonctionnement est très simple, il suffit de demander à JPPicker de créer un nouveau picker en lui indiquant le nombre d'éléments dans la liste et le tour est joué :
function MyAIModel.onInit ( ) local hObjectDelegate = nil local nItemCount = 20 JPPicker.addPicker ( hObjectDelegate, nItemCount ) end function MyAIModel.onPickerPositionDidChange ( sID, nPosition, nItemIndex ) this.updateItemsPosition ( nPosition ) end function MyAIModel.onPickerCenterItemDidChange ( sID, nIndex, bListCurrentlyScrollingToItem ) this.setSelectedItem ( nIndex ) end
Le résultat est vraiment bluffant. Vous pouvez trouver un exemple de picker dans la démo, sur l'écran de sélection du circuit.
JPPicker fourni également une fonction géniale, nommée JPPicker.helpMeUpdateMyItems, qui va vous aider à gérer votre picker de façon à avoir un très grand nombre d'éléments sans aucun problème de performances. J'ai créé un tutorial à ce sujet que vous devriez le lire si vous voulez en savoir plus sur l'impact que votre stratégie de scripting peut avoir sur les performance de votre jeu.