Я нашел решение (примененное к Index.HTML
), которое работало на основе ЭТОГО .
function buildOptionsList(array2) {
var table = document.createElement('table');
var tableBody = document.createElement('tbody');
array2.forEach(function(rowData) {
var row = document.createElement('tr');
rowData.forEach(function(cellData) {
var cell = document.createElement('td');
var cLass = td.setAttribute('class','ui-state-default');
cell.appendChild(document.createTextNode(cellData));
row.appendChild(cell);
});
tableBody.appendChild(row);
});
table.appendChild(tableBody);
document.body.appendChild(table);
}
buildOptionsList(array2);
Я понятия не имею, как сделать это в cocos2d (или даже что это), но можно сделать эту использующую Базовую Анимацию или с CALayers или с UIViews. Вероятно, самый простой путь состоял бы в том, чтобы создать UIImageView, содержащий изображение Вашего колеса рулетки и анимационный это.
Для выполнения этого сначала создайте UIImageView путем инициализации его с изображением колеса рулетки. Когда Вы захотите, чтобы колесо вращалось, используйте следующий код:
CATransform3D rotationTransform = CATransform3DMakeRotation(1.0f * M_PI, 0, 0, 1.0);
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform"];
rotationAnimation.toValue = [NSValue valueWithCATransform3D:rotationTransform];
rotationAnimation.duration = 0.25f;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 10;
[rotatingImage.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
предположение, что rotatingImage является Ваш UIImageView.
В этом примере, колесо вращалось бы 5 раз с каждым вращением, занимающим 0,5 секунды. Вращения разделяются в половине, потому что Базовая Анимация перейдет к следующему ближайшему состоянию, таким образом, большинство, можно повернуть что-то, будет половиной вращения, прежде чем анимация захочет вращаться в другом направлении. Таким образом, радиан пи (180 градусов), вращение здесь идет полукруг, но если бы Вы использовали (1.5f * пи) для Вашего угла вращения, оно только пошло бы четверть круга. Аналогично, если бы Вы использовали (0.999f * пи), то круг вращался бы в по часовой стрелке способ.
Вы захотите реализовать ускорение и замедление Вашего колеса, и для тех, которые CAKeyframeAnimation занял бы место CABasicAnimation в этом примере.
Существует несколько способов, которыми можно сделать это.
, Если у Вас есть покадровая анимация для колеса, проверьте AtlasDemo (часть cocos2d распределения).
Иначе, смотрите на RotateBy Sprite: метод.
В Cocos2D довольно просто:
[sprite runAction:[RotateBy actionWithDuration:dur angle:360]];
сделать один оборот или
id action = [RepeatForever actionWithAction: [RotateBy actionWithDuration:dur angle:360]];
[sprite runAction:action];
и
[sprite stopAction:action];
, если вам нужно вращаться непрерывно.
Не забудьте убедиться, что transformAnchor спрайта установлен в центр изображения. И, думаю, должен возникнуть следующий вопрос - как заставить его останавливаться плавно;)
Подробнее о действиях: http://lethain.com/entry/2008/oct/03/notes-on-cocos2d-iphone- development (это для более старой версии, поэтому вместо runAction используется устаревшее "do")
Вы можете повернуть вид на некоторое количество радиан, независимо от того, меньше ли он полного вращения или много кратных полному вращению, без необходимости разбивать вращение на части. В качестве примера следующий код будет вращать представление один раз в секунду в течение указанного количества секунд. Вы можете легко изменить его, чтобы вращать представление на определенное количество вращений или на некоторое количество радиан.
- (void) runSpinAnimationWithDuration:(CGFloat) duration;
{
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: M_PI * 2.0 /* full rotation*/ * rotations * duration ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.repeatCount = 1.0;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
[myView.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
}