Cocos2d iphone 将滑块(如“TrainYard”中的滑块)添加到cocos2d项目中

Cocos2d iphone 将滑块(如“TrainYard”中的滑块)添加到cocos2d项目中,cocos2d-iphone,Cocos2d Iphone,我真的什么都试过了: stackoverflow、google、github、CoCoCos2D等等。 没有发现任何有助于创建一个在游戏中看起来不错的自定义滑块的东西,我成功地添加了一个普通的UISlider,并对其属性进行了一些更改,比如maximumValueImage等等。。。但这太可怕了。 如果您指的是车场中的“速度”栏,请提供帮助,这可以通过使用“按下”和“正常”的“状态”图像(如常规按钮)然后设置简单的“背景”图像轻松实现。或多或少都在图形中 一般来说,代码只需检查“按钮”上是否有触

我真的什么都试过了: stackoverflow、google、github、CoCoCos2D等等。 没有发现任何有助于创建一个在游戏中看起来不错的自定义滑块的东西,我成功地添加了一个普通的UISlider,并对其属性进行了一些更改,比如maximumValueImage等等。。。但这太可怕了。 如果您指的是车场中的“速度”栏,请提供帮助,这可以通过使用“按下”和“正常”的“状态”图像(如常规按钮)然后设置简单的“背景”图像轻松实现。或多或少都在图形中

一般来说,代码只需检查“按钮”上是否有触摸,然后“锁定”Y轴,并使X轴跟随移动。一旦触摸按X或Y中的“因子”关闭按钮,您就可以简单地“释放”(当触摸离开按钮时不要释放,给他们一个窗口来触摸适合它的按钮,但给他们一个更大的“释放”窗口,这样“滑动”会感觉更自然,并且不需要沿X轴绝对精确)

如果“0”处的“滑块按钮”相对于背景定位在ccp(25,15)处,并且在“100”处定位在ccp(100,15),则您将使用以下方法根据“滑块按钮”当前位置确定“当前值”:

// constants
#define SLIDER_MIN   0.0f;
#define SLIDER_MIN_X 25.0f;
#define SLIDER_MAX   100.0f;
#define SLIDER_MAX_X 100.0f;
#define SLIDER_TICKS (SLIDER_MAX_X - SLIDER_MIN_X);
#define SLIDER_RATIO (SLIDER_TICKS / SLIDER_MAX)

// sliderButton should be a child of a node containing the background
// it's X/Y should be relative to that parent, and the "slider bar" should
// either be the parent or be attached to the parent in the same way

// assume: sliderButton.position.x = 63
float sliderCurrent = sliderButton.position.x - SLIDER_MIN_X;
// sliderCurrent = 38
float currentValue = sliderCurrent / SLIDER_RATIO;
其结果如下:

SLIDER_TICKS = 100 - 25;
// SLIDER_TICKS = 75
SLIDER_RATIO = 75 / 100;
// SLIDER_RATION = .75
sliderCurrent = 63 - 25;
// sliderCurrent = 38
currentValue = 38 / .75
// currentValue = 50.66666666667
然后,您可以选择ceil()或floor()这个值来获得一个整数,也可以只使用返回的值(具体取决于您的逻辑)

我的建议是设计你的作品,使你的“50%”分数“完全正确”。换句话说,当玩家将滑块放在50%区域时,可以从上述代码中获得“50.0”的值,而无需使用ceil()或floor()

但这完全是图形驱动的。。。滑块按钮的“按下”和“正常”状态,以及“滑块按钮”在其上滑动的艺术品(“背景”)完全取决于您


注意:如前所述,锁定X轴,使其不向左或向右移动,并完全锁定Y轴。

感谢您的帮助,非常感谢