Цитата:
Сообщение от ramshteks
так проблемка та наверное в том, что ты и не создаешь их... вернее создаешь, но каждый раз перезаписываешь...
Код:
function Carousel(){
var menuItemArray:Array=new Array;
for (var i=0; i<numOfItems; i++){
menuItemArray[i] = new Item();
menuItemArray[i].name = "item"+i
addChild(menuItemArray[i]);
menuItemArray[i].rotation = i * ((Math.PI*2)/numOfItems);
menuItemArray[i].addEventListener(Event.ENTER_FRAME, mover);
}
}
вот такую карусель попробуй...)
|
Сделал так и вот результат:
Как я и говорил ранее "вместо десяти menuItem бегает всего лишь один, быстрее чем нужно и мало того, еще и боком, тоесть сам menuItem перекручен на несколько градусов".
Удивительно, результат тот же что и предыдущий несмотря на то что main.Carousel.as с измененным кодом я сохранил.
И еще одно наблюдение, menuItem когда бегает по кругу, он бегает не стабильно перекручена несколько градусов, а бегает по кругу и постепенно перекручивается что аж верхногами кружиться и т.д...
И еще наблюдение, что я пропустил, даже если создать один menuItem
Код:
var numOfItems:Number = 1;
он хоть и бегает по кругу с нормальной скоростью, но оказуется тоже переворачуется просто очень медленно, т.е. со временем становиться верхногами и т.д. От скорости беганья зависит скорость переворачивания, это написано у нас тут:
Код:
this.rotation += this.speed;
Смотря на эту строку можно задуматься зачем нам в карусели чтобы menuItem переворачивался? Это уже не карусель а центрифуга получается, а достижением такой цели мы не занимаемся.
Исходя из этого приходит мысль о том что старый
Код:
menuItem.angle
не равняется новому
Код:
menuItem.rotation
Значит вместо angle должно быть не rotation, а что-то другое. Что? Чем заменить в AS3 строку
Код:
menuItem.angle = i * ((Math.PI*2)/numOfItems);
или если это и в AS3 должно работать, то почему у меня не хочет. В чем ошибка?