|
|
|||||
ну дружок...) а у тя свойство angle есть?) судя по всему нет))
если ты имел ввиду свойство мувика отвечающее за поворот то нужно использовать rotation вместо angle )) а еще... код вызывает сомнение : не понятно где ты обьявляешь masker'а и ref'а |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Цитата:
А этот код: работает, сам проверял, на этом же примере еще без устройства карусели. Итак, меню-карусель близка к финишу, вот код main.Carousel, который уже должен работать, но... package main{ import flash.display.MovieClip; import flash.events.*; public class Carousel extends MovieClip{ var numOfItems:Number = 1; var radiusX:Number = 250; var radiusY:Number = 75; var centerX:Number = stage.stageWidth/2; var centerY:Number = stage.stageHeight/2; var speed:Number = 0.05; function Carousel(){ for (var i=0; i<numOfItems; i++){ var menuItem:Item = new Item(); menuItem.name = "item"+i addChild(menuItem); menuItem.rotation = i * ((Math.PI*2)/numOfItems); menuItem.addEventListener(Event.ENTER_FRAME, mover); } } private function mover(){ this.x = Math.cos(this.rotation) * radiusX + centerX; this.y = Math.sin(this.rotation) * radiusY + centerY; //var s = this.y /(centerY+radiusY); //Должно работать и без этой строки //this.scaleX = this.scaleY = s; //Должно работать и без этой строки this.rotation += this(parent).speed; //this.swapChildrenAt(Math.round(this.scaleX) + 100); //Должно работать и без этой строки } } } ArgumentError: Error #1063: Argument count mismatch on main::Carousel/::mover(). Expected 0, got 1. и не работает. В чем трабл? |
|
|||||
private function mover(evt:Event){ this.x = Math.cos(this.rotation) * radiusX + centerX; this.y = Math.sin(this.rotation) * radiusY + centerY; //var s = this.y /(centerY+radiusY); //Должно работать и без этой строки //this.scaleX = this.scaleY = s; //Должно работать и без этой строки this.rotation += this(parent).speed; //this.swapChildrenAt(Math.round(this.scaleX) + 100); //Должно работать и без этой строки } |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Цитата:
TypeError: Error #1006: value is not a function. at main::Carousel/::mover() Но зато на экране наконец-то появился один menuItem, такой красивый, с отражением. Ура! ПС. А какая разница между (e:Event), (evt:Event), (event:Event)? А если нет разницы, то зачем писать "e" или "evt" или "event"? |
|
|||||
Et cetera
Регистрация: Sep 2002
Сообщений: 30,784
|
|
|
|||||
слушай проблема может быть в обработчике событий...
сделай одну вещь... перенеси фун-цию мувер в Item и там же прикрепляй событие к мувику... а в карусели только создавай и аттач мувики, но не работай с событиями |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Цитата:
private function mover(event:Event){ this.x = Math.cos(this.rotation) * radiusX + centerX; this.y = Math.sin(this.rotation) * radiusY + centerY; var s = this.y /(centerY+radiusY); this.scaleX = this.scaleY = s; this.rotation += this.speed; //Тут должно быть то же что и "this.angle += this._parent.speed;", и вот ошибка была в "this.rotation += this(parent).speed;", но удалив "(parent)" все заработало, только вот незнаю хорошо ли это. //this.swapChildrenAt(Math.round(this.scaleX) + 100); //Пока без этого должно работать } |
|
|||||
так проблемка та наверное в том, что ты и не создаешь их... вернее создаешь, но каждый раз перезаписываешь...
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); } } |
|
|||||
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Цитата:
Как я и говорил ранее "вместо десяти menuItem бегает всего лишь один, быстрее чем нужно и мало того, еще и боком, тоесть сам menuItem перекручен на несколько градусов". Удивительно, результат тот же что и предыдущий несмотря на то что main.Carousel.as с измененным кодом я сохранил. И еще одно наблюдение, menuItem когда бегает по кругу, он бегает не стабильно перекручена несколько градусов, а бегает по кругу и постепенно перекручивается что аж верхногами кружиться и т.д... И еще наблюдение, что я пропустил, даже если создать один menuItem он хоть и бегает по кругу с нормальной скоростью, но оказуется тоже переворачуется просто очень медленно, т.е. со временем становиться верхногами и т.д. От скорости беганья зависит скорость переворачивания, это написано у нас тут: Смотря на эту строку можно задуматься зачем нам в карусели чтобы menuItem переворачивался? Это уже не карусель а центрифуга получается, а достижением такой цели мы не занимаемся. Исходя из этого приходит мысль о том что старый не равняется новому Значит вместо angle должно быть не rotation, а что-то другое. Что? Чем заменить в AS3 строку или если это и в AS3 должно работать, то почему у меня не хочет. В чем ошибка? Последний раз редактировалось N1ka; 03.07.2008 в 00:55. |
|
|||||
то что переворачивается... это у тя дело просто в геометрии...
задавать угол поворота тока через rotation, задавать надо в градусах angle вообще первый раз слышу такое свойство, скажи где ты его взял?) кинь сюда свой проект как он есть плиз! хочу посмотреть воочую! |
Часовой пояс GMT +4, время: 14:47. |
|
« Предыдущая тема | Следующая тема » |
|
|