![]() |
|
||||||||||
|
|||||
|
ну дружок...) а у тя свойство 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,787
|
|
|
|||||
|
слушай проблема может быть в обработчике событий...
сделай одну вещь... перенеси фун-цию мувер в 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, время: 06:48. |
|
|
« Предыдущая тема | Следующая тема » |
|
|