![]() |
|
||||||||||
|
|||||
|
меценат
|
Привет
вот на вскидку =) package
{
import flash.display.Sprite;
import flash.display.Stage;
import flash.display.DisplayObject;
import flash.events.Event;
import flash.ui.Mouse;
[SWF(width='500', height='400', backgroundColor='#669999', frameRate='31')]
/*____________________________________________________*/
public class Rotations extends Sprite
{
private var spriteQuantity: Number = 7;
private var spritePlayer: Sprite;
private var widthParabola: Number = 150;
private var heightParabola: Number = 36;
private var positionParabolaSpriteX: Number = 250;
private var positionParabolaSpriteY: Number = 200;
private var reductionScale: Number = 1.4;
private var speedRotations: Number = 40;
private var oneRadian: Number = Math.PI/180;
private var degreeParabola: Number = 0;
private var degreeParabolaOneRadian: Number = degreeParabola*oneRadian;
private var spriteSectorParabola: Number = Math.floor(360/spriteQuantity);
private var workArray: Array = new Array();
private var positionArrayX: Array = new Array();
public function Rotations()
{
drawPlayer();
numX();
}
private function drawPlayer(): void
{
for (var i:int = 0; i < spriteQuantity; i++)
{
spritePlayer = new Sprite;
spritePlayer.graphics.beginFill(0xFFFF00);
spritePlayer.graphics.drawCircle(0, 0, 10);
spritePlayer.graphics.endFill();
spritePlayer.name = "spritePlayer" + i;
addChild(spritePlayer);
workArray.push(i * spriteSectorParabola);
spritePlayer.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
trace(workArray);
}
}
private function numX(): void
{
for (var z:int = 0; z < spriteQuantity; z++)
{
positionArrayX.push(z);
}
trace(positionArrayX);
}
private function enterFrameHandler(event:Event): void
{
if (stage.mouseX < positionParabolaSpriteX)
{
workArray[positionArrayX[parseInt(event.target.name.substr(12))]] += (stage.mouseX - positionParabolaSpriteX) / speedRotations;
}
else if (stage.mouseX > positionParabolaSpriteX)
{
workArray[positionArrayX[parseInt(event.target.name.substr(12))]] -= (positionParabolaSpriteX - stage.mouseX) / speedRotations;
}
var thisParabolaX: Number = new Number;
thisParabolaX = widthParabola * Math.cos(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian);
var thisParabolaY: Number = new Number;
thisParabolaY = heightParabola * Math.sin(workArray[positionArrayX[parseInt(event.target.name.substr(12))]] * oneRadian);
event.target.x = positionParabolaSpriteX + thisParabolaX * Math.cos(degreeParabolaOneRadian) - thisParabolaY * Math.sin(degreeParabolaOneRadian);
event.target.y = positionParabolaSpriteY + thisParabolaX * Math.sin(degreeParabolaOneRadian) + thisParabolaY * Math.cos(degreeParabolaOneRadian);
}
}
}
![]()
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники Последний раз редактировалось D12; 03.07.2008 в 01:50. |
|
|||||
|
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Здравствуй. Спасибо, будем разбиратся, только вот вижу код в два раза больше. Но спасибо и на этом, попробую для своего взять из твоего немного ума, думаю там есть чему поучится.
Цитата:
![]() Вот даю рабочий пример карусели на AS1/AS2, там видно что за angle и еще многое видно. И вот еще даю ту карусель что у нас получилась на AS3, чтоб увидеть наглядно что и как. Кстати уже скорость карусели указывает положение курсора мышки. Последний раз редактировалось N1ka; 03.07.2008 в 12:54. |
|
|||||
|
изучай студент ) оба класса подробно изучи
![]() Удачи в начинаиях) а проблема именно в геометрии у тебя была) и обрати внимание на то что такое angle! я блин до этого не вдовался в подробности) англе отвечает за расстановку по круга итемов) а я думал те надо сам итем повернуть ))) |
|
|||||
|
меценат
|
вот есть не большой еще пример
В подобных карусельках весь принцип базируется на следующей формуле: почитай
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники |
|
|||||
|
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
О, спасибо вам, друзья. Буду стараться так, чтобы больше не задавать вопросов, а самому быть способным отвечать на них, но у меня впереди еще много планов...
![]() |
|
|||||
|
Дерзай)
Удачи ) |
|
|||||
|
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Вернулся все-таки.
![]() Но тут уже аномалия для меня, смотрите сами: Есть 10 итемов, все сидят на своих местах кроме одного, т.е. если дергать мышкой туда-сюда чтобы итемы дергались также в одну сторону и потом резко в другую, то выделяется один итем, он со старта поясвляется самый правый. Так вот, если дергать туда-сюда, то он будто по льду ездит, т.е. не сидит на своем месте, все дергаются резко, а этого одного итема заносит. Этой проблемы небыло когда к мувиклипе item в присвоенном классе main.Item была написана функция с просчетом движения этих итемов. Но когда я эту функцию перенес по причине в класс Carousel который присвоен Document class, то вот появилась такая проблема. Это не должно быть, почему оно так и как его устранить? Вот мувик: Последний раз редактировалось N1ka; 04.07.2008 в 20:59. |
|
|||||
|
такой своего рода разрыв цепи.. кидай проект, ща посмотрю, все равно делать нефик)
|
|
|||||
|
Регистрация: Mar 2007
Адрес: Ужгород (UA)
Сообщений: 62
|
Цитата:
![]() |
|
|||||
|
честно говоря проблемы не увидел! все вроде норм...
Слушай хочешь бесплатный совет! он тебе потом оч поможет) |
![]() |
![]() |
Часовой пояс GMT +4, время: 07:38. |
|
|
« Предыдущая тема | Следующая тема » |
|
|